1. 01 Dec, 2022 1 commit
    • scoped_interpreter. overloaded constructor: PyConfig param (#4330) · 88699849
      * scoped_interpreter overloaded ctor: PyConfig param
      
      * style: pre-commit fixes
      
      * refact: some logics extracted into funcs (precheck_interpreter, _initialize_interpreter); config_guard
      
      * style: pre-commit fixes
      
      * refact: scoped_config, some funcs hidden in detail ns
      
      * refact: macro PYBIND11_PYCONFIG_SUPPORT_PY_VERSION + undef
      
      * feat: PYBIND11_PYCONFIG_SUPPORT_PY_VERSION set to 3.8
      
      * tests: Custom PyConfig
      
      * ci: python 3.6 -> 3.8
      
      * ci: reverted py 38 back  to 36; refact: initialize_interpreter overloads
      
      * style: pre-commit fixes
      
      * fix: readability-implicit-bool-conversion
      
      * refact: each initialize_interpreter overloads in pybind11 ns
      
      * Move `initialize_interpreter_pre_pyconfig()` into the `detail` namespace.
      
      Move the `PYBIND11_PYCONFIG_SUPPORT_PY_VERSION_HEX` define down to where it is used for the first time, and check if it is defined already, so that it is possible to customize from the compilation command line, just in case there is some unforeseen issue for Python 3.8, 3.9, 3.10.
      
      * tests: Add program dir to path, Custom PyConfig with argv
      
      * refact: clang-formatted
      
      * tests: Add-program-dir-to-path covers both scoped_interpreter overloads
      
      * tests: Add-program-dir-to-path fixed
      
      * tests: Add-program-dir-to-path py_version dependant validation
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Co-authored-by: Ralf W. Grosse-Kunstleve <rwgk@google.com>
      Arman committed
  2. 28 Nov, 2022 1 commit
  3. 25 Nov, 2022 1 commit
  4. 23 Nov, 2022 1 commit
  5. 22 Nov, 2022 1 commit
  6. 12 Nov, 2022 2 commits
  7. 10 Nov, 2022 1 commit
  8. 02 Nov, 2022 1 commit
    • Fix functional.h bug + introduce test to verify that it is fixed (#4254) · ee2b5226
      * Illustrate bug in functional.h
      
      * style: pre-commit fixes
      
      * Make functional casting more robust / add workaround
      
      * Make function_record* casting even more robust
      
      * See if this fixes PyPy issue
      
      * It still fails on PyPy sadly
      
      * Do not make new CTOR just yet
      
      * Fix test
      
      * Add name to ensure correctness
      
      * style: pre-commit fixes
      
      * Clean up tests + remove ifdef guards
      
      * Add comments
      
      * Improve comments, error handling, and safety
      
      * Fix compile error
      
      * Fix magic logic
      
      * Extract helper function
      
      * Fix func signature
      
      * move to local internals
      
      * style: pre-commit fixes
      
      * Switch to simpler design
      
      * style: pre-commit fixes
      
      * Move to function_record
      
      * style: pre-commit fixes
      
      * Switch to internals, update tests and docs
      
      * Fix lint
      
      * Oops, forgot to resolve last comment
      
      * Fix typo
      
      * Update in response to comments
      
      * Implement suggestion to improve test
      
      * Update comment
      
      * Simple fixes
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Co-authored-by: Aaron Gokaslan <aaronGokaslan@gmail.com>
      Ethan Steinberg committed
  9. 01 Nov, 2022 2 commits
  10. 31 Oct, 2022 3 commits
    • docs: prepare for 2.10.1 release (#4279) · 252ed8fb
      * docs: prepare for 2.10.1 release
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * Update changelog.rst
      
      * docs: update changelog with final list of PRs
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * Update docs/changelog.rst
      
      * chore: one more changelog bump
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      Henry Schreiner committed
    • fix: define (non-empty) `PYBIND11_EXPORT_EXCEPTION` only under macOS. (#4298) · b1bd7f26
      Background: #2999, #4105, #4283, #4284
      
      In a nutshell:
      
      * Only macOS actually needs `PYBIND11_EXPORT_EXCEPTION` (#4284).
      
      * Evidently (#4283), under macOS `PYBIND11_EXPORT_EXCEPTION` does not run the risk of introducing ODR violations,
      
      * but evidently (#4283) under Linux it does, in the presumably rare/unusual situation that `RTLD_GLOBAL` is used.
      
      * Windows does no have the equivalent of `RTLD_GLOBAL`, therefore `PYBIND11_EXPORT_EXCEPTION` has no practical benefit, on the contrary, noisy warning suppression pragmas are needed, therefore it is best left empty.
      Ralf W. Grosse-Kunstleve committed
    • fix: unicode surrogate character in Python exception message. (#4297) · 3a2c96bd
      * Fix & test for issue #4288 (unicode surrogate character in Python exception message).
      
      * DRY `message_unavailable_exc`
      
      * fix: add a constexpr
      
      Co-authored-by: Aaron Gokaslan <skylion.aaron@gmail.com>
      
      * style: pre-commit fixes
      
      Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
      Co-authored-by: Aaron Gokaslan <skylion.aaron@gmail.com>
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Ralf W. Grosse-Kunstleve committed
  11. 30 Oct, 2022 2 commits
    • Add `PYBIND11_SIMPLE_GIL_MANAGEMENT` option (cmake, C++ define) (#4216) · b07d08f6
      * Add option to force the use of the PYPY GIL scoped acquire/release logic to support nested gil access, see https://github.com/pybind/pybind11/issues/1276 and https://github.com/pytorch/pytorch/issues/83101
      
      * Apply suggestions from code review
      
      * Update CMakeLists.txt
      
      * docs: update upgrade guide
      
      * Update docs/upgrade.rst
      
      * All bells & whistles.
      
      * Add Reminder to common.h, so that we will not forget to purge `!WITH_THREAD` branches when dropping Python 3.6
      
      * New sentence instead of semicolon.
      
      * Temporarily pull in snapshot of PR #4246
      
      * Add `test_release_acquire`
      
      * Add more unit tests for nested gil locking
      
      * Add test_report_builtins_internals_keys
      
      * Very minor enhancement: sort list only after filtering.
      
      * Revert change in docs/upgrade.rst
      
      * Add test_multi_acquire_release_cross_module, while also forcing unique PYBIND11_INTERNALS_VERSION for cross_module_gil_utils.cpp
      
      * Hopefully fix apparently new ICC error.
      
      ```
      2022-10-28T07:57:54.5187728Z -- The CXX compiler identification is Intel 2021.7.0.20220726
      ...
      2022-10-28T07:58:53.6758994Z icpc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
      2022-10-28T07:58:54.5801597Z In file included from /home/runner/work/pybind11/pybind11/include/pybind11/detail/../detail/type_caster_base.h(15),
      2022-10-28T07:58:54.5803794Z                  from /home/runner/work/pybind11/pybind11/include/pybind11/detail/../cast.h(15),
      2022-10-28T07:58:54.5805740Z                  from /home/runner/work/pybind11/pybind11/include/pybind11/detail/../attr.h(14),
      2022-10-28T07:58:54.5809556Z                  from /home/runner/work/pybind11/pybind11/include/pybind11/detail/class.h(12),
      2022-10-28T07:58:54.5812154Z                  from /home/runner/work/pybind11/pybind11/include/pybind11/pybind11.h(13),
      2022-10-28T07:58:54.5948523Z                  from /home/runner/work/pybind11/pybind11/tests/cross_module_gil_utils.cpp(13):
      2022-10-28T07:58:54.5949009Z /home/runner/work/pybind11/pybind11/include/pybind11/detail/../detail/internals.h(177): error #2282: unrecognized GCC pragma
      2022-10-28T07:58:54.5949374Z       PYBIND11_TLS_KEY_INIT(tstate)
      2022-10-28T07:58:54.5949579Z       ^
      2022-10-28T07:58:54.5949695Z
      ```
      
      * clang-tidy fixes
      
      * Workaround for PYPY WIN exitcode None
      
      * Revert "Temporarily pull in snapshot of PR #4246"
      
      This reverts commit 23ac16e859150f27fda25ca865cabcb4444e0770.
      
      * Another workaround for PYPY WIN exitcode None
      
      * Clean up how the tests are run "run in process" Part 1: uniformity
      
      * Clean up how the tests are run "run in process" Part 2: use `@pytest.mark.parametrize` and clean up the naming.
      
      * Skip some tests `#if defined(THREAD_SANITIZER)` (tested with TSAN using the Google-internal toolchain).
      
      * Run all tests again but ignore ThreadSanitizer exitcode 66 (this is less likely to mask unrelated ThreadSanitizer issues in the future).
      
      * bug fix: missing common.h include before using `PYBIND11_SIMPLE_GIL_MANAGEMENT`
      
      For the tests in the github CI this does not matter, because
      `PYBIND11_SIMPLE_GIL_MANAGEMENT` is always defined from the command line,
      but when monkey-patching common.h locally, it matters.
      
      * if process.exitcode is None: assert t_delta > 9.9
      
      * More sophisiticated `_run_in_process()` implementation, clearly reporting `DEADLOCK`, additionally exercised via added `intentional_deadlock()`
      
      * Wrap m.intentional_deadlock in a Python function, for `ForkingPickler` compatibility.
      
      ```
      >       ForkingPickler(file, protocol).dump(obj)
      E       TypeError: cannot pickle 'PyCapsule' object
      ```
      
      Observed with all Windows builds including mingw but not PyPy, and macos-latest with Python 3.9, 3.10, 3.11 but not 3.6.
      
      * Add link to potential solution for WOULD-BE-NICE-TO-HAVE feature.
      
      * Add `SKIP_IF_DEADLOCK = True` option, to not pollute the CI results with expected `DEADLOCK` failures while we figure out what to do about them.
      
      * Add COPY-PASTE-THIS: gdb ... command (to be used for debugging the detected deadlock)
      
      * style: pre-commit fixes
      
      * Do better than automatic pre-commit fixes.
      
      * Add `PYBIND11_SIMPLE_GIL_MANAGEMENT` to `pytest_report_header()` (so that we can easily know when harvesting deadlock information from the CI logs).
      
      Co-authored-by: Arnim Balzer <arnim@seechange.ai>
      Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
      Co-authored-by: Ralf W. Grosse-Kunstleve <rwgk@google.com>
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Chekov2k committed
  12. 29 Oct, 2022 1 commit
  13. 26 Oct, 2022 1 commit
  14. 23 Oct, 2022 3 commits
  15. 22 Oct, 2022 1 commit
    • Fix casts to void* (#4275) · 8ea75ab4
      * Fix casts to void*
      
      * Improve tests
      
      * style: pre-commit fixes
      
      * remove c style cast
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Co-authored-by: Aaron Gokaslan <aaronGokaslan@gmail.com>
      Lalaland committed
  16. 21 Oct, 2022 3 commits
  17. 20 Oct, 2022 5 commits
  18. 18 Oct, 2022 1 commit
    • First draft of Eigen::Tensor support (#4201) · fab1eebe
      * First draft of Eigen::Tensor support
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Fix build errors
      
      * Weird allocator stuff?
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Remove unused + additional allocator junk
      
      * Disable warning
      
      * Use constexpr
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * clang tidy fixes
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Resolve comments
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Remove auto constexpr function
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Try again for older C++
      
      * Oops forgot constexpr
      
      * Move to new files as suggested
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Fix weird tests
      
      * Fix nits
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Oops, forgot import
      
      * Fix clang 3.6 bug
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * More comprehensive test suite
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Refactor allocators to make things more clear
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Switch to std::copy
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Switch to DSizes instead of array
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Address feedback
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Fix python + dummy c++ change to trigger build
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Alignment
      
      * [pre-commit.ci] auto fixes from pre-commit.com hooks
      
      for more information, see https://pre-commit.ci
      
      * Add include guard
      
      * Forgot inline
      
      * Fix compiler warning
      
      * Remove bad test
      
      * Better type signatures
      
      * Add guards to make compiler requirements more explicit
      
      * style: pre-commit fixes
      
      * Force rerun of tests due to flake
      
      * style: pre-commit fixes
      
      * Keep pragmas & all related comments together, add PLEASE KEEP IN SYNC
      
      * Move headers out of detail
      
      * style: pre-commit fixes
      
      * Fix cmake
      
      * Improve casting
      
      * style: pre-commit fixes
      
      * Add a ton more tests + refactor
      
      * Improve names
      
      * style: pre-commit fixes
      
      * Update include/pybind11/eigen/tensor.h
      
      Co-authored-by: Aaron Gokaslan <skylion.aaron@gmail.com>
      
      * Fix tests
      
      * style: pre-commit fixes
      
      * Update
      
      * Add a test to verify that strange numpy arrays work
      
      * Fix dumb compiler warning
      
      * Better tests
      
      * Better tests
      
      * Fix tests
      
      * style: pre-commit fixes
      
      * More test fixes
      
      * style: pre-commit fixes
      
      * A ton more test coverage
      
      * Fix tests
      
      * style: pre-commit fixes
      
      * style: pre-commit fixes
      
      * Add back constexpr
      
      * Another test
      
      * style: pre-commit fixes
      
      * Improve tests
      
      * Whoops
      
      * Less magic numbers
      
      * Update tests/test_eigen_tensor.py
      
      Co-authored-by: Sergiu Deitsch <sergiud@users.noreply.github.com>
      
      * Update tests/test_eigen_tensor.py
      
      Co-authored-by: Sergiu Deitsch <sergiud@users.noreply.github.com>
      
      * style: pre-commit fixes
      
      * Fix tests
      
      * style: pre-commit fixes
      
      * Fix memory leak
      
      * style: pre-commit fixes
      
      * Fix order
      
      * style: pre-commit fixes
      
      * Add test to make sure unsafe casts fail
      
      * Minor bug fix to work on 32 bit machines
      
      * Implement convert flag
      
      * style: pre-commit fixes
      
      * Switch to correct TensorMap const use
      
      * style: pre-commit fixes
      
      * Support older versions of eigen
      
      * Weird c++ compilers
      
      * Fix Eigen bug
      
      * Fix another eigen bug
      
      * Yet another eigen bug
      
      * Potential flakes?
      
      * style: pre-commit fixes
      
      * Rerun tests with dummy exception to find out what is going on
      
      * Another dummy test run
      
      * Ablate more
      
      * Found the broken test?
      
      * One step closer
      
      * one step further
      
      * Double check
      
      * one thing at a time
      
      * Give up and disable the test
      
      * Clang lies about being gcc
      
      * Oops, fix matrix test
      
      * style: pre-commit fixes
      
      * Add tests to verify scalar conversions
      
      * style: pre-commit fixes
      
      * Fix nits
      
      * Support no_array
      
      * Fix tests
      
      * style: pre-commit fixes
      
      * Silence compiler warning
      
      * Improve build system for ancient compilers
      
      * Make clang happy
      
      * Make gcc happy
      
      * Implement Skylion's suggestions
      
      * Fix warning
      
      * Inline const pointer check
      
      * Implement suggestions
      
      * style: pre-commit fixes
      
      * Improve tests
      
      * Typo
      
      * style: pre-commit fixes
      
      * Support Google's build environment
      
      * style: pre-commit fixes
      
      * Update include/pybind11/eigen/tensor.h
      
      Co-authored-by: Aaron Gokaslan <skylion.aaron@gmail.com>
      
      * style: pre-commit fixes
      
      * Test cleanup per Skylion
      
      * Switch to remvove_cv_t
      
      * Cleaner test
      
      * style: pre-commit fixes
      
      * Remove tensor from eigen.h, update tests
      
      * style: pre-commit fixes
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Co-authored-by: Ralf W. Grosse-Kunstleve <rwgk@google.com>
      Co-authored-by: Aaron Gokaslan <aaronGokaslan@gmail.com>
      Co-authored-by: Aaron Gokaslan <skylion.aaron@gmail.com>
      Co-authored-by: Sergiu Deitsch <sergiud@users.noreply.github.com>
      Lalaland committed
  19. 17 Oct, 2022 2 commits
  20. 12 Oct, 2022 2 commits
  21. 11 Oct, 2022 2 commits
  22. 10 Oct, 2022 1 commit
    • Reproducer and fix for issue encountered in smart_holder update. (#4228) · da104a9e
      * Reproducer for issue encountered in smart_holder update.
      
      * clang-tidy compatibility (untested).
      
      * Add `enable_if_t` to workaround.
      
      * Bug fix: Move `PYBIND11_USING_WORKAROUND_FOR_CUDA_11_4_THROUGH_8` determination to detail/common.h
      
      So that it actually is defined in pybind11.h
      
      * Try using the workaround (which is nicer than the original code) universally.
      
      * Reduce reproducer for CUDA 11.7 issue encountered in smart_holder update.
      
      This commit tested in isolation on top of current master + first version of reproducer (62311eb431849d135a5db84f6c75ec390f2ede7c).
      
      Succeeds with Debian Clang 14.0.6 C++17 (and probably all other compilers).
      
      Fails for CUDA 11.7:
      
      ```
      cd /build/tests && /usr/local/cuda/bin/nvcc -forward-unknown-to-host-compiler -Dpybind11_tests_EXPORTS -I/mounted_pybind11/include -isystem=/usr/include/python3.10 -g --generate-code=arch=compute_52,code=[compute_52,sm_52] -Xcompiler=-fPIC -Xcompiler=-fvisibility=hidden -Werror all-warnings -std=c++17 -MD -MT tests/CMakeFiles/pybind11_tests.dir/test_class.cpp.o -MF CMakeFiles/pybind11_tests.dir/test_class.cpp.o.d -x cu -c /mounted_pybind11/tests/test_class.cpp -o CMakeFiles/pybind11_tests.dir/test_class.cpp.o
      /mounted_pybind11/tests/test_class.cpp(53): error: more than one instance of overloaded function "pybind11::class_<type_, options...>::def [with type_=test_class::pr4220_tripped_over_this::Empty0, options=<>]" matches the argument list:
                  function template "pybind11::class_<test_class::pr4220_tripped_over_this::Empty0> &pybind11::class_<type_, options...>::def(const char *, Func &&, const Extra &...) [with type_=test_class::pr4220_tripped_over_this::Empty0, options=<>]"
      /mounted_pybind11/include/pybind11/pybind11.h(1557): here
                  function template "pybind11::class_<test_class::pr4220_tripped_over_this::Empty0> &pybind11::class_<type_, options...>::def(const T &, const Extra &...) [with type_=test_class::pr4220_tripped_over_this::Empty0, options=<>]"
      /mounted_pybind11/include/pybind11/pybind11.h(1586): here
                  argument types are: (const char [8], <unknown-type>)
                  object type is: pybind11::class_<test_class::pr4220_tripped_over_this::Empty0>
      
      1 error detected in the compilation of "/mounted_pybind11/tests/test_class.cpp".
      ```
      Ralf W. Grosse-Kunstleve committed
  23. 07 Oct, 2022 2 commits