Ralf W. Grosse-Kunstleve
fc5678b08b
Add value_and_holder loaded_v_h;
member (set, but currently unused).
2024-07-03 11:26:04 -07:00
Ralf W. Grosse-Kunstleve
2837df178e
Rename holder
to shared_ptr_holder
to improve readability. No functional changes.
2024-07-03 10:49:17 -07:00
Ralf W. Grosse-Kunstleve
17c0354050
copyable_holder_caster<type, std::shared_ptr<type>>
: split load_value_shared_ptr()
, load_value_smart_holder()
(the latter just throws right now)
2024-07-03 10:30:14 -07:00
Ralf W. Grosse-Kunstleve
556f28a1a4
Add smart_holder_from_shared_ptr()
specialization for std::shared_ptr<T const>
...
Resolves one `// BAKEIN_WIP: Better Const2Mutbl`.
2024-07-03 07:41:48 -07:00
Ralf W. Grosse-Kunstleve
5957133b6e
Add smart_holder_from_unique_ptr()
specialization for std::unique_ptr<T const, D>
...
Enables removing:
4 BAKEIN_BREAK in test_class_sh_basic.cpp
2 BAKEIN_BREAK in test_class_sh_basic.py
2024-07-03 07:38:18 -07:00
Ralf W. Grosse-Kunstleve
7a6d30ca58
Fix rtrn_shmp
, rtrn_shmp
by transferring smart_holder_from_shared_ptr()
functionality from smart_holder branch.
2024-07-02 18:25:01 -07:00
Ralf W. Grosse-Kunstleve
12b01305de
Add no-op pybind11/smart_holder.h, 21 BAKEIN_BREAK in test_class_sh_basic.cpp, 26 BAKEIN_BREAK in test_class_sh_basic.py
...
```
========================================================= short test summary info ==========================================================
SKIPPED [1] test_class_sh_basic.py:59: got empty parameter set ('pass_f', 'rtrn_f', 'expected'), function test_load_with_rtrn_f at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:58
SKIPPED [1] test_class_sh_basic.py:70: got empty parameter set ('pass_f', 'rtrn_f', 'regex_expected'), function test_deleter_roundtrip at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:69
SKIPPED [1] test_class_sh_basic.py:99: got empty parameter set ('pass_f', 'rtrn_f', 'expected'), function test_pass_unique_ptr_disowns at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:98
SKIPPED [1] test_class_sh_basic.py:120: got empty parameter set ('pass_f', 'rtrn_f'), function test_cannot_disown_use_count_ne_1 at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:119
SKIPPED [1] test_class_sh_basic.py:145: BAKEIN_BREAK: AttributeError unique_ptr_roundtrip
SKIPPED [1] test_class_sh_basic.py:157: unconditional skip
SKIPPED [1] test_class_sh_basic.py:169: got empty parameter set ('pass_f', 'rtrn_f', 'moved_out', 'moved_in'), function test_unique_ptr_consumer_roundtrip at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:168
SKIPPED [1] test_class_sh_basic.py:210: BAKEIN_BREAK: AttributeError args_unique_ptr
====================================================== 17 passed, 8 skipped in 0.04s =======================================================```
2024-07-02 14:43:23 -07:00
Ralf W. Grosse-Kunstleve
c92b4d86da
Insert PYBIND11_SMART_HOLDER_PADDING (with the idea to catch undefined behavior sooner rather than later).
2024-07-02 10:57:25 -07:00
Ralf W. Grosse-Kunstleve
b0cfeec63c
Merge branch 'master' into bakein
2024-07-01 21:51:36 -07:00
Ralf W. Grosse-Kunstleve
ae08f51e38
Start pybind11/detail/smart_holder_type_caster_support.h, move unique_ptr_to_python() there, add smart_holder_from_unique_ptr()
2024-07-01 15:52:50 -07:00
Ralf W. Grosse-Kunstleve
6ff547e18a
Introduce type_caster_base<>::unique_ptr_to_python()
2024-07-01 12:39:45 -07:00
Ralf W. Grosse-Kunstleve
5518e01562
Copy-paste-and-specialize copyable_holder_caster<shared_ptr>, move_only_holder_caster<unique_ptr>. No functional changes.
2024-07-01 11:47:34 -07:00
Ralf W. Grosse-Kunstleve
e4d0a55575
Remove is_holder_type<unique_ptr>
2024-07-01 11:18:56 -07:00
Ralf W. Grosse-Kunstleve
381fdc54e9
Bring in smart_holder_from_unique_ptr(), smart_holder_from_shared_ptr() from smart_holder_type_casters.h (with this test_wip builds and runs successfully).
2024-06-30 11:32:10 -07:00
Ralf W. Grosse-Kunstleve
e8cd42953e
pybind11/detail/init.h: replace type_uses_smart_holder_type_caster<> with is_same<Holder<Class>, smart_holder> (still does not build).
2024-06-30 11:22:41 -07:00
Ralf W. Grosse-Kunstleve
03e6a93c73
Remove stray line (probably from an accident/oversight a long time ago; harmless).
2024-06-30 10:03:58 -07:00
Ralf W. Grosse-Kunstleve
dfaa49bb21
Bring in pybind11/detail/class.h, init.h as-is from smart_holder branch (does not build).
2024-06-30 10:00:33 -07:00
Michael Carlstrom
d805e9967f
feat(types) Adds special Case for empty C++ tuple type annotation ( #5214 )
...
* add special case and unit test
* add newline
2024-06-30 09:52:37 -07:00
Ralf W. Grosse-Kunstleve
144ae8be51
Also bring in try_initialization_using_shared_from_this() from smart_holder_type_casters.h. With this test_wip builds and succeeds.
2024-06-29 14:00:34 -07:00
Ralf W. Grosse-Kunstleve
fbf88cb298
Bring smart_holder init_instance_for_type<> directly into the init_instance() specialization. Also bring in dynamic_raw_ptr_cast_if_possible.h. Does not build because try_initialization_using_shared_from_this() is still missing.
2024-06-29 13:53:50 -07:00
Ralf W. Grosse-Kunstleve
00a91571fb
fix build failure by introducing init_instance() specialization for smart_holder (test fails)
2024-06-29 12:13:19 -07:00
Ralf W. Grosse-Kunstleve
97a3a49678
make smart_holder the default holder (baby step; does not build)
2024-06-29 12:07:28 -07:00
Ralf W. Grosse-Kunstleve
8b0b377fc1
Bring in smart_holder_poc.h from smart_holder branch (baby step).
2024-06-28 23:02:14 -07:00
wenqing
51c2aa16de
Fixed a compilation error with gcc 14 ( #5208 )
2024-06-28 07:12:32 -07:00
Michael Carlstrom
08f946a431
fix: add guard for GCC <10.3 on C++20 ( #5205 )
...
* Update CI
* update define guard
* style: pre-commit fixes
* updated define guard
* style: pre-commit fixes
* update guard
* testing new guards
* update guards
* surely this time
* style: pre-commit fixes
* Define PYBIND11_TYPING_H_HAS_STRING_LITERAL to avoid repeating a complex expression.
---------
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>
2024-06-27 22:20:28 -07:00
Michael Carlstrom
4bd538a40a
feat(types): add support for Typing.Callable Special Case ( #5202 )
...
* Add special case
* linty
2024-06-26 16:34:06 -04:00
Sam Gross
2e35470cff
fix: use manual padding of instance_map_shard ( #5200 )
...
* Use manual padding of instance_map_shard.
The alignas(64) specifier requires aligned allocation, which is not
available on macOS when targeting versions before 10.14.
* Add 'see #5200 '
* Update include/pybind11/detail/internals.h
* Update include/pybind11/detail/internals.h
---------
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
2024-06-26 15:46:46 -04:00
Henry Schreiner
895e657220
chore: back to work
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-06-26 00:42:54 -04:00
Henry Schreiner
0c69e1eb21
chore: prepare for 2.13.0 ( #5198 )
...
* chore: prepare for 2.13.0
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Update changelog.rst
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-06-25 23:51:27 -04:00
Michael Carlstrom
2be85c6041
feat(types): adds support for TypeGuard and TypeIs ( #5194 )
...
* Adds support for TypeGuard and TypeIs
* style: pre-commit fixes
---------
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-06-25 22:53:15 -04:00
Michael Carlstrom
26281c7986
feat(types): adds support for Never and NoReturn from python Typing ( #5193 )
...
* Adds support for Never and NoReturn
* lint
2024-06-25 21:10:25 -04:00
Michael Carlstrom
183059f9a4
feat(types): add support for typing.Literal type ( #5192 )
...
* 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>
2024-06-25 17:57:34 -04:00
Michael Carlstrom
aebcd704d2
Add TypeVars / method generics typing ( #5167 )
...
* 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>
2024-06-25 16:25:40 -04:00
Ralf W. Grosse-Kunstleve
a406a62e5b
fix: use std::addressof
in type_caster_base.h ( #5189 )
...
* 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).
2024-06-24 08:59:55 -07:00
Ralf W. Grosse-Kunstleve
f1a2e03d19
feat: remove Python 3.6 support ( #5177 )
...
* 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 bbcd0087b2
.
* 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>
2024-06-22 00:55:00 -04:00
Sam Gross
baa540ec34
fix: support free-threaded CPython with GIL disabled ( #5148 )
...
* Support free-threaded CPython (PEP 703)
Some additional locking is added in the free-threaded build when
`Py_GIL_DISABLED` is defined:
- Most accesses to internals are protected by a single mutex
- The registered_instances uses a striped lock to improve concurrency
Pybind11 modules can indicate support for running with the GIL disabled
by calling `set_gil_not_used()`.
* refactor: use PYBIND11_MODULE (#11 )
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Address code review
* Suppress MSVC warning
* Changes from review
* style: pre-commit fixes
* `py::mod_gil_not_used()` suggestion.
* Update include/pybind11/pybind11.h
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
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>
2024-06-18 13:54:38 -07:00
Michael Carlstrom
7c4ac91d75
Add type[T] support to typing.h ( #5166 )
...
* 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>
2024-06-15 06:25:43 -07:00
Michael Carlstrom
68405a1141
Add Union
and Optional
to typing.h ( #5165 )
...
* 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>
2024-06-14 21:16:26 -07:00
Ralf W. Grosse-Kunstleve
ab955f158c
Fix refcount bug involving trampoline functions with PyObject *
return type. ( #5156 )
...
* 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.
2024-06-11 14:00:52 -07:00
Thierry Coppey
35ff42b56e
Add a pybind function to clear a list. ( #5153 )
...
* Add a pybing function to clear a list.
* Add required error handling.
* Add `/* py-non-const */` as suggested by @Skylion007
---------
Co-authored-by: Ralf W. Grosse-Kunstleve <rwgk@google.com>
2024-06-07 13:54:33 -07:00
Henry Schreiner
ae6432b817
fix: Python 3.13t with GIL ( #5139 )
...
* 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>
2024-05-28 09:07:59 -04:00
Cliff Burdick
a5b9e50f68
fix: added check on iterator end position ( #5129 )
...
* 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>
2024-05-28 01:49:19 -04:00
Henry Schreiner
ce08e37042
fix: handle NULL correctly ( #5145 )
2024-05-27 15:03:51 -04:00
Henry Schreiner
4d0fcedc26
fix: support Python 3.13.0b1 (PEP 667 fix) ( #5127 )
...
* 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 fe8a3ce3d1
.
* 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>
2024-05-24 11:00:30 -04:00
pre-commit-ci[bot]
f33f6afb66
chore(deps): update pre-commit hooks ( #5084 )
...
* chore(deps): update pre-commit hooks
updates:
- [github.com/pre-commit/mirrors-clang-format: v17.0.6 → v18.1.2](https://github.com/pre-commit/mirrors-clang-format/compare/v17.0.6...v18.1.2 )
- [github.com/astral-sh/ruff-pre-commit: v0.2.0 → v0.3.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.2.0...v0.3.5 )
- [github.com/pre-commit/mirrors-mypy: v1.8.0 → v1.9.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.8.0...v1.9.0 )
- [github.com/Lucas-C/pre-commit-hooks: v1.5.4 → v1.5.5](https://github.com/Lucas-C/pre-commit-hooks/compare/v1.5.4...v1.5.5 )
- [github.com/sirosen/texthooks: 0.6.4 → 0.6.6](https://github.com/sirosen/texthooks/compare/0.6.4...0.6.6 )
- [github.com/shellcheck-py/shellcheck-py: v0.9.0.6 → v0.10.0.1](https://github.com/shellcheck-py/shellcheck-py/compare/v0.9.0.6...v0.10.0.1 )
- [github.com/PyCQA/pylint: v3.0.3 → v3.1.0](https://github.com/PyCQA/pylint/compare/v3.0.3...v3.1.0 )
- [github.com/python-jsonschema/check-jsonschema: 0.28.0 → 0.28.1](https://github.com/python-jsonschema/check-jsonschema/compare/0.28.0...0.28.1 )
* style: pre-commit fixes
* fix(types): correction for better typing
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-04-02 11:14:08 -04:00
Henry Schreiner
7af193e7e4
chore: get back to work
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-03-27 20:03:39 -04:00
Henry Schreiner
6b5674f36d
chore: prepare 2.12.0 ( #5070 )
...
* chore: prepare 2.12.0
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* docs: more info on numpy 2
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* docs: mention NumPy 2 in README
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* docs: add release date
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* docs: add 4955
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Update changelog.rst
* docs: address review comments
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-03-27 18:09:06 -04:00
Matthias Volk
67c9c5687b
fix: fully qualify usages of concat to protect against ADL ( #4955 )
...
* Call concat with proper namespace in cast.h
* Apply suggestions from code review
* tests: add test for ADL on concat
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* fix: fully qualify all usages of concat
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
2024-03-27 16:51:03 -04:00
Ralf W. Grosse-Kunstleve
0efff79f01
Bug fixes: Add missing handle_type_name
specializations. ( #5073 )
...
* Transfer bug fixes from #4888 wholesale. Full test coverage for all fixes is still missing.
* Add cmake option(PYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION) and use in some tests.
2024-03-27 12:39:05 -07:00
Sebastian Berg
705efccecd
feat: make numpy.h
compatible with both NumPy 1.x and 2.x ( #5050 )
...
* API: Make `numpy.h` compatible with both NumPy 1.x and 2.x
* TST: Update numpy dtype flags test to not covert flags to char
* API: Add `numpy2.h` instead and make `numpy.h` safe
This means that users of `numpy.h` cannot be broken, but need to
update to `numpy2.h` if they want to compile for NumPy 2.
Using Macros simply and didn't bother to try to remove unnecessary
code paths.
* API: Rather than `numpy2.h` use a define for the user.
* Thread `PYBIND11_NUMPY2_SUPPORT` through things and try to adept test matrix
* Small fixups (shouldn't matter)?
* Fixup. Does upgrading scipy help? (it shouldn't?)
(Some other small fixup)
* Use NumPy 2 nightlies for ubuntu-latest job also
* BUG: Fix numpy.bool check
* TST: Fix complexwarning
* BUG: Fix the fact that only the 50 slot is filled with the copy alias
(There were 3 functions all doing the same, only this slot survived 2.x)
* TST: One more test tweak
* TST: Use "long" name for long, since it changed on windows
* TST: Apparently we didn't always have ulong, so just use `L`
* TST: Enforce dtype='l' for test as default isn't long anymore on windows
* Rename macro and invert logic to PYBIND11_NUMPY_1_ONLY
* PYBIND11_INTERNAL_NUMPY_1_ONLY_DETECTED
* Test and code comment expansion
* CI: Use pre-releases of numpy/scipy from pip via explicit version
* CI: NumPy 2 only available on almalinux (as it is Python >=3.9)
* MAINT: Match name more exactly and adopt error phrasing
* MAINT: Pushed early, move helper to be private member
* fix error message compilation when using NumPy 1.x-only backcompat
* silence name shadowing warning
* chore: minor optimization
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Ralf W. Grosse-Kunstleve <rwgk@google.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-03-26 18:20:11 -04:00