1. 08 Apr, 2017 2 commits
    • Jason Rhinelander's avatar
      Add static_assert to holder casters · 501135fa
      Jason Rhinelander authored
      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
      501135fa
    • Jason Rhinelander's avatar
      Remove gcc 6/7 LTO and -Werror workarounds · d994db2d
      Jason Rhinelander authored
      The gcc versions in Debian stretch (gcc 6) and experimental (gcc 7)
      incorporate the upstream gcc fixes.
      d994db2d
  2. 07 Apr, 2017 2 commits
  3. 06 Apr, 2017 3 commits
    • Jason Rhinelander's avatar
      Remove object::borrowed/stolen · 16c86638
      Jason Rhinelander authored
      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
      16c86638
    • Dean Moldovan's avatar
      Fix test_cmake_build failure with bare python exe name (fix #783) · 555dc4f0
      Dean Moldovan authored
      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
      555dc4f0
    • Jason Rhinelander's avatar
      Skip VS2015/x86 builds · 087b8d84
      Jason Rhinelander authored
      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.
      087b8d84
  4. 05 Apr, 2017 3 commits
    • Ivan Smirnov's avatar
      Fix -Wmissing-braces warning · 7348c407
      Ivan Smirnov authored
      7348c407
    • Jason Rhinelander's avatar
      Improve make_tuple error message under debugging · 6906b270
      Jason Rhinelander authored
      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 object
      6906b270
    • Wenzel Jakob's avatar
      AppVeyor: use parallel builds · 8f010cce
      Wenzel Jakob authored
      My group now has a subscription to AppVeyor pro, which also permits
      running parallel builds on the open source projects.
      8f010cce
  5. 02 Apr, 2017 3 commits
  6. 01 Apr, 2017 1 commit
  7. 30 Mar, 2017 2 commits
  8. 28 Mar, 2017 2 commits
    • Dean Moldovan's avatar
      Support raw string literals as input for py::eval (#766) · 194d8b99
      Dean Moldovan authored
      * Support raw string literals as input for py::eval
      * Dedent only when needed
      194d8b99
    • Jason Rhinelander's avatar
      Deprecated borrowed/stolen for borrowed_t{}/stolen_t{} (#771) · 6db60cd9
      Jason Rhinelander authored
      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.
      6db60cd9
  9. 26 Mar, 2017 1 commit
  10. 24 Mar, 2017 1 commit
    • Ghislain Antony Vaillant's avatar
      Arch-indep CMake packaging (#764) · 5b503764
      Ghislain Antony Vaillant authored
      * 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.
      5b503764
  11. 22 Mar, 2017 10 commits
  12. 21 Mar, 2017 3 commits
    • Jason Rhinelander's avatar
      vectorize: trivial handling for F-order arrays · b0292c1d
      Jason Rhinelander authored
      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.
      b0292c1d
    • Jason Rhinelander's avatar
      Stop forcing c-contiguous in py::vectorize · ae5a8f7e
      Jason Rhinelander authored
      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.
      ae5a8f7e
    • Dean Moldovan's avatar
      Throw an exception when attempting to load an incompatible holder · cd3d1fc7
      Dean Moldovan authored
      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.
      cd3d1fc7
  13. 19 Mar, 2017 2 commits
    • Jason Rhinelander's avatar
      Error message wording tweak · 0f5ec0a8
      Jason Rhinelander authored
      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).
      0f5ec0a8
    • Jason Rhinelander's avatar
      Added minimum compiler version assertions · 5a924787
      Jason Rhinelander authored
      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.
      5a924787
  14. 18 Mar, 2017 1 commit
  15. 17 Mar, 2017 4 commits
    • Jason Rhinelander's avatar
      Fail to compile with MI via class_ ctor parameters · b961626c
      Jason Rhinelander authored
      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.
      b961626c
    • Jason Rhinelander's avatar
      Use C++17 fold expression macro · d51acb68
      Jason Rhinelander authored
      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).
      d51acb68
    • Jason Rhinelander's avatar
      Eigen: don't require conformability on length-1 dimensions · efa8726f
      Jason Rhinelander authored
      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.
      efa8726f
    • Jean-Michaël Celerier's avatar
      Use custom definitions for negation and bool_constant (#737) · 68e089a8
      Jean-Michaël Celerier authored
      Instead of relying on sometimes missing C++17 definitions
      68e089a8