- 05 Apr, 2017 2 commits
-
-
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 5 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 -
This adds VS 2017 to the build matrix, plus various other small appveyor build changes: - conda version bumped from 3.5 to 3.6 - build newer versions/architectures/python first (i.e. VS2017/x64/3.6 is the first build, VS2015/x86/2.7 is the last) - stop building after a job failure: often a build failure in one occurs everywhere; this just stops processing jobs (freeing them up for other PRs) if an error is hit. Annoyingly, appveyor doesn't allow excluding tests: i.e. the test matrix is always dense (appveyor issue 386), so for now we'll just run everything. (Once appveyor issue 386 is resolved, we can come back and cut this down to 4-5 builds).
Jason Rhinelander committed
-
- 16 Mar, 2017 2 commits
-
-
Fixes #731. Generally, this applies to any caster made with PYBIND11_TYPE_CASTER().
Dean Moldovan committed -
Wenzel Jakob committed
-
- 15 Mar, 2017 1 commit
-
-
Fixes #728.
Dean Moldovan committed
-
- 14 Mar, 2017 3 commits
-
-
Wenzel Jakob committed
-
Allows equivalent integral types and numpy dtypes
Patrick Stewart committed -
Allows use of vectors as python buffers, so for example they can be adopted without a copy by numpy.asarray Allows faster conversion of buffers to vectors by copying instead of individually casting the elements
Patrick Stewart committed
-
- 13 Mar, 2017 1 commit
-
-
* Add value_type member alias to py::array_t (resolve #632) * Use numpy scalar name in py::array_t function signatures (e.g. float32/64 instead of just float)
Dean Moldovan committed
-