1. 11 Jan, 2018 1 commit
    • Jason Rhinelander's avatar
      Fixes for numpy 1.14.0 compatibility · 88efb251
      Jason Rhinelander authored
      - UPDATEIFCOPY is deprecated, replaced with similar (but not identical)
        WRITEBACKIFCOPY; trying to access the flag causes a deprecation
        warning under numpy 1.14, so just check the new flag there.
      - Numpy `repr` formatting of floats changed in 1.14.0 to `[1., 2., 3.]`
        instead of the pre-1.14 `[ 1.,  2.,  3.]`.  Updated the tests to
        check for equality with the `repr(...)` value rather than the
        hard-coded (and now version-dependent) string representation.
      88efb251
  2. 27 Dec, 2017 2 commits
    • Antony Lee's avatar
      Add spaces around "=" in signature repr. · 0826b3c1
      Antony Lee authored
      PEP8 indicates (correctly, IMO) that when an annotation is present, the
      signature should include spaces around the equal sign, i.e.
      
          def f(x: int = 1): ...
      
      instead of
      
          def f(x: int=1): ...
      
      (in the latter case the equal appears to bind to the type, not to the
      argument).
      
      pybind11 signatures always includes a type annotation so we can always
      add the spaces.
      0826b3c1
    • Ivan Smirnov's avatar
      Make register_dtype() accept any field containers (#1225) · d1db2ccf
      Ivan Smirnov authored
      * Make register_dtype() accept any field containers
      
      * Add a test for programmatic dtype registration
      d1db2ccf
  3. 23 Dec, 2017 2 commits
    • Jason Rhinelander's avatar
      Added py::args ref counting tests · b48d4a01
      Jason Rhinelander authored
      b48d4a01
    • Jason Rhinelander's avatar
      Silence new MSVC C++17 deprecation warnings · 3be401f2
      Jason Rhinelander authored
      In the latest MSVC in C++17 mode including Eigen causes warnings:
      
          warning C4996: 'std::unary_negate<_Fn>': warning STL4008: std::not1(),
          std::not2(), std::unary_negate, and std::binary_negate are deprecated in
          C++17. They are superseded by std::not_fn(). You can define
          _SILENCE_CXX17_NEGATORS_DEPRECATION_WARNING or
          _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge that you have
          received this warning.
      
      This disables 4996 for the Eigen includes.
      
      Catch generates a similar warning for std::uncaught_exception, so
      disable the warning there, too.
      
      In both cases this is temporary; we can (and should) remove the warnings
      disabling once new upstream versions of Eigen and Catch are available
      that address the warning. (The Catch one, in particular, looks to be
      fixed in upstream master, so will probably be fixed in the next (2.0.2)
      release).
      3be401f2
  4. 30 Nov, 2017 1 commit
    • Henry Schreiner's avatar
      Matching Python 2 int behavior on Python 2 (#1186) · cf0d0f9d
      Henry Schreiner authored
      Pybind11's default conversion to int always produces a long on Python 2 (`int`s and `long`s were unified in Python 3). This patch fixes `int` handling to match Python 2 on Python 2; for short types (`size_t` or smaller), the number will be returned as an `int` if possible, otherwise `long`. Requires Python 2.5+.
      
      This is needed for things like `sys.exit`, which refuse to accept a `long`.
      cf0d0f9d
  5. 22 Nov, 2017 1 commit
    • Francesco Biscani's avatar
      Add -Wdeprecated to test suite and fix associated warnings (#1191) · ba33b2fc
      Francesco Biscani authored
      This commit turns on `-Wdeprecated` in the test suite and fixes several
      associated deprecation warnings that show up as a result:
      
      - in C++17 `static constexpr` members are implicitly inline; our
        redeclaration (needed for C++11/14) is deprecated in C++17.
      
      - various test suite classes have destructors and rely on implicit copy
        constructors, but implicit copy constructor definitions when a
        user-declared destructor is present was deprecated in C++11.
      
      - Eigen also has various implicit copy constructors, so just disable
        `-Wdeprecated` in `eigen.h`.
      ba33b2fc
  6. 16 Nov, 2017 1 commit
  7. 07 Nov, 2017 2 commits
    • Ted Drain's avatar
      Added write only property functions for issue #1142 (#1144) · 0a0758ce
      Ted Drain authored
      py::class_<T>'s `def_property` and `def_property_static` can now take a
      `nullptr` as the getter to allow a write-only property to be established
      (mirroring Python's `property()` built-in when `None` is given for the
      getter).
      
      This also updates properties to use the new nullptr constructor internally.
      0a0758ce
    • Jason Rhinelander's avatar
      __qualname__ and nested class naming fixes (#1171) · 71178922
      Jason Rhinelander authored
      A few fixes related to how we set `__qualname__` and how we show the
      type name in function signatures:
      
      - `__qualname__` isn't supposed to have the module name at the
      beginning, but we've been putting it there.  This removes it, while
      keeping the `Nested.Class` name chaining.
      
      - print `__module__.__qualname__` rather than `type->tp_name`; the
      latter doesn't work properly for nested classes, so we would get
      `module.B` rather than `module.A.B` for a class `B` with parent `A`.
      This also unifies the Python 3 and PyPy code.  Fixes #1166.
      
      - This now sets a `__qualname__` attribute on the type (as would happen
      in Python 3.3+) for Python <3.3, including PyPy.  While not particularly
      important to have in earlier Python versions, it's useful for us to be
      able to extracted the nested name, which is why `__qualname__` was
      invented in the first place.
      
      - Added tests for the above.
      71178922
  8. 02 Nov, 2017 1 commit
    • Unknown's avatar
      Trivial typos · 0b3f44eb
      Unknown authored
      Non-user facing. 
      Found using `codespell -q 3`
      0b3f44eb
  9. 25 Oct, 2017 1 commit
  10. 22 Oct, 2017 1 commit
    • Jason Rhinelander's avatar
      Miscellaneous travis-ci updates/fixes · 835fa9bc
      Jason Rhinelander authored
      - For the debian/buster docker build (GCC 7/C++17) install and use the
        system `catch` package; this also renames "COMPILER_PACKAGES" to
        "EXTRA_PACKAGES" since it now contains a non-compiler package.
      
      - Add a status message indicating the catch version being used for
        compiling the embedded tests
      
      - Simplify some bash code by using VAR+=" foo" to append (rather than
        VAR="${VAR} foo"
      
      - Fix CMAKE_INCLUDE_PATH appending: it was prepending the ':' but not
        the existing $CMAKE_INCLUDE_PATH value and so would end up with
        ":/eigen-path" if CMAKE_INCLUDE_PATH was already set.  (This wasn't
        bug that was actually noticed since currently nothing else sets it).
      835fa9bc
  11. 12 Oct, 2017 2 commits
    • Jason Rhinelander's avatar
      Fix 2D Nx1/1xN inputs to eigen dense vector args · 6a81dbbb
      Jason Rhinelander authored
      This fixes a bug introduced in b68959e8
      when passing in a two-dimensional, but conformable, array as the value
      for a compile-time Eigen vector (such as VectorXd or RowVectorXd).  The
      commit switched to using numpy to copy into the eigen data, but this
      broke the described case because numpy refuses to broadcast a (N,1)
      into a (N).
      
      This commit fixes it by squeezing the input array whenever the output
      array is 1-dimensional, which will let the problematic case through.
      (This shouldn't squeeze inappropriately as dimension compatibility is
      already checked for conformability before getting to the copy code).
      6a81dbbb
    • Jason Rhinelander's avatar
      Fix `char &` arguments being non-bindable · 1b08df58
      Jason Rhinelander authored
      This changes the caster to return a reference to a (new) local `CharT`
      type caster member so that binding lvalue-reference char arguments
      works (currently it results in a compilation failure).
      
      Fixes #1116
      1b08df58
  12. 28 Sep, 2017 1 commit
  13. 21 Sep, 2017 1 commit
    • Ansgar Burchardt's avatar
      correct stride in matrix example and test · a22dd2d1
      Ansgar Burchardt authored
      This also matches the Eigen example for the row-major case.
      
      This also enhances one of the tests to trigger a failure (and fixes it in the PR).  (This isn't really a flaw in pybind itself, but rather fixes wrong code in the test code and docs).
      a22dd2d1
  14. 20 Sep, 2017 2 commits
  15. 16 Sep, 2017 1 commit
  16. 12 Sep, 2017 2 commits
    • Dean Moldovan's avatar
      Make TypeErrors more informative when an optional header is missing · 2b4477eb
      Dean Moldovan authored
      E.g. trying to convert a `list` to a `std::vector<int>` without
      including <pybind11/stl.h> will now raise an error with a note that
      suggests checking the headers.
      
      The note is only appended if `std::` is found in the function
      signature. This should only be the case when a header is missing.
      E.g. when stl.h is included, the signature would contain `List[int]`
      instead of `std::vector<int>` while using stl_bind.h would produce
      something like `MyVector`. Similarly for `std::map`/`Dict`, `complex`,
      `std::function`/`Callable`, etc.
      
      There's a possibility for false positives, but it's pretty low.
      2b4477eb
    • Gunnar Läthén's avatar
      c64e6b16
  17. 11 Sep, 2017 1 commit
  18. 10 Sep, 2017 2 commits
  19. 06 Sep, 2017 2 commits
  20. 30 Aug, 2017 4 commits
  21. 28 Aug, 2017 2 commits
    • Wenzel Jakob's avatar
    • Dean Moldovan's avatar
      Reduce binary size overhead of new-style constructors · 39fd6a94
      Dean Moldovan authored
      The lookup of the `self` type and value pointer are moved out of
      template code and into `dispatcher`. This brings down the binary
      size of constructors back to the level of the old placement-new
      approach. (It also avoids a second lookup for `init_instance`.)
      
      With this implementation, mixing old- and new-style constructors
      in the same overload set may result in some runtime overhead for
      temporary allocations/deallocations, but this should be fine as
      old style constructors are phased out.
      39fd6a94
  22. 25 Aug, 2017 3 commits
  23. 23 Aug, 2017 2 commits
    • Jason Rhinelander's avatar
      Fix clang5 warnings · e9bb843e
      Jason Rhinelander authored
      e9bb843e
    • Dean Moldovan's avatar
      Speed up AppVeyor build (#1021) · b33475d0
      Dean Moldovan authored
      The `latest` build remains as is, but all others are modified to:
      
      * Use regular Python instead of conda. `pip install` is much faster
        than conda, but scipy isn't available. Numpy is still tested.
      
      * Compile in debug mode instead of release.
      
      * Skip CMake build tests. For some reason, CMake configuration is very
        slow on AppVeyor and these tests are almost entirely CMake.
      
      The changes reduce build time to about 1/3 of the original. The `latest` 
      config still covers scipy, release mode and the CMake build tests, so 
      the others don't need to.
      b33475d0
  24. 22 Aug, 2017 2 commits