pybind11/tests
Jason Rhinelander abc29cad02 Add support for non-converting arguments
This adds support for controlling the `convert` flag of arguments
through the py::arg annotation.  This then allows arguments to be
flagged as non-converting, which the type_caster is able to use to
request different behaviour.

Currently, AFAICS `convert` is only used for type converters of regular
pybind11-registered types; all of the other core type_casters ignore it.
We can, however, repurpose it to control internal conversion of
converters like Eigen and `array`: most usefully to give callers a way
to disable the conversion that would otherwise occur when a
`Eigen::Ref<const Eigen::Matrix>` argument is passed a numpy array that
requires conversion (either because it has an incompatible stride or the
wrong dtype).

Specifying a noconvert looks like one of these:

    m.def("f1", &f, "a"_a.noconvert() = "default"); // Named, default, noconvert
    m.def("f2", &f, "a"_a.noconvert()); // Named, no default, no converting
    m.def("f3", &f, py::arg().noconvert()); // Unnamed, no default, no converting

(The last part--being able to declare a py::arg without a name--is new:
previous py::arg() only accepted named keyword arguments).

Such an non-convert argument is then passed `convert = false` by the
type caster when loading the argument.  Whether this has an effect is up
to the type caster itself, but as mentioned above, this would be
extremely helpful for the Eigen support to give a nicer way to specify
a "no-copy" mode than the custom wrapper in the current PR, and
moreover isn't an Eigen-specific hack.
2017-02-03 20:18:15 -05:00
..
test_cmake_build Rename target from pybind11::pybind11 to pybind11::module 2016-12-19 16:34:48 +01:00
CMakeLists.txt use a more conservative mechanism to check for pytest 2017-01-04 08:00:17 -05:00
conftest.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
constructor_stats.h Minor fixes (#613) 2017-01-31 17:28:29 +01:00
object.h Improve custom holder support (#607) 2017-01-31 17:05:44 +01:00
pybind11_tests.cpp Add warning about binding multiple modules (#635) 2017-02-01 10:36:29 +01:00
pybind11_tests.h Replace std::cout with py::print in tests 2016-09-07 01:25:27 +02:00
test_alias_initialization.cpp Implement py::init_alias<>() constructors 2016-09-09 03:04:09 -04:00
test_alias_initialization.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_buffers.cpp WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_buffers.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_callbacks.cpp Add py::dict() keyword constructor 2016-09-06 16:41:50 +02:00
test_callbacks.py nicer error message for invalid function arguments 2016-09-19 13:43:43 +02:00
test_chrono.cpp Changed non system clocks to be time deltas 2016-09-13 20:40:28 +10:00
test_chrono.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_class_args.cpp Support std::shared_ptr holder type out of the box 2016-10-20 16:19:58 +02:00
test_class_args.py Set maximum line length for Python style checker (#552) 2016-12-13 00:59:28 +01:00
test_constants_and_functions.cpp Support binding noexcept function/methods in C++17 2016-12-14 20:40:49 +01:00
test_constants_and_functions.py Support binding noexcept function/methods in C++17 2016-12-14 20:40:49 +01:00
test_copy_move_policies.cpp equals needed for test_copy_move_policies to build icpc 2016.3 (#507) 2016-11-17 11:01:11 +01:00
test_copy_move_policies.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_docstring_options.cpp Provide more control over automatic generation of docstrings (#486) 2016-11-15 12:38:05 +01:00
test_docstring_options.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_eigen.cpp Adds automatic casting on assignment of non-pyobject types (#551) 2016-12-12 23:42:52 +01:00
test_eigen.py Set maximum line length for Python style checker (#552) 2016-12-13 00:59:28 +01:00
test_enum.cpp make arithmetic operators of enum_ optional (#508) 2016-11-17 23:24:47 +01:00
test_enum.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_eval_call.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_eval.cpp Make error_already_set fetch and hold the Python error 2016-09-10 12:08:32 +02:00
test_eval.py Rewrite eval tests to allow for simple asserts 2016-08-19 16:31:48 +02:00
test_exceptions.cpp Adds automatic casting on assignment of non-pyobject types (#551) 2016-12-12 23:42:52 +01:00
test_exceptions.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_inheritance.cpp Add check for matching holder_type when inheriting (#588) 2017-01-31 16:52:11 +01:00
test_inheritance.py Add check for matching holder_type when inheriting (#588) 2017-01-31 16:52:11 +01:00
test_issues.cpp Adds automatic casting on assignment of non-pyobject types (#551) 2016-12-12 23:42:52 +01:00
test_issues.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_keep_alive.cpp Replace std::cout with py::print in tests 2016-09-07 01:25:27 +02:00
test_keep_alive.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_kwargs_and_defaults.cpp Add support for positional args with args/kwargs 2017-01-31 17:24:41 +01:00
test_kwargs_and_defaults.py Add support for positional args with args/kwargs 2017-01-31 17:24:41 +01:00
test_methods_and_attributes.cpp Add support for non-converting arguments 2017-02-03 20:18:15 -05:00
test_methods_and_attributes.py Add support for non-converting arguments 2017-02-03 20:18:15 -05:00
test_modules.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_modules.py Simplify tests by replacing output capture with asserts where possible 2016-08-19 13:19:38 +02:00
test_multiple_inheritance.cpp WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_multiple_inheritance.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_numpy_array.cpp Improve consistency of array and array_t with regard to other pytypes 2016-11-17 08:55:42 +01:00
test_numpy_array.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_numpy_dtypes.cpp Numpy: better compilation errors, long double support (#619) 2017-01-31 17:00:15 +01:00
test_numpy_dtypes.py Numpy: better compilation errors, long double support (#619) 2017-01-31 17:00:15 +01:00
test_numpy_vectorize.cpp Replace std::cout with py::print in tests 2016-09-07 01:25:27 +02:00
test_numpy_vectorize.py Set maximum line length for Python style checker (#552) 2016-12-13 00:59:28 +01:00
test_opaque_types.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_opaque_types.py Set maximum line length for Python style checker (#552) 2016-12-13 00:59:28 +01:00
test_operator_overloading.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_operator_overloading.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_pickling.cpp fix segfault in test suite due to typo (fixes #586) 2017-01-04 15:05:20 +01:00
test_pickling.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_python_types.cpp WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_python_types.py Fix segfault when repr() with pybind11 type with metaclass (#571) 2016-12-26 11:25:42 +01:00
test_sequences_and_iterators.cpp Fix test compilation failure under gcc 4.9 (#496) 2016-11-13 10:41:31 +09:00
test_sequences_and_iterators.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_smart_ptr.cpp Improve custom holder support (#607) 2017-01-31 17:05:44 +01:00
test_smart_ptr.py Improve custom holder support (#607) 2017-01-31 17:05:44 +01:00
test_stl_binders.cpp Change all_of_t/any_of_t to all_of/any_of, add none_of 2016-12-14 20:42:36 +01:00
test_stl_binders.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_virtual_functions.cpp Update OVERLOAD macros to support ref/ptr return type overloads 2016-09-11 01:21:53 -04:00
test_virtual_functions.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00