1. 26 Jun, 2024 7 commits
  2. 25 Jun, 2024 3 commits
    • feat(types): add support for typing.Literal type (#5192) · 183059f9
      * typevar prototype
      
      * style: pre-commit fixes
      
      * change to NameT
      
      * style: pre-commit fixes
      
      * make string const
      
      * add missing closing bracket
      
      * style: pre-commit fixes
      
      * clean up handle_type_name
      
      * style: pre-commit fixes
      
      * add back missing <
      
      * style: pre-commit fixes
      
      * add back NameT
      
      * try fixed_string
      
      * style: pre-commit fixes
      
      * std::basic_fixed_string
      
      * test c++20
      
      * style: pre-commit fixes
      
      * cleanup
      
      * fix object to typevar conversion
      
      * style: pre-commit fixes
      
      * And CPP20 checks
      
      * style: pre-commit fixes
      
      * add missing cpp20++ check
      
      * style: pre-commit fixes
      
      * Add C++20 check to python
      
      * Fix python if {
      
      * style: pre-commit fixes
      
      * update test name
      
      * style: pre-commit fixes
      
      * remove call on cpp_std
      
      * make field const
      
      * test nontype_template
      
      * update feature check
      
      * update name of guard
      
      * fix try except in test
      
      * fix pre commit
      
      * remove extra semi colon
      
      * except AttributeError
      
      * fix try except in test
      
      * remove const
      
      * Clean up tests
      
      * style: pre-commit fixes
      
      * start string literal
      
      * start int literal
      
      * func declare
      
      * commit clean
      
      * use contextlib.suppres
      
      * resolve stash
      
      * more literal type
      
      * fix annotation name
      
      * stash
      
      * request changes
      
      * lint
      
      * Add comments
      
      * style: pre-commit fixes
      
      * Add support for unions and optionals to be compatible with object
      
      * lint
      
      * remove comment
      
      * Create Literal Type implementation
      
      * clean up
      
      * Update comment
      
      * remove incorrect comment
      
      * rerun CI
      
      * rerun CI
      
      * fix extra line
      
      * lint
      
      * move if defined block
      
      * style: pre-commit fixes
      
      ---------
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Michael Carlstrom committed
    • Add TypeVars / method generics typing (#5167) · aebcd704
      * typevar prototype
      
      * style: pre-commit fixes
      
      * change to NameT
      
      * style: pre-commit fixes
      
      * make string const
      
      * add missing closing bracket
      
      * style: pre-commit fixes
      
      * clean up handle_type_name
      
      * style: pre-commit fixes
      
      * add back missing <
      
      * style: pre-commit fixes
      
      * add back NameT
      
      * try fixed_string
      
      * style: pre-commit fixes
      
      * std::basic_fixed_string
      
      * test c++20
      
      * style: pre-commit fixes
      
      * cleanup
      
      * fix object to typevar conversion
      
      * style: pre-commit fixes
      
      * And CPP20 checks
      
      * style: pre-commit fixes
      
      * add missing cpp20++ check
      
      * style: pre-commit fixes
      
      * Add C++20 check to python
      
      * Fix python if {
      
      * style: pre-commit fixes
      
      * update test name
      
      * style: pre-commit fixes
      
      * remove call on cpp_std
      
      * make field const
      
      * test nontype_template
      
      * update feature check
      
      * update name of guard
      
      * fix try except in test
      
      * fix pre commit
      
      * remove extra semi colon
      
      * except AttributeError
      
      * fix try except in test
      
      * remove const
      
      * Clean up tests
      
      * style: pre-commit fixes
      
      * use contextlib.suppres
      
      * request changes
      
      * lint
      
      * Add comments
      
      * style: pre-commit fixes
      
      * Add support for unions and optionals to be compatible with object
      
      * lint
      
      * remove comment
      
      ---------
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Michael Carlstrom committed
    • docs: prepare for 2.13.0 (#5187) · 9ec64e37
      * docs: prepare for 2.13.0
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * docs: reword cross-compiling entry
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * Update changelog.rst
      
      ---------
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      Henry Schreiner committed
  3. 24 Jun, 2024 1 commit
    • fix: use `std::addressof` in type_caster_base.h (#5189) · a406a62e
      * Add tests only. Fails to build with this error message:
      
      ```
      g++ -o pybind11/tests/test_copy_move.os -c -std=c++17 -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 -DPYBIND11_INTERNALS_VERSION=10000000 -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_copy_move.cpp
      In file included from /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../cast.h:15,
                       from /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../attr.h:14,
                       from /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/class.h:12,
                       from /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/pybind11.h:13,
                       from /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/stl.h:12,
                       from /usr/local/google/home/rwgk/forked/pybind11/tests/test_copy_move.cpp:11:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h: In instantiation of ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast(const itype&, pybind11::return_value_policy, pybind11::handle) [with type = UnusualOpRef; itype = UnusualOpRef]’:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../cast.h:1230:37:   required from ‘pybind11::object pybind11::cast(T&&, return_value_policy, handle) [with T = const UnusualOpRef&; typename std::enable_if<(! std::is_base_of<detail::pyobject_tag, typename std::remove_reference<_Tp>::type>::value), int>::type <anonymous> = 0]’
      /usr/local/google/home/rwgk/forked/pybind11/tests/test_copy_move.cpp:162:80:   required from here
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1110:20: error: no matching function for call to ‘pybind11::detail::type_caster_base<UnusualOpRef>::cast(const UnusualOpRef::NonTrivialType, pybind11::return_value_policy&, pybind11::handle&)’
       1110 |         return cast(&src, policy, parent);
            |                ~~~~^~~~~~~~~~~~~~~~~~~~~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1105:19: note: candidate: ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast(const itype&, pybind11::return_value_policy, pybind11::handle) [with type = UnusualOpRef; itype = UnusualOpRef]’
       1105 |     static handle cast(const itype &src, return_value_policy policy, handle parent) {
            |                   ^~~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1105:37: note:   no known conversion for argument 1 from ‘const UnusualOpRef::NonTrivialType’ {aka ‘const std::shared_ptr<int>’} to ‘const pybind11::detail::type_caster_base<UnusualOpRef>::itype&’ {aka ‘const UnusualOpRef&’}
       1105 |     static handle cast(const itype &src, return_value_policy policy, handle parent) {
            |                        ~~~~~~~~~~~~~^~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1113:19: note: candidate: ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast(itype&&, pybind11::return_value_policy, pybind11::handle) [with type = UnusualOpRef; itype = UnusualOpRef]’
       1113 |     static handle cast(itype &&src, return_value_policy, handle parent) {
            |                   ^~~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1113:32: note:   no known conversion for argument 1 from ‘const UnusualOpRef::NonTrivialType’ {aka ‘const std::shared_ptr<int>’} to ‘pybind11::detail::type_caster_base<UnusualOpRef>::itype&&’ {aka ‘UnusualOpRef&&’}
       1113 |     static handle cast(itype &&src, return_value_policy, handle parent) {
            |                        ~~~~~~~~^~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1142:19: note: candidate: ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast(const itype*, pybind11::return_value_policy, pybind11::handle) [with type = UnusualOpRef; itype = UnusualOpRef]’
       1142 |     static handle cast(const itype *src, return_value_policy policy, handle parent) {
            |                   ^~~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1142:37: note:   no known conversion for argument 1 from ‘const UnusualOpRef::NonTrivialType’ {aka ‘const std::shared_ptr<int>’} to ‘const pybind11::detail::type_caster_base<UnusualOpRef>::itype*’ {aka ‘const UnusualOpRef*’}
       1142 |     static handle cast(const itype *src, return_value_policy policy, handle parent) {
            |                        ~~~~~~~~~~~~~^~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h: In instantiation of ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast(itype&&, pybind11::return_value_policy, pybind11::handle) [with type = UnusualOpRef; itype = UnusualOpRef]’:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../cast.h:1230:37:   required from ‘pybind11::object pybind11::cast(T&&, return_value_policy, handle) [with T = UnusualOpRef; typename std::enable_if<(! std::is_base_of<detail::pyobject_tag, typename std::remove_reference<_Tp>::type>::value), int>::type <anonymous> = 0]’
      /usr/local/google/home/rwgk/forked/pybind11/tests/test_copy_move.cpp:163:74:   required from here
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1114:20: error: no matching function for call to ‘pybind11::detail::type_caster_base<UnusualOpRef>::cast(UnusualOpRef::NonTrivialType, pybind11::return_value_policy, pybind11::handle&)’
       1114 |         return cast(&src, return_value_policy::move, parent);
            |                ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1105:19: note: candidate: ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast(const itype&, pybind11::return_value_policy, pybind11::handle) [with type = UnusualOpRef; itype = UnusualOpRef]’
       1105 |     static handle cast(const itype &src, return_value_policy policy, handle parent) {
            |                   ^~~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1105:37: note:   no known conversion for argument 1 from ‘UnusualOpRef::NonTrivialType’ {aka ‘std::shared_ptr<int>’} to ‘const pybind11::detail::type_caster_base<UnusualOpRef>::itype&’ {aka ‘const UnusualOpRef&’}
       1105 |     static handle cast(const itype &src, return_value_policy policy, handle parent) {
            |                        ~~~~~~~~~~~~~^~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1113:19: note: candidate: ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast(itype&&, pybind11::return_value_policy, pybind11::handle) [with type = UnusualOpRef; itype = UnusualOpRef]’
       1113 |     static handle cast(itype &&src, return_value_policy, handle parent) {
            |                   ^~~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1113:32: note:   no known conversion for argument 1 from ‘UnusualOpRef::NonTrivialType’ {aka ‘std::shared_ptr<int>’} to ‘pybind11::detail::type_caster_base<UnusualOpRef>::itype&&’ {aka ‘UnusualOpRef&&’}
       1113 |     static handle cast(itype &&src, return_value_policy, handle parent) {
            |                        ~~~~~~~~^~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1142:19: note: candidate: ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast(const itype*, pybind11::return_value_policy, pybind11::handle) [with type = UnusualOpRef; itype = UnusualOpRef]’
       1142 |     static handle cast(const itype *src, return_value_policy policy, handle parent) {
            |                   ^~~~
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:1142:37: note:   no known conversion for argument 1 from ‘UnusualOpRef::NonTrivialType’ {aka ‘std::shared_ptr<int>’} to ‘const pybind11::detail::type_caster_base<UnusualOpRef>::itype*’ {aka ‘const UnusualOpRef*’}
       1142 |     static handle cast(const itype *src, return_value_policy policy, handle parent) {
            |                        ~~~~~~~~~~~~~^~~
      ```
      
      * Replace `&src` with `std::addressof(src)` to fix the error building the added tests.
      
      * Fix accident (not sure how the `const` slipped in here when transferring the diff from pybind11k).
      Ralf W. Grosse-Kunstleve committed
  4. 22 Jun, 2024 1 commit
    • feat: remove Python 3.6 support (#5177) · f1a2e03d
      * Change Python version guard: PYTHON < 3.7 IS UNSUPPORTED.
      
      * Replace or remove Python 3.6 jobs.
      
      * Move appveyor to Python 3.8
      
      * Change `[tool.pylint]` `master.py-version` from `3.6` to `3.8`
      
      * Change `[tool.pylint]` `master.py-version` to `3.7`
      
      * Remove `centos:7` job; Change almalinux:8 job to use Python 3.8
      
      * Try 🐍 3.8 • ubuntu-20.04 • x64 without `-DCMAKE_CXX_FLAGS="-D_=1"`
      
      * Update setup.cfg as suggested by @henryiii
      
      * Try running `cmake --build . --target cpptest` on all platforms (`standard` job).
      
      * Disable deadsnakes jobs entirely.
      
      * Apply PR #5179: Add Python 3.10, 3.11, 3.12 to win32 job matrix.
      
      * Add back `-DCMAKE_CXX_FLAGS="-D_=1"` but do not install boost in that case.
      
      * PY_VERSION_HEX < 3.7 cleanup pass: include/pybind11
      
      * WITH_THREAD cleanup pass: include/pybind11
      
      * Undo incorrect change.
      
      * Revert "Disable deadsnakes jobs entirely."
      
      This reverts commit bbcd0087b2d52e0130f96792dd5dd03704280a57.
      
      * WITH_THREAD cleanup pass: tests/
      
      * Change Python version guard in pybind11/__init__.py: pybind11 does not support Python < 3.7.
      
      * Misc cleanup pass
      
      * chore: use future imports
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * Update tests/test_numpy_array.py
      
      * Update test_numpy_array.py
      
      ---------
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
      Ralf W. Grosse-Kunstleve committed
  5. 21 Jun, 2024 1 commit
  6. 18 Jun, 2024 3 commits
  7. 17 Jun, 2024 1 commit
  8. 15 Jun, 2024 2 commits
    • Add type[T] support to typing.h (#5166) · 7c4ac91d
      * add type[T]
      
      * style: pre-commit fixes
      
      * fix merge
      
      ---------
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Michael Carlstrom committed
    • Add `Union` and `Optional` to typing.h (#5165) · 68405a11
      * add type unions and optionals
      
      * add type inheritance
      
      * style: pre-commit fixes
      
      * switch to inheriting from object
      
      * style: pre-commit fixes
      
      * fix text case
      
      * style: pre-commit fixes
      
      * fix bind call
      
      * fix function name
      
      * add std::move for older code
      
      * remove std::move
      
      * move away from object creation
      
      * style: pre-commit fixes
      
      ---------
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Michael Carlstrom committed
  9. 11 Jun, 2024 1 commit
    • Fix refcount bug involving trampoline functions with `PyObject *` return type. (#5156) · ab955f15
      * Transfer diff from pybind11k fork as-is. New tests are still missing.
      
      * Add `PYBIND11_WARNING_DISABLE_MSVC(4127)` into `PYBIND11_OVERRIDE_IMPL` macro.
      
      * Add test_trampoline_with_pyobject_ptr_return()
      
      * Resolve clang-tidy error: use auto when initializing with a template cast to avoid duplicating the type name [modernize-use-auto,-warnings-as-errors]
      
      * Disabled checking refcount when building with PyPy.
      
      * Clang 3.6, 3.7, 3.9 compatibility.
      
      ```
      /__w/pybind11/pybind11/tests/test_type_caster_pyobject_ptr.cpp:23:13: error: definition of implicit copy constructor for 'WithPyObjectPtrReturn' is deprecated because it has a user-declared destructor [-Werror,-Wdeprecated]
          virtual ~WithPyObjectPtrReturn() = default;
                  ^
      ```
      
      * Minor clean-up of production code changes.
      
      * Add missing `override` (to resolve clang-tidy error).
      
      * Move PYBIND11_WARNING_POP for a better clang-format outcome.
      Ralf W. Grosse-Kunstleve committed
  10. 07 Jun, 2024 1 commit
  11. 06 Jun, 2024 2 commits
  12. 30 May, 2024 2 commits
  13. 28 May, 2024 2 commits
    • fix: Python 3.13t with GIL (#5139) · ae6432b8
      * ci: try Python 3.13t
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * fix: support Python 3.13t
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * fix: patch PyPy
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * tests: one more int cast
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * tests: cleanup
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * refactor: use named constant in tests for immortal refcounts
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * docs: move comment about free threaded Python
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      ---------
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      Henry Schreiner committed
    • fix: added check on iterator end position (#5129) · a5b9e50f
      * Added check on iterator end position
      
      * Always use assert without conditional check
      
      * Addressing code review comments
      
      * style: pre-commit fixes
      
      * Remove assert and throw
      
      * Changed style slightly
      
      ---------
      
      Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Cliff Burdick committed
  14. 27 May, 2024 1 commit
  15. 24 May, 2024 2 commits
    • fix: support Python 3.13.0b1 (PEP 667 fix) (#5127) · 4d0fcedc
      * ci: add Python 3.13
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * tests: run the gc for 3.13+
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * Revert "tests: run the gc for 3.13+"
      
      This reverts commit fe8a3ce3d133f69582e8244b737456ff57559e55.
      
      * ci: drop macos ARM for now, need pin updates
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      * fix: use Python 3.13 API if on 3.13
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      
      ---------
      
      Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
      Henry Schreiner committed
  16. 23 May, 2024 1 commit
    • --- (#5130) · b07fddb2
      updated-dependencies:
      - dependency-name: requests
        dependency-type: indirect
      ...
      
      Signed-off-by: dependabot[bot] <support@github.com>
      Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      dependabot[bot] committed
  17. 10 May, 2024 2 commits
  18. 06 May, 2024 5 commits
  19. 09 Apr, 2024 1 commit
  20. 02 Apr, 2024 1 commit