1. 12 Oct, 2023 1 commit
    • Add pybind11/gil_safe_call_once.h (to fix deadlocks in pybind11/numpy.h) (#4877) · 0e2c3e5d
      * LazyInitializeAtLeastOnceDestroyNever v1
      
      * Go back to using `union` as originally suggested by jbms@. The trick (also suggested by jbms@) is to add empty ctor + dtor.
      
      * Revert "Go back to using `union` as originally suggested by jbms@. The trick (also suggested by jbms@) is to add empty ctor + dtor."
      
      This reverts commit e7b8c4f0fcd72191e88d1c17abf5da08fe3a9c6f.
      
      * Remove `#include <stdalign.h>`
      
      * `include\pybind11/numpy.h(24,10): fatal error C1083: Cannot open include file: 'stdalign.h': No such file or directory`
      
      * @tkoeppe wrote: this is a C interop header (and we're not writing C)
      
      * Suppress gcc 4.8.5 (CentOS 7) warning.
      
      ```
      include/pybind11/eigen/../numpy.h:63:53: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
               return *reinterpret_cast<T *>(value_storage_);
                                                           ^
      ```
      
      * Replace comments:
      
      Document PRECONDITION.
      
      Adopt comment suggested by @tkoeppe: https://github.com/pybind/pybind11/pull/4877#discussion_r1350356093
      
      * Adopt suggestion by @tkoeppe:
      
      * https://github.com/pybind/pybind11/pull/4877#issuecomment-1752969127
      
      * https://godbolt.org/z/Wa79nKz6e
      
      * Add `PYBIND11_CONSTINIT`, but it does not work for the current use cases:
      
      ```
      g++ -o pybind11/tests/test_numpy_array.os -c -std=c++20 -fPIC -fvisibility=hidden -O0 -g -Wall -Wextra -Wconversion -Wcast-qual -Wdeprecated -Wundef -Wnon-virtual-dtor -Wunused-result -Werror -isystem /usr/include/python3.11 -isystem /usr/include/eigen3 -DPYBIND11_STRICT_ASSERTS_CLASS_HOLDER_VS_TYPE_CASTER_MIX -DPYBIND11_ENABLE_TYPE_CASTER_ODR_GUARD_IF_AVAILABLE -DPYBIND11_TEST_BOOST -Ipybind11/include -I/usr/local/google/home/rwgk/forked/pybind11/include -I/usr/local/google/home/rwgk/clone/pybind11/include /usr/local/google/home/rwgk/forked/pybind11/tests/test_numpy_array.cpp
      ```
      
      ```
      In file included from /usr/local/google/home/rwgk/forked/pybind11/tests/test_numpy_array.cpp:10:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/numpy.h: In static member function ‘static pybind11::detail::npy_api& pybind11::detail::npy_api::get()’:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/numpy.h:258:82: error: ‘constinit’ variable ‘api_init’ does not have a constant initializer
        258 |         PYBIND11_CONSTINIT static LazyInitializeAtLeastOnceDestroyNever<npy_api> api_init;
            |                                                                                  ^~~~~~~~
      ```
      
      ```
      In file included from /usr/local/google/home/rwgk/forked/pybind11/tests/test_numpy_array.cpp:10:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/numpy.h: In static member function ‘static pybind11::object& pybind11::dtype::_dtype_from_pep3118()’:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/numpy.h:697:13: error: ‘constinit’ variable ‘imported_obj’ does not have a constant initializer
        697 |             imported_obj;
            |             ^~~~~~~~~~~~
      ```
      
      * Revert "Add `PYBIND11_CONSTINIT`, but it does not work for the current use cases:"
      
      This reverts commit f07b28bda9f91fb723aa898a21c81b6dd6857072.
      
      * Reapply "Add `PYBIND11_CONSTINIT`, but it does not work for the current use cases:"
      
      This reverts commit 36be645758aa82b576d24003808386bec6e55bf9.
      
      * Add Default Member Initializer on `value_storage_` as suggested by @tkoeppe:
      
      https://github.com/pybind/pybind11/pull/4877#issuecomment-1753201342
      
      This fixes the errors reported under commit f07b28bda9f91fb723aa898a21c81b6dd6857072.
      
      * Fix copy-paste-missed-a-change mishap in commit 88cec1152ab5576db19bab95c484672f06f5989a.
      
      * Semi-paranoid placement new (based on https://github.com/pybind/pybind11/pull/4877#discussion_r1350573114).
      
      * Move PYBIND11_CONSTINIT to detail/common.h
      
      * Move code to the right places, rename new class and some variables.
      
      * Fix oversight: update tests/extra_python_package/test_files.py
      
      * Get the name right first.
      
      * Use `std::call_once`, `std::atomic`, following a pattern developed by @tkoeppe
      
      * Make the API more self-documenting (and possibly more easily reusable).
      
      * google-clang-tidy IWYU fixes
      
      * Rewrite comment as suggested by @tkoeppe
      
      * Update test_exceptions.cpp and exceptions.rst
      
      * Fix oversight in previous commit: add `PYBIND11_CONSTINIT`
      
      * Make `get_stored()` non-const for simplicity.
      
      As suggested by @tkoeppe: not seeing any reasonable use in which `get_stored` has to be const.
      
      * Add comment regarding `KeyboardInterrupt` behavior, based heavily on information provided by @jbms.
      
      * Add `assert(PyGILState_Check())` in `gil_scoped_release` ctor (simple & non-simple implementation) as suggested by @EthanSteinberg.
      
      * Fix oversight in previous commit (missing include cassert).
      
      * Remove use of std::atomic, leaving comments with rationale, why it is not needed.
      
      * Rewrite comment re `std:optional` based on deeper reflection (aka 2nd thoughts).
      
      * Additional comment with the conclusion of a discussion under PR #4877.
      
      * https://github.com/pybind/pybind11/pull/4877#issuecomment-1757363179
      
      * Small comment changes suggested by @tkoeppe.
      Ralf W. Grosse-Kunstleve committed
  2. 06 Oct, 2023 1 commit
  3. 03 Oct, 2023 2 commits
  4. 27 Sep, 2023 2 commits
  5. 25 Sep, 2023 1 commit
  6. 15 Sep, 2023 2 commits
  7. 14 Sep, 2023 1 commit
  8. 12 Sep, 2023 3 commits
  9. 07 Sep, 2023 1 commit
  10. 06 Sep, 2023 2 commits
  11. 01 Sep, 2023 1 commit
  12. 31 Aug, 2023 1 commit
  13. 30 Aug, 2023 2 commits
  14. 23 Aug, 2023 1 commit
  15. 15 Aug, 2023 4 commits
    • Remove newlines from docstring signature (#4735) · b9359cea
      * Remove newlines from docstring signature
      
      * Jean/dev (#1)
      
      Replace newlines in arg values with spaces
      
      * style: pre-commit fixes
      
      * Don't use std::find_if for C++ 11 compatibility
      
      * Avoid implicit char to bool conversion
      
      * Test default arguments for line breaks
      
      * style: pre-commit fixes
      
      * Separate Eigen tests
      
      * style: pre-commit fixes
      
      * Fix merge
      
      * Try importing numpy
      
      * Avoid unreferenced variable in catch block
      
      * style: pre-commit fixes
      
      * Update squash function
      
      * Reduce try block
      
      * Additional test cases
      
      * style: pre-commit fixes
      
      * Put statement inside braces
      
      * Move string into function body
      
      * Rename repr for better readability. Make constr explicit.
      
      * Add multiline string default argument test case
      
      * style: pre-commit fixes
      
      * Add std namespace, do not modify string repr
      
      * Test for all space chars, test str repr not modified
      
      ---------
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Jean Elsner committed
    • Fix grammar in functions.rst (#4791) · f47ff328
      The previous sentence had an extra "a" before "several", which isn't right.
      Kenji committed
    • Migrate to readthedocs configuration file v2¶ (#4789) · add281a2
      * Copy of recommded readthedocs configuration file v2
      
      * [ci skip] It is now requirements (not requirements_file)
      Ralf W. Grosse-Kunstleve committed
  16. 10 Aug, 2023 1 commit
  17. 08 Aug, 2023 2 commits
    • Add `py::set_error()`, use in updated `py::exception<>` documentation (#4772) · 690a115d
      * Copy clang 17 compatibility fixes from PR #4762 to a separate PR.
      
      * static py::exception<> -> static py::handle
      
      * Add `py::set_error()` but also try the suggestion of @malfet (https://github.com/pytorch/pytorch/pull/106401#pullrequestreview-1559961407).
      
      * clang 17 compatibility fixes (#4767)
      
      * Copy clang 17 compatibility fixes from PR #4762 to a separate PR.
      
      * Add gcc:13 C++20
      
      * Add silkeh/clang:16-bullseye C++20
      
      * chore(deps): update pre-commit hooks (#4770)
      
      updates:
      - [github.com/psf/black: 23.3.0 → 23.7.0](https://github.com/psf/black/compare/23.3.0...23.7.0)
      - [github.com/astral-sh/ruff-pre-commit: v0.0.276 → v0.0.281](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.276...v0.0.281)
      - [github.com/asottile/blacken-docs: 1.14.0 → 1.15.0](https://github.com/asottile/blacken-docs/compare/1.14.0...1.15.0)
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      
      * docs: Remove upper bound on pybind11 in example pyproject.toml for setuptools (#4774)
      
      * docs: Remove upper bound on pybind11 in example pyproject.toml for setuptools
      
      * Update docs/compiling.rst
      
      ---------
      
      Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
      
      * Provide better type hints for a variety of generic types (#4259)
      
      * Provide better type hints for a variety of generic types
      
      * Makes better documentation
      * tuple, dict, list, set, function
      
      * Move to py::typing
      
      * style: pre-commit fixes
      
      * Update copyright line with correct year and actual author. The author information was copy-pasted from the git log output.
      
      ---------
      
      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>
      
      * Use `py::set_error()` everywhere possible (only one special case, in common.h).
      Overload `py::set_error(py::handle, py::handle)`.
      Change back to `static py::handle exc = ... .release();`
      Deprecate `py::exception<>::operator()`
      
      * Add `PYBIND11_WARNING_DISABLE` for INTEL and MSVC (and sort alphabetically).
      
      * `PYBIND11_WARNING_DISABLE_INTEL(10441)` does not work.
      
      For ICC only, falling back to the recommended `py::set_error()` to keep the testing simple.
      
      It is troublesome to add `--diag-disable=10441` specifically for test_exceptions.cpp, even that is non-ideal because it covers the entire file, not just the one line we need it for, and the value of exercising the trivial deprecated `operator()` on this one extra platform is practically zero.
      
      * Fix silly oversight.
      
      * NVHPC 23.5.0 generates deprecation warnings. They are currently not treated as errors, but falling back to using `py::set_error()` to not have to deal with that distraction.
      
      ---------
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Co-authored-by: Keto D. Zhang <keto.zhang@gmail.com>
      Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
      Co-authored-by: Dustin Spicuzza <dustin@virtualroadside.com>
      Ralf W. Grosse-Kunstleve committed
  18. 04 Aug, 2023 4 commits
  19. 03 Aug, 2023 1 commit
  20. 23 Jul, 2023 1 commit
    • Add command to check for vX.Y.Z tag vs pybind11/_version.py consistency. (#4757) · f3e06028
      * Add command to check for vX.Y.Z tag vs pybind11/_version.py consistency. Piggy-backing hints for converting changelog to release message.
      
      * Simpler way of double-checking version number in sources vs. git tag
      
      * Even simpler.
      
      * Fix rst rendering (hopefully) and remove stray dots.
      
      * [ci skip] Trying more to make GitHub rst renderer show this nicely.
      
      * [ci skip] Fix up RST rendering issues.
      
      Lesson learned:
      
      This is NOT GOOD:
      
      ```
      - Bullet nesting level 1.
          - Bullet nesting level 2.
      ```
      
      This is BETTER:
      
      ```
      - Bullet nesting level 1.
        - Bullet nesting level 2.
      ```
      
      Also consistently adding empty lines between bullet points, to make the .rst
      file easier to read.
      
      Also piggy-backing a few very minor enhancements.
      Ralf W. Grosse-Kunstleve committed
  21. 17 Jul, 2023 2 commits
  22. 15 Jul, 2023 2 commits
  23. 14 Jul, 2023 2 commits