1. 14 Aug, 2024 1 commit
  2. 13 Aug, 2024 27 commits
  3. 26 Jun, 2024 8 commits
  4. 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
  5. 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