- 08 Apr, 2017 2 commits
-
-
The holder casters assume but don't check that a `holder<type>`'s `type` is really a `type_caster_base<type>`; this adds a static_assert to make sure this is really the case, to turn things like `std::shared_ptr<array>` into a compilation failure. Fixes #785
Jason Rhinelander committed -
The gcc versions in Debian stretch (gcc 6) and experimental (gcc 7) incorporate the upstream gcc fixes.
Jason Rhinelander committed
-
- 07 Apr, 2017 2 commits
-
-
Fixes #775. Assignments of the form `Type.static_prop = value` should be translated to `Type.static_prop.__set__(value)` except when `isinstance(value, static_prop)`.
Dean Moldovan committed -
Wenzel Jakob committed
-
- 06 Apr, 2017 3 commits
-
-
PR #771 deprecated them as they can cause linking failures (#770), but the deprecation tags cause warnings on GCC 5.x through 6.2.x. Removing them entirely will break backwards-compatibility consequences, but the effects should be minimal (only code that was inheriting from `object` could get at them at all as they are protected). Fixes #777
Jason Rhinelander committed -
Besides appearing in the CMake GUI, the `:FILENAME` specifier changes behavior as well: cmake -DPYTHON_EXECUTABLE=python .. # FAIL, can't find python cmake -DPYTHON_EXECUTABLE=/path/to/python .. # OK cmake -DPYTHON_EXECUTABLE:FILENAME=python .. # OK cmake -DPYTHON_EXECUTABLE:FILENAME=/path/to/python .. # OK
Dean Moldovan committed -
AppVeyor just added support for excluding specific jobs; thhis commit cuts the number of builds down to 6 from 8 by eliminating the VS2015 x86 builds.
Jason Rhinelander committed
-
- 05 Apr, 2017 3 commits
-
-
Ivan Smirnov committed
-
When make_tuple fails (for example, when print() is called with a non-convertible argument, as in #778) the error message a less helpful than it could be: make_tuple(): unable to convert arguments of types 'std::tuple<type1, type2>' to Python object There is no actual std::tuple involved (only a parameter pack and a Python tuple), but it also doesn't immediately reveal which type caused the problem. This commit changes the debugging mode output to show just the problematic type: make_tuple(): unable to convert argument of type 'type2' to Python objectJason Rhinelander committed -
My group now has a subscription to AppVeyor pro, which also permits running parallel builds on the open source projects.
Wenzel Jakob committed
-
- 02 Apr, 2017 3 commits
-
-
Dean Moldovan committed
-
```c++ m.def("foo", foo, py::call_guard<T>()); ``` is equivalent to: ```c++ m.def("foo", [](args...) { T scope_guard; return foo(args...); // forwarded arguments }); ```Dean Moldovan committed -
This commit adds `error_already_set::matches()` convenience method to check if the exception trapped by `error_already_set` matches a given Python exception type. This will address #700 by providing a less verbose way to check exceptions.
Roman Miroshnychenko committed
-
- 01 Apr, 2017 1 commit
-
-
Sylvain Corlay committed
-
- 30 Mar, 2017 2 commits
-
-
Wenzel Jakob committed
-
Wenzel Jakob committed
-
- 28 Mar, 2017 2 commits
-
-
* Support raw string literals as input for py::eval * Dedent only when needed
Dean Moldovan committed -
The constexpr static instances can cause linking failures if the compiler doesn't optimize away the reference, as reported in #770. There's no particularly nice way of fixing this in C++11/14: we can't inline definitions to match the declaration aren't permitted for non-templated static variables (C++17 *does* allows "inline" on variables, but that obviously doesn't help us.) One solution that could work around it is to add an extra inherited subclass to `object`'s hierarchy, but that's a bit of a messy solution and was decided against in #771 in favour of just deprecating (and eventually dropping) the constexpr statics. Fixes #770.
Jason Rhinelander committed
-
- 26 Mar, 2017 1 commit
-
-
Jason Rhinelander committed
-
- 24 Mar, 2017 1 commit
-
-
* Arch-indep CMake packaging Since pybind11 is a header-only library, the CMake packaging does not have to carry any architecture specific checks. Without this patch, the detection of pybind11 will fail on 32-bit architectures if the project was built on a 64-bit machine and vice-versa. This fix is similar to what is applied to `Eigen` and other header-only C++ libraries.
Ghislain Antony Vaillant committed
-
- 22 Mar, 2017 10 commits
-
-
Wenzel Jakob committed
-
Wenzel Jakob committed
-
Dean Moldovan committed
-
Wenzel Jakob committed
-
* nicer py::capsule destructor mechanism * added destructor-only version of capsule & tests * added documentation for module destructors (fixes #733)
Wenzel Jakob committed -
Wenzel Jakob committed
-
We no longer need a nightly build now that 5.7 is released (and the current nightly 5.8 is failing).
Jason Rhinelander committed -
The extends the previous unchecked support with the ability to determine the dimensions at runtime. This incurs a small performance hit when used (versus the compile-time fixed alternative), but is still considerably faster than the full checks on every call that happen with `.at()`/`.mutable_at()`.
Jason Rhinelander committed -
This adds bounds-unchecked access to arrays through a `a.unchecked<Type, Dimensions>()` method. (For `array_t<T>`, the `Type` template parameter is omitted). The mutable version (which requires the array have the `writeable` flag) is available as `a.mutable_unchecked<...>()`. Specifying the Dimensions as a template parameter allows storage of an std::array; having the strides and sizes stored that way (as opposed to storing a copy of the array's strides/shape pointers) allows the compiler to make significant optimizations of the shape() method that it can't make with a pointer; testing with nested loops of the form: for (size_t i0 = 0; i0 < r.shape(0); i0++) for (size_t i1 = 0; i1 < r.shape(1); i1++) ... r(i0, i1, ...) += 1; over a 10 million element array gives around a 25% speedup (versus using a pointer) for the 1D case, 33% for 2D, and runs more than twice as fast with a 5D array.Jason Rhinelander committed -
Fixes #754.
Dean Moldovan committed
-
- 21 Mar, 2017 3 commits
-
-
This extends the trivial handling to support trivial handling for Fortran-order arrays (i.e. column major): if inputs aren't all C-contiguous, but *are* all F-contiguous, the resulting array will be F-contiguous and we can do trivial processing. For anything else (e.g. C-contiguous, or inputs requiring non-trivial processing), the result is in (numpy-default) C-contiguous layout.
Jason Rhinelander committed -
The only part of the vectorize code that actually needs c-contiguous is the "trivial" broadcast; for non-trivial arguments, the code already uses strides properly (and so handles C-style, F-style, neither, slices, etc.) This commit rewrites `broadcast` to additionally check for C-contiguous storage, then takes off the `c_style` flag for the arguments, which will keep the functionality more or less the same, except for no longer requiring an array copy for non-c-contiguous input arrays. Additionally, if we're given a singleton slice (e.g. a[0::4, 0::4] for a 4x4 or smaller array), we no longer fail triviality because the trivial code path never actually uses the strides on a singleton.
Jason Rhinelander committed -
Instead of a segfault. Fixes #751. This covers the case of loading a custom holder from a default-holder instance. Attempting to load one custom holder from a different custom holder (i.e. not `std::unique_ptr`) yields undefined behavior, just as #588 established for inheritance.
Dean Moldovan committed
-
- 19 Mar, 2017 2 commits
-
-
py::arg() doesn't only specify named arguments anymore, so the error message was misleading (e.g. when using `py::arg().noconvert()` and forgetting `py::arg()` for a second positional argument).
Jason Rhinelander committed -
We now require (and enforce at compile time): - GCC 4.8+ - clang 3.3+ (5.0+ for Apple's renumbered clang) - MSVC 2015u3+ - ICC 15+ This also updates the versions listed in the README, and removes a now-redundant MSVC version check.
Jason Rhinelander committed
-
- 18 Mar, 2017 1 commit
-
-
This adds brief API documentation for make_iterator/make_key_iterator, specifically mentioning that it requires InputIterators. Closes #734. [skip ci] (no code change here)
Jason Rhinelander committed
-
- 17 Mar, 2017 4 commits
-
-
We can't support this for classes from imported modules (which is the primary purpose of a ctor argument base class) because we *have* to have both parent and derived to properly extract a multiple-inheritance base class pointer from a derived class pointer. We could support this for actual `class_<Base, ...> instances, but since in that case the `Base` is already present in the code, it seems more consistent to simply always require MI to go via template options.
Jason Rhinelander committed -
This puts the fold expressions behind the feature macro instead of a general C++17 macro. It also adds a fold expression optimization to constexpr_sum (guarded by the same feature macro).
Jason Rhinelander committed -
Fixes #738 The current check for conformability fails when given a 2D, 1xN or Nx1 input to a row-major or column-major, respectively, Eigen::Ref, leading to a copy-required state in the type_caster, but this later failed because the copy was also non-conformable because it had the same shape and strides (because a 1xN or Nx1 is both F and C contiguous). In such cases we can safely ignore the stride on the "1" dimension since it'll never be used: only the "N" dimension stride needs to match the Eigen::Ref stride, which both fixes the non-conformable copy problem, but also avoids a copy entirely as long as the "N" dimension has a compatible stride.
Jason Rhinelander committed -
Instead of relying on sometimes missing C++17 definitions
Jean-Michaël Celerier committed
-