1. 05 Nov, 2023 1 commit
  2. 04 Nov, 2023 1 commit
  3. 01 Nov, 2023 1 commit
  4. 27 Oct, 2023 3 commits
  5. 24 Oct, 2023 1 commit
  6. 23 Oct, 2023 1 commit
  7. 21 Oct, 2023 1 commit
    • Workaround NVCC parse failure in `cast_op` (#4893) · 3414c56b
      * Workaround NVCC parse failure in `cast_op`
      
      There is a bug in some CUDA versions (observed in CUDA 12.1 and 11.7 w/ GCC 12.2),
      that makes `cast_op` fail to compile:
        `cast.h:45:120: error: expected template-name before ‘<’ token`
      
      Defining the nested type as an alias and using it allows this to work
      without any change in semantics.
      
      Fixes #4606
      
      * style: pre-commit fixes
      
      * Add comments to result_t referencing PR
      
      ---------
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Alexander Grund committed
  8. 20 Oct, 2023 1 commit
  9. 17 Oct, 2023 1 commit
  10. 16 Oct, 2023 1 commit
    • Update pytest to version 7.2.0 (which removes their dependency on py) (#4880) · 0cbd92ba
      * Update pytest (which removes their dependency on py)
      
      The py library through 1.11.0 for Python allows remote attackers to conduct a ReDoS (Regular expression Denial of Service) attack via a Subversion repository with crafted info data, because the InfoSvnCommand argument is mishandled.
      
      The particular codepath in question is the regular expression at py._path.svnurl.InfoSvnCommand.lspattern and is only relevant when dealing with subversion (svn) projects. Notably the codepath is not used in the popular pytest project. The developers of the pytest package have released version 7.2.0 which removes their dependency on py. Users of pytest seeing alerts relating to this advisory may update to version 7.2.0 of pytest to resolve this issue. See https://github.com/pytest-dev/py/issues/287#issuecomment-1290407715 for additional context.
      
      * Added conditions so that we keep using 7.0.0 on python 3.6
      Pablo Speciale committed
  11. 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
  12. 06 Oct, 2023 1 commit
  13. 03 Oct, 2023 2 commits
  14. 27 Sep, 2023 2 commits
  15. 25 Sep, 2023 1 commit
  16. 15 Sep, 2023 2 commits
  17. 14 Sep, 2023 1 commit
  18. 12 Sep, 2023 3 commits
  19. 07 Sep, 2023 1 commit
  20. 06 Sep, 2023 2 commits
  21. 01 Sep, 2023 1 commit
  22. 31 Aug, 2023 1 commit
  23. 30 Aug, 2023 2 commits
  24. 23 Aug, 2023 1 commit
  25. 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
  26. 10 Aug, 2023 1 commit
  27. 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