- 28 Aug, 2018 1 commit
-
-
Wenzel Jakob authored
This PR adds a new py::ellipsis() method which can be used in conjunction with NumPy's generalized slicing support. For instance, the following is now valid (where "a" is a NumPy array): py::array b = a[py::make_tuple(0, py::ellipsis(), 0)];
-
- 19 Jul, 2018 1 commit
-
-
Jason Rhinelander authored
Catch v2 changed the `run(...)` signature to take a `char *argv[]`, arguing partly that technically a `char *argv[]` type is the correct `main()` signature rather than `const char *argv[]`. Dropping the `const` here doesn't appear to cause any problems with catch v1 (tested against both the cmake-downloaded 1.9.3 and Debian's 1.12.1 package) so we can follow suit.
-
- 17 Jul, 2018 4 commits
-
-
Wenzel Jakob authored
* stl.h: propagate return value policies to type-specific casters Return value policies for containers like those handled in in 'stl.h' are currently broken. The problem is that detail::return_value_policy_override<C>::policy() always returns 'move' when given a non-pointer/reference type, e.g. 'std::vector<...>'. This is sensible behavior for custom types that are exposed via 'py::class_<>', but it does not make sense for types that are handled by other type casters (STL containers, Eigen matrices, etc.). This commit changes the behavior so that detail::return_value_policy_override only becomes active when the type caster derives from type_caster_generic. Furthermore, the override logic is called recursively in STL type casters to enable key/value-specific behavior.
-
Yannick Jadoul authored
Switching deprecated Thread Local Storage (TLS) usage in Python 3.7 to Thread Specific Storage (TSS) (#1454) * Switching deprecated Thread Local Storage (TLS) usage in Python 3.7 to Thread Specific Storage (TSS) * Changing Python version from 3.6 to 3.7 for Travis CI, to match brew's version of Python 3 * Introducing PYBIND11_ macros to switch between TLS and TSS API
-
Boris Dalstein authored
-
Dennis Luxen authored
The current code requires implicitly that integral types are cast-able to floating point. In case of strongly-typed integrals (e.g. as explained at http://www.ilikebigbits.com/blog/2014/5/6/type-safe-identifiers-in-c) this is not always the case. This commit uses SFINAE to move the numeric conversions into separate `cast()` implementations to avoid the issue.
-
- 24 Jun, 2018 4 commits
-
-
Thomas Hrabe authored
-
Antony Lee authored
* Silence GCC8's -Wcast-function-type. See https://bugs.python.org/issue33012 and PRs linked therein.
-
Axel Huebl authored
It is useful not only to remember the python libs and includes but also the interpreter version in cache. If users call pybind11 throught `add_subdirectories` they will otherwise have no access to the selected interpreter version. The interpreter version is useful for downstream projects, e.g. to select default `lib/pythonX.Y/site-packages/` install paths.
-
Khachajantc Michael authored
-
- 21 Jun, 2018 2 commits
-
-
Maciek Starzyk authored
-
Axel Huebl authored
Add missing python3 distutils on Debian "buster".
-
- 15 Jun, 2018 1 commit
-
-
Antony Lee authored
If an exception is thrown during module initialization, the error_already_set destructor will try to call `get_internals()` *after* setting Python's error indicator, resulting in a `SystemError: ... returned with an error set`. Fix that by temporarily stashing away the error indicator in the destructor.
-
- 24 May, 2018 1 commit
-
-
Antony Lee authored
-
- 18 May, 2018 1 commit
-
-
Jason Rhinelander authored
Fixes #1401
-
- 07 May, 2018 1 commit
-
-
François Becker authored
Fixed typos (erroneous `;`) in `classes.rst`.
-
- 06 May, 2018 3 commits
-
-
Naotoshi Seo authored
Fix a segfault when creating a 0-dimension, c-strides array.
-
luzpaz authored
Found via `codespell`
-
Tom de Geus authored
-
- 29 Apr, 2018 2 commits
-
-
Wenzel Jakob authored
-
Lori A. Burns authored
-
- 24 Apr, 2018 1 commit
-
-
David Caron authored
-
- 22 Apr, 2018 2 commits
-
-
Wenzel Jakob authored
When using pybind11 to bind enums on MSVC and warnings (/W4) enabled, the following warning pollutes builds. This fix renames one of the occurrences. pybind11\include\pybind11\pybind11.h(1398): warning C4459: declaration of 'self' hides global declaration pybind11\include\pybind11\operators.h(41): note: see declaration of 'pybind11::detail::self'
-
Henry Schreiner authored
-
- 16 Apr, 2018 1 commit
-
-
Wenzel Jakob authored
-
- 14 Apr, 2018 1 commit
-
-
oremanj authored
* Add basic support for tag-based static polymorphism Sometimes it is possible to look at a C++ object and know what its dynamic type is, even if it doesn't use C++ polymorphism, because instances of the object and its subclasses conform to some other mechanism for being self-describing; for example, perhaps there's an enumerated "tag" or "kind" member in the base class that's always set to an indication of the correct type. This might be done for performance reasons, or to permit most-derived types to be trivially copyable. One of the most widely-known examples is in LLVM: https://llvm.org/docs/HowToSetUpLLVMStyleRTTI.html This PR permits pybind11 to be informed of such conventions via a new specializable detail::polymorphic_type_hook<> template, which generalizes the previous logic for determining the runtime type of an object based on C++ RTTI. Implementors provide a way to map from a base class object to a const std::type_info* for the dynamic type; pybind11 then uses this to ensure that casting a Base* to Python creates a Python object that knows it's wrapping the appropriate sort of Derived. There are a number of restrictions with this tag-based static polymorphism support compared to pybind11's existing support for built-in C++ polymorphism: - there is no support for this-pointer adjustment, so only single inheritance is permitted - there is no way to make C++ code call new Python-provided subclasses - when binding C++ classes that redefine a method in a subclass, the .def() must be repeated in the binding for Python to know about the update But these are not much of an issue in practice in many cases, the impact on the complexity of pybind11's innards is minimal and localized, and the support for automatic downcasting improves usability a great deal.
-
- 09 Apr, 2018 1 commit
-
-
Antony Lee authored
-
- 07 Apr, 2018 1 commit
-
-
Boris Staletic authored
The property returns the enum_ value as a string. For example: >>> import module >>> module.enum.VALUE enum.VALUE >>> str(module.enum.VALUE) 'enum.VALUE' >>> module.enum.VALUE.name 'VALUE' This is actually the equivalent of Boost.Python "name" property.
-
- 05 Apr, 2018 1 commit
-
-
Jason Rhinelander authored
As reported in #1349, clang before 3.5 can segfault on a function-local variable referenced inside a lambda. This moves the function-local static into a separate function that the lambda can invoke to avoid the issue. Fixes #1349
-
- 03 Apr, 2018 2 commits
-
-
Henry Schreiner authored
-
Patrik Huber authored
I think that there's the word "for" missing for that sentence to be correct. Please double-check that the sentence means what it's supposed to mean. :-)
-
- 11 Mar, 2018 1 commit
-
-
Jason Rhinelander authored
This reimplements the version check to avoid sscanf (which has reportedly started throwing warnings under MSVC, even when used perfectly safely -- #1314). It also extracts the mostly duplicated parts of PYBIND11_MODULE/PYBIND11_PLUGIN into separate macros.
-
- 10 Mar, 2018 4 commits
-
-
Jason Rhinelander authored
-
Jason Rhinelander authored
- PYBIND11_MAKE_OPAQUE now takes ... rather than a single argument and expands it with __VA_ARGS__; this lets templated, comma-containing types get through correctly. - Adds a new macro PYBIND11_TYPE() that lets you pass the type into a macro as a single argument, such as: PYBIND11_OVERLOAD(PYBIND11_TYPE(R<1,2>), PYBIND11_TYPE(C<3,4>), func) Unfortunately this only works for one macro call: to forward the argument on to the next macro call (without the processor breaking it up again) requires also adding the PYBIND11_TYPE(...) to type macro arguments in the PYBIND11_OVERLOAD_... macro chain. - updated the documentation with these two changes, and use them at a couple places in the test suite to test that they work. -
Marc Schlaich authored
-
Jason Rhinelander authored
Apparently with homebrew the correct package for python3 is now just `python`; python 2 was relegated to 'python@2', and `python3` is an alias for `python` (which needs to be upgraded rather than installed).
-
- 28 Feb, 2018 2 commits
-
-
luz.paz authored
-
Tomas Babej authored
-
- 18 Feb, 2018 1 commit
-
-
Jason Rhinelander authored
This fixes the test code on big-endian architectures: the array support (PR #832) had hard-coded the little-endian '<' but we need to use '>' on big-endian architectures.
-
- 07 Feb, 2018 1 commit
-
-
Wenzel Jakob authored
-