1. 26 Oct, 2021 2 commits
    • Henry Schreiner's avatar
      fix: improve support for Python 3.11-dev (#3368) · e7e2c79f
      Henry Schreiner authored
      * ci: support Python 3.11-dev
      
      Also update 3.10 to final, better PyPy usage
      
      * fix: use PyFrame_GetCode on Python 3.9+
      
      * ci: some bitiness of pypy not supported on win
      
      * chore: update CMake support to 3.22rc1 to quiet warning
      
      * fix: use dev version of py to fix Py 3.11
      
      * tests: print proper Eigen version
      
      * ci: include pypy2, not sure why
      
      * ci: avoid running on Python 3.11 for now
      
      * ci: fix runs
      
      * ci: simpler PyPy usage, drop unmaintained scipy + pypy index
      
      * ci: only binary numpy, wait on pypy 3.8
      
      * refactor: address review
      e7e2c79f
    • Ryan Cahoon's avatar
      fix: the types for return_value_policy_override in optional_caster (#3376) · c2d3e220
      Ryan Cahoon authored
      
      
      * fix: the types for return_value_policy_override in optional_caster
      
      `return_value_policy_override` was not being applied correctly in
      `optional_caster` in two ways:
      - The `is_lvalue_reference` condition referenced `T`, which was the
      `optional<T>` type parameter from the class, when it should have used `T_`,
      which was the parameter to the `cast` function. `T_` can potentially be a
      reference type, but `T` will never be.
      - The type parameter passed to `return_value_policy_override` should be
      `T::value_type`, not `T`. This matches the way that the other STL container
      type casters work.
      
      The result of these issues was that a method/property definition which used a
      `reference` or `reference_internal` return value policy would create a Python
      value that's bound by reference to a temporary C++ object, resulting in
      undefined behavior. For reasons that I was not able to figure out fully, it
      seems like this causes problems when using old versions of `boost::optional`,
      but not with recent versions of `boost::optional` or the `libstdc++`
      implementation of `std::optional`. The issue (that the override to
      `return_value_policy::move` is never being applied) is present for all
      implementations, it just seems like that somehow doesn't result in problems for
      the some implementation of `optional`. This change includes a regression type
      with a custom optional-like type which was able to reproduce the issue.
      
      Part of the issue with using the wrong types may have stemmed from the type
      variables `T` and `T_` having very similar names. This also changes the type
      variables in `optional_caster` to use slightly more descriptive names, which
      also more closely follow the naming convention used by the other STL casters.
      
      Fixes #3330
      
      * Fix clang-tidy complaints
      
      * Add missing NOLINT
      
      * Apply a couple more fixes
      
      * fix: support GCC 4.8
      
      * tests: avoid warning about unknown compiler for compilers missing C++17
      
      * Remove unneeded test module attribute
      
      * Change test enum to have more unique int values
      Co-authored-by: default avatarAaron Gokaslan <skylion.aaron@gmail.com>
      Co-authored-by: default avatarHenry Schreiner <HenrySchreinerIII@gmail.com>
      c2d3e220
  2. 11 Oct, 2021 1 commit
    • Ralf W. Grosse-Kunstleve's avatar
      Correct options on Eigen::MappedSparseMatrix & adding MSVC C4127 suppression... · 7c580586
      Ralf W. Grosse-Kunstleve authored
      Correct options on Eigen::MappedSparseMatrix & adding MSVC C4127 suppression around Eigen includes. (#3352)
      
      * Adding MSVC C4127 suppression around Eigen includes.
      
      * For MSVC 2015 only: also adding the C4127 suppression to test_eigen.cpp
      
      * Copying original change from PR #3343, with extra line breaks to not run past 99 columns (our desired but currently not enforced limit).
      7c580586
  3. 04 Oct, 2021 1 commit
  4. 24 Sep, 2021 1 commit
    • Jeremy Maitin-Shepard's avatar
      Add `custom_type_setup` attribute (#3287) · 62c4909c
      Jeremy Maitin-Shepard authored
      * Fix `pybind11::object::operator=` to be safe if `*this` is accessible from Python
      
      * Add `custom_type_setup` attribute
      
      This allows for custom modifications to the PyHeapTypeObject prior to
      calling `PyType_Ready`.  This may be used, for example, to define
      `tp_traverse` and `tp_clear` functions.
      62c4909c
  5. 10 Sep, 2021 1 commit
    • Laramie Leavitt's avatar
      Fix thread safety for pybind11 loader_life_support (#3237) · 0e599589
      Laramie Leavitt authored
      * Fix thread safety for pybind11 loader_life_support
      
      Fixes issue: https://github.com/pybind/pybind11/issues/2765
      
      This converts the vector of PyObjects to either a single void* or
      a per-thread void* depending on the WITH_THREAD define.
      
      The new field is used by each thread to construct a stack
      of loader_life_support frames that can extend the life of python
      objects.
      
      The pointer is updated when the loader_life_support object is allocated
      (which happens before a call) as well as on release.
      
      Each loader_life_support maintains a set of PyObject references
      that need to be lifetime extended; this is done by storing them
      in a c++ std::unordered_set and clearing the references when the
      method completes.
      
      * Also update the internals version as the internal struct is no longer compatible
      
      * Add test demonstrating threading works correctly.
      
      It may be appropriate to run this under msan/tsan/etc.
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Update test to use lifetime-extended references rather than
      std::string_view, as that's a C++ 17 feature.
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Make loader_life_support members private
      
      * Update version to dev2
      
      * Update test to use python threading rather than concurrent.futures
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Remove unnecessary env in test
      
      * Remove unnecessary pytest in test
      
      * Use native C++ thread_local in place of python per-thread data structures to retain compatability
      
      * clang-format test_thread.cpp
      
      * Add a note about debugging the py::cast() error
      
      * thread_test.py now propagates exceptions on join() calls.
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      
      
      * remove unused sys / merge
      
      * Update include order in test_thread.cpp
      
      * Remove spurious whitespace
      
      * Update comment / whitespace.
      
      * Address review comments
      
      * lint cleanup
      
      * Fix test IntStruct constructor.
      
      * Add explicit to constructor
      Co-authored-by: default avatarpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Co-authored-by: default avatarAaron Gokaslan <skylion.aaron@gmail.com>
      0e599589
  6. 29 Jul, 2021 1 commit
  7. 14 Jul, 2021 1 commit
  8. 02 Jul, 2021 1 commit
  9. 14 Apr, 2021 1 commit
  10. 12 Feb, 2021 1 commit
  11. 19 Jan, 2021 1 commit
  12. 15 Jan, 2021 1 commit
    • Yannick Jadoul's avatar
      Add a Valgrind build on debug Python 3.9 (#2746) · 0f8d5f2e
      Yannick Jadoul authored
      
      
      * Adding a valgrind build on debug Python 3.9
      Co-authored-by: default avatarBoris Staletic <boris.staletic@gmail.com>
      
      * Add Valgrind suppression files
      
      - Introduce suppression file, populate it with a first suppression taken from CPython, and fix one leak in the tests
      - Suppress leak in NumPy
      - More clean tests!
      - Tests with names a-e passing (except for test_buffer)
      - Suppress multiprocessing errors
      - Merge multiprocessing suppressions into other suppression files
      - Numpy seems to be spelled with a big P
      - Append single entry from valgrind-misc.supp to valgrind-python.supp, and make clear valgrind-python.supp is only CPython
      Co-authored-by: default avatarBoris Staletic <boris.staletic@gmail.com>
      
      * Enable test_virtual_functions with a workaround
      
      * Add a memcheck cmake target
      
      - Add a memcheck cmake target
      - Reformat cmake
      - Appease the formatting overlords - they are angry
      - Format CMake valgrind target decently
      
      * Update CI config to new action versions
      
      * fix: separate memcheck from pytest
      
      * ci: cleanup
      
      * Merge Valgrind and other deadsnakes builds
      Co-authored-by: default avatarBoris Staletic <boris.staletic@gmail.com>
      Co-authored-by: default avatarHenry Schreiner <henryschreineriii@gmail.com>
      0f8d5f2e
  13. 29 Oct, 2020 1 commit
    • Ralf W. Grosse-Kunstleve's avatar
      clang -Wnon-virtual-dtor compatibility (#2626) · 8290a5a0
      Ralf W. Grosse-Kunstleve authored
      * Adding missing virtual destructors, to silence clang -Wnon-virtual-dtor warnings.
      
      Tested with clang version 9.0.1-12 under an Ubuntu-like OS.
      Originally discovered in the Google-internal environment.
      
      * adding -Wnon-virtual-dtor for GNU|Intel|Clang
      8290a5a0
  14. 19 Oct, 2020 1 commit
  15. 15 Oct, 2020 1 commit
  16. 03 Oct, 2020 1 commit
  17. 22 Sep, 2020 1 commit
  18. 12 Sep, 2020 1 commit
    • andriish's avatar
      fix: support NVIDIA-PGI HPC SDK (#2475) · 38370a87
      andriish authored
      
      
      * Added guards to the includes
      
      Added new CI config
      
      Added new trigger
      
      Changed CI workflow name
      
      Debug CI
      
      Debug CI
      
      Debug CI
      
      Debug CI
      
      Added flags fro PGI
      
      Disable Eigen
      
      Removed tests that fail
      
      Uncomment lines
      
      * fix: missing include
      
      fix: minor style cleanup
      
      tests: support skipping
      
      ci: remove and tighten a bit
      
      fix: try msvc workaround for pgic
      
      * tests: split up prealoc tests
      
      * fix: PGI compiler fix
      
      * fix: PGI void_t only
      
      * fix: try to appease nvcc
      
      * ci: better ordering for slow tests
      
      * ci: minor improvements to testing
      
      * ci: Add NumPy to testing
      
      * ci: Eigen generates CUDA warnings / PGI errors
      
      * Added CentOS7 back for a moment
      
      * Fix YAML
      
      * ci: runs-on missing
      
      * centos7 is missing pytest
      
      * ci: use C++11 on CentOS 7
      
      * ci: test something else
      
      * Try just adding flags on CentOS 7
      
      * fix: CentOS 7
      
      * refactor: move include to shared location
      
      * Added verbose flag
      
      * Try to use system cmake3 on CI
      
      * Try to use system cmake3 on CI, attempt2
      
      * Try to use system cmake3 on CI, attempt3
      
      * tests: not finding pytest should be a warning, not a fatal error
      
      * tests: cleanup
      
      * Weird issue?
      
      * fix: final polish
      Co-authored-by: default avatarAndrii Verbytskyi <andrii.verbytskyi@mpp.mpg.de>
      Co-authored-by: default avatarHenry Schreiner <henryschreineriii@gmail.com>
      Co-authored-by: default avatarAndrii Verbytskyi <averbyts@cern.ch>
      38370a87
  19. 10 Sep, 2020 2 commits
  20. 19 Aug, 2020 2 commits
    • Henry Schreiner's avatar
      tests: avoid putting build products into source directory (#2353) · 04fdc44f
      Henry Schreiner authored
      * tests: keep source dir clean
      
      * ci: make first build inplace
      
      * ci: drop dev setting (wasn't doing anything)
      
      * tests: warn if source directory is dirty
      04fdc44f
    • Henry Schreiner's avatar
      feat: new FindPython support (#2370) · 1729aae9
      Henry Schreiner authored
      * feat: FindPython support
      
      * refactor: rename to PYBIND11_FINDPYTHON
      
      * docs: Caps fixes
      
      * feat: NOPYTHON mode
      
      * test: check simple call
      
      * docs: add changelog/upgrade guide
      
      * feat: Support Python3 and Python2
      
      * refactor: Use targets in tests
      
      * fix: support CMake 3.4+
      
      * feat: classic search also finds virtual environments
      
      * docs: some updates from @wjakob's review
      
      * fix: wrong name for QUIET mode variable, reported by @skoslowski
      
      * refactor: cleaner output messaging
      
      * fix: support debug Python's in FindPython mode too
      
      * fixup! refactor: cleaner output messaging
      
      * fix: missing pybind11_FOUND and pybind11_INCLUDE_DIR restored to subdir mode
      
      * fix: nicer reporting of Python / PyPy
      
      * fix: out-of-order variable fix
      
      * docs: minor last-minute cleanup
      1729aae9
  21. 17 Aug, 2020 1 commit
    • Henry Schreiner's avatar
      docs: contrib/issue templates (#2377) · 64040997
      Henry Schreiner authored
      * docs: move helpers to .github where allowed
      
      * docs: more guidelines in CONTRIBUTING
      
      * chore: update issue templates
      
      * fix: review from @bstaletic
      
      * refactor: a few points from @rwgk
      
      * docs: more touchup, review changes
      64040997
  22. 16 Aug, 2020 1 commit
    • Henry Schreiner's avatar
      tests: cleanup and ci hardening (#2397) · 4d9024ec
      Henry Schreiner authored
      * tests: refactor and cleanup
      
      * refactor: more consistent
      
      * tests: vendor six
      
      * tests: more xfails, nicer system
      
      * tests: simplify to info
      
      * tests: suggestions from @YannickJadoul and @bstaletic
      
      * tests: restore some pypy tests that now pass
      
      * tests: rename info to env
      
      * tests: strict False/True
      
      * tests: drop explicit strict=True again
      
      * tests: reduce minimum PyTest to 3.1
      4d9024ec
  23. 12 Aug, 2020 1 commit
  24. 06 Aug, 2020 1 commit
  25. 31 Jul, 2020 3 commits
  26. 28 Jul, 2020 1 commit
  27. 26 Jul, 2020 1 commit
  28. 23 Jul, 2020 2 commits
  29. 30 Jun, 2020 1 commit
  30. 31 May, 2020 1 commit
  31. 18 Jul, 2019 1 commit
  32. 15 Jul, 2019 1 commit
  33. 11 Jun, 2019 2 commits
    • Wenzel Jakob's avatar
    • Roland Dreier's avatar
      Fix assertion failure for unions (#1685) (#1709) · 1aa8dd17
      Roland Dreier authored
      In def_readonly and def_readwrite, there is an assertion that the member comes
      from the class or a base class:
      
          static_assert(std::is_base_of<C, type>::value, "...");
      
      However, if C and type are the same type, is_base_of will still only be true
      if they are the same _non-union_ type.  This means we can't define accessors
      for the members of a union type because of this assertion.
      
      Update the assertion to test
      
          std::is_same<C, type>::value || std::is_base_of<C, type>::value
      
      which will allow union types, or members of base classes.
      
      Also add a basic unit test for accessing unions.
      1aa8dd17