Henry Schreiner
d7d782c5e0
fix(regression): support embedded submodule ( #5650 )
...
* tests: add test for embedded submodule
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* tests: adjust
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* Update test_interpreter.cpp
* Update test_interpreter.cpp
* Update test_interpreter.cpp
* Update test_interpreter.cpp
* Update pybind11.h
* fix: end instead of endif
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* Update include/pybind11/pybind11.h
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-05-12 05:32:36 -04:00
Xuehai Pan
9a191c245d
Fix typos for FindPython compact mode: Python_LIRAR{Y,IES} -> Python_LIBRAR{Y,IES} ( #5653 )
2025-05-10 23:13:17 -04:00
Ralf W. Grosse-Kunstleve
c125cc789c
Collect all #define PYBIND11_HAS_... in pybind11/detail/common.h ( #5647 )
2025-05-08 23:46:01 -07:00
Xuehai Pan
002c05b17e
fix: handle MSVC warning C4866: compiler may not enforce left-to-right evaluation order ( #5641 )
2025-05-06 21:40:54 -04:00
Tobias Leibner
a265a4cf31
fix: define _DEBUG macro to 1 on redefinition ( #5639 )
...
According to the msvc documentation, the macro should be defined to 1:
https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros
2025-05-06 21:36:42 -04:00
pre-commit-ci[bot]
099583c5fb
chore(deps): update pre-commit hooks ( #5642 )
2025-05-06 21:01:37 -04:00
Ralf W. Grosse-Kunstleve
c630e22c1c
Add static_asserts to enforce that py::smart_holder is combined with py::trampoline_self_life_support ( #5633 )
...
* Strictly enforce: trampoline must inherit from trampoline_self_life_support when used in combination with smart_holder
* Simplify test_class_sh_trampoline_basic.cpp,py (only one Abase is needed now)
* Replace obsolete sophisticated `throw value_error()` with a simple `assert()`
* Strictly enforce: trampoline should inherit from trampoline_self_life_support only if used in combination with smart_holder
* Resolve clang-tidy error
```
/__w/pybind11/pybind11/tests/test_class_sh_trampoline_basic.cpp:35:46: error: the parameter 'obj' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]
35 | int AddInCppSharedPtr(std::shared_ptr<Abase> obj, int other_val) {
| ^
| const &
```
* Disable new static_assert if PYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE is defined.
2025-04-30 22:12:13 -07:00
Robert Haschke
c7f3460f18
Fix gcc compiler warnings ( #5523 )
...
* CI: Fail on any warnings with clang 18
* CI: Fail on any warnings with gcc 13
* Fix cmake's try_compile warning
* Guard redundant declarations
* ci.yml: fix syntax error
* Use PYBIND11_WARNING macros
* Fix more redundant declarations
... introduced with merge of smart_holder branch
2025-04-30 10:29:00 -07:00
dependabot[bot]
d3fee42905
chore(deps): bump astral-sh/setup-uv from 5 to 6 in the actions group ( #5632 )
...
Bumps the actions group with 1 update: [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv ).
Updates `astral-sh/setup-uv` from 5 to 6
- [Release notes](https://github.com/astral-sh/setup-uv/releases )
- [Commits](https://github.com/astral-sh/setup-uv/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 11:28:07 -07:00
Bryn Lloyd
bc4a66dff0
fix: provide useful behavior of default py::slice ( #5620 )
...
* Change behavior of default py::slice
* make clang-tidy happy
* Update tests/test_pytypes.py
---------
Co-authored-by: Bryn Lloyd <12702862+dyollb@users.noreply.github.com >
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com >
2025-04-16 18:42:34 -04:00
Bryn Lloyd
5c498583cc
fix: upgrade 20.04 runners to 22.04 (fix for ICC, NVHPC) ( #5621 )
...
* Upgrade the deprecated 20.04 runners to 22.04 (ICC, NVHPC)
* fix ICC compile error
---------
Co-authored-by: Bryn Lloyd <12702862+dyollb@users.noreply.github.com >
2025-04-16 08:13:23 -04:00
Bryn Lloyd
223e2e9da2
Fix missing pythonic type hints for native_enum ( #5619 )
...
* fix missing pythonic type hints for native_enum
* Fix __qualname__ in native_enum
* Rename `enum class native` → `func_sig_rendering`. Add to `ENUM_TYPES_AND_MEMBERS`. Move new code around to fit in more organically.
"native" is used in so many places here, it would be very difficult to pin-point where the specific enum type is used.
Similarly, "value" is difficult to pin-point. Changed to "nested_value".
---------
Co-authored-by: Bryn Lloyd <12702862+dyollb@users.noreply.github.com >
Co-authored-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com >
2025-04-15 21:38:15 -07:00
Bryn Lloyd
3c586340fb
Add class doc string to native_enum ( #5617 )
...
* add class doc string to native_enum
* adapt doc argument name
* fix test, make class enum doc None by default
* fix other python versions?
* make clang-tidy happy
* rename 'enum_doc' to 'class_doc'
* update documentation
* [skip ci] Polish changed documentation (mostly done by ChatGPT).
---------
Co-authored-by: Bryn Lloyd <12702862+dyollb@users.noreply.github.com >
Co-authored-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com >
2025-04-14 23:19:06 -07:00
Henry Schreiner
b3bb31ca51
ci: work on speeding up further ( #5613 )
...
* ci: work on speeding up further
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* chore: move uv's index-strategy to pyproject.toml
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* Update .github/workflows/ci.yml
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-04-14 17:25:32 -04:00
Ralf W. Grosse-Kunstleve
cbcc23855e
Factor out pybind11/gil_simple.h ( #5614 )
...
* Factor out pybind11/gil_simple.h
* Remove disarm() member functions in pybind11/gil_simple.h
2025-04-13 19:48:32 -07:00
Tim Ohliger
ee04df0d02
Updated STL casters and py::buffer to use collections.abc ( #5566 )
...
* Updated STL type hints use support collections.abc
* Updated array_caster to match numpy/eigen typing.Annotated stlye
* Added support for Mapping, Set and Sequence derived from collections.abc.
* Fixed merge of typing.SupportsInt in new tests
* Integrated collections.abc checks into convertible check functions.
* Changed type hint of py::buffer to collections.abc.Buffer
* Changed convertible check function names
* Added comments to convertible check functions
* Removed checks for methods that are already required by the abstract base class
* Improved mapping caster test using more compact a1b2c3 variable
* Renamed and refactored sequence, mapping and set test classes to reuse implementation
* Added tests for mapping and set casters for noconvert mode
* Added tests for sequence caster for noconvert mode
2025-04-13 19:47:19 -07:00
Ralf W. Grosse-Kunstleve
f3c1913827
Remove obsolete "E501" line in pyproject.toml ( #5539 )
...
* [skip ci] Add "E5" to [tool.ruff.lint] extend-select, remove obsolete ignore E501
* [skip ci] Remove "E5" again.
2025-04-10 23:09:02 -07:00
Henry Schreiner
662a88cbc1
ci: speed up ci a bit by thinning out matrix ( #5602 )
...
* ci: speed up ci a bit by thinning out matrix
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* Update configure.yml
* Update configure.yml
* Update configure.yml
* ci: drop third build
* ci: fix minor issues
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* ci: trim a bit more
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-04-10 23:21:57 -04:00
pre-commit-ci[bot]
a2951abbec
chore(deps): update pre-commit hooks ( #5605 )
...
* chore(deps): update pre-commit hooks
updates:
- [github.com/pre-commit/mirrors-clang-format: v19.1.7 → v20.1.0](https://github.com/pre-commit/mirrors-clang-format/compare/v19.1.7...v20.1.0 )
- [github.com/astral-sh/ruff-pre-commit: v0.9.9 → v0.11.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.9...v0.11.4 )
- [github.com/PyCQA/pylint: v3.3.4 → v3.3.6](https://github.com/PyCQA/pylint/compare/v3.3.4...v3.3.6 )
- [github.com/python-jsonschema/check-jsonschema: 0.31.2 → 0.32.1](https://github.com/python-jsonschema/check-jsonschema/compare/0.31.2...0.32.1 )
* style: pre-commit fixes
* Update setup.py
* Update tests/test_enum.py
* Update configure.yml
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com >
2025-04-10 18:31:28 -04:00
Henry Schreiner
d25e91fb8f
fix(cmake): warning about missing file ( #5612 )
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-04-10 17:48:16 -04:00
Ralf W. Grosse-Kunstleve
31e52b2cd3
Add holder caster traits tests in test_smart_ptr.cpp,py ( #5603 )
...
* Add test_smart_ptr.cpp,py holder_caster_traits_test
* [skip ci] Resolve clang-tidy error with a NOLINT
Tested with clang-tidy locally.
2025-04-10 12:37:50 -07:00
Ralf W. Grosse-Kunstleve
e38beb96c4
[skip ci] Move "Pitfalls with raw pointers and shared ownership" section to a more prominent location. ( #5611 )
2025-04-10 12:12:00 -07:00
Ralf W. Grosse-Kunstleve
1bd1d1ced8
Change PyCFunction cast in function_record_pyobject.h to sidestep unhelpful compiler warnings. ( #5608 )
...
* Change PyCFunction cast in function_record_pyobject.h to sidestep unhelpful compiler warnings.
* Resolve clang-tidy error
/__w/pybind11/pybind11/include/pybind11/detail/function_record_pyobject.h:41:39: error: do not cast 'PyObject *(PyObject *, PyObject *, PyObject *)' (aka '_object *(_object *, _object *, _object *)') to 'PyCFunction' (aka '_object *(*)(_object *, _object *)') through 'void *' [bugprone-casting-through-void,-warnings-as-errors]
41 | reinterpret_cast<PyCFunction>(reinterpret_cast<void *>(reduce_ex_impl)),
| ^
2025-04-10 12:09:59 -07:00
Michael Šimáček
708ce4d9c7
Fix GraalPy version parsing on dev builds ( #5609 )
...
* Fix GraalPy version parsing on dev builds
* Unskip test on GraalPy
2025-04-09 09:09:15 -07:00
Ralf W. Grosse-Kunstleve
a28ea8ccc5
Eliminate pybindit namespace ( #5607 )
...
* Factor out pybind11/detail/pybind11_namespace_macros.h from pybind11/detail/common.h
* Eliminate `pybindit` namespace, use pybind11/detail/pybind11_namespace_macros.h instead.
* Fix oversight: add pybind11_namespace_macros.h in tests/extra_python_package/test_files.py
* [skip ci] Add copyright notice.
2025-04-08 20:46:24 -07:00
Henry Schreiner
6d1f28fe2b
feat: remove make_simple_namespace ( #5597 )
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-04-08 23:44:18 -04:00
Henry Schreiner
73ad3099fb
fix: fully deprecate get_type_of (deprecated in 2.6 but no warning ( #5596 )
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-04-08 23:43:49 -04:00
Henry Schreiner
b70b8eb332
chore: require pytest 6 consistently ( #5599 )
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-04-04 12:35:55 -07:00
Henry Schreiner
fdab860a32
feat: drop PYBIND11_NUMPY_1_ONLY ( #5595 )
...
* feat: drop PYBIND11_NUMPY_1_ONLY
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* Add #error "PYBIND11_NUMPY_1_ONLY is no longer supported." in pybind11/numpy.h
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
Co-authored-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com >
2025-04-03 22:08:56 -04:00
Henry Schreiner
55b1357d8e
chore: update nox and test deps ( #5594 )
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-04-02 08:24:15 -04:00
Henry Schreiner
8ef10a0ec9
ci: update to GraalPy 24.2 and mention in README ( #5586 )
...
* ci: update to GraalPy 24.2 and mention in README
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* tests: update for GRAALPY 24.2 and better printout
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* tests: use __graalpython__ for version number
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* Update README.rst
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-03-31 22:50:55 -04:00
Henry Schreiner
d27fdaa272
chore: update for CMake 4.0 ( #5593 )
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-03-31 22:50:40 -04:00
Ralf W. Grosse-Kunstleve
e03ec30632
Squashed function_record_std_launder/manuscript — 57b9a0af815d19b236b74be06a172bc5c9956618 — 2025-03-30 20:14:21 -0700 ( #5592 )
...
[Browse function_record_std_launder/manuscript tree](57b9a0af81 )
[Browse function_record_std_launder/manuscript commits](57b9a0af81 /)
2025-03-31 15:54:38 -07:00
Ralf W. Grosse-Kunstleve
a34fcdc48d
[ci skip] Response to question by gh-henryiii ( https://github.com/pybind/pybind11/pull/5580#discussion_r2019137216 ) ( #5591 )
2025-03-30 19:56:07 -07:00
Ralf W. Grosse-Kunstleve
8726ed22d8
Fix build failure when shared_ptr<T> points to private std::enable_shared_from_this base ( #5590 )
...
* Squashed private_esft/manuscript — 3f2b1201b830d9e431448bd8f5fe577afaa02dbf — 2025-03-30 12:38:30 -0700
[Browse private_esft/manuscript tree](3f2b1201b8 )
[Browse private_esft/manuscript commits](3f2b1201b8 /)
* Remove mention of ChatGPT
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com >
---------
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com >
2025-03-30 19:43:40 -07:00
Ralf W. Grosse-Kunstleve
e7e5d6e5bb
Make wrapped C++ functions pickleable ( #5580 )
...
* Backport of https://github.com/google/pybind11clif/pull/30099
* Add back `PYBIND11_WARNING_DISABLE_CLANG("-Wcast-function-type-mismatch")`
macos-13 • brew install llvm
```
/Users/runner/work/pybind11/pybind11/include/pybind11/detail/function_record_pyobject.h:40:26: error: cast from 'PyObject *(*)(PyObject *, PyObject *, PyObject *)' (aka '_object *(*)(_object *, _object *, _object *)') to 'PyCFunction' (aka '_object *(*)(_object *, _object *)') converts to incompatible function type [-Werror,-Wcast-function-type-mismatch]
40 | = {{"__reduce_ex__", (PyCFunction) reduce_ex_impl, METH_VARARGS | METH_KEYWORDS, nullptr},
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
* Remove obsolete `PY_VERSION_HEX >= 0x03080000` (discovered by gh-henryiii)
2025-03-28 11:50:37 -07:00
Henry Schreiner
8f00d1eea0
fix: set __file__ on submodules ( #5584 )
...
* fix: set __file__ on submodules
The docs state ['The caller is responsible for setting a `__file__` attribute'](https://docs.python.org/3/c-api/module.html ), but we
were not doing that, which interferes with pickling objects in submodules using cloudpickle. Users previously had to set the `__file__` attributes manually,
such as in 1fbbe1632e/src/boost_histogram/histogram.py (L83-L90) .
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* fix: support GraalPy
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* fix: workaround only for GraalPython
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* Add GRAALPY_VERSION_NUM to GraalPy workaround
* Fix "GRAALPY_VERSION_NUM not defined" issue
```
/Users/runner/work/pybind11/pybind11/include/pybind11/pybind11.h:1340:32: error: 'GRAALPY_VERSION_NUM' is not defined, evaluates to 0 [-Werror,-Wundef]
^
```
Related ChatGPT conversation: https://chatgpt.com/share/67e6cb99-84b0-8008-99d6-aadc70242cf3
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
Co-authored-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com >
2025-03-28 09:57:39 -07:00
Ralf W. Grosse-Kunstleve
c1cd022f16
tests: Add test for boost::histogram::func_transform situation. ( #5582 )
...
* Add test for boost::histogram::func_transform situation.
* Resolve clang-tidy errors
```
/__w/pybind11/pybind11/tests/test_callbacks.cpp:33:9: error: 'auto rec' can be declared as 'auto *rec' [readability-qualified-auto,-warnings-as-errors]
33 | auto rec = c.get_pointer<py::detail::function_record>();
| ^~~~
| auto *
/__w/pybind11/pybind11/tests/test_callbacks.cpp:41:13: error: 'auto cap' can be declared as 'auto *cap' [readability-qualified-auto,-warnings-as-errors]
41 | auto cap = reinterpret_cast<capture *>(&rec->data);
| ^~~~
| auto *
```
* Replace `apply_custom_transform()` implementation using `make_caster<std::function<raw_t>>`
* Add func_is_stateless_with_exact_type feature in pybind11/functional.h
* tests: use std::function::target
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* style: pre-commit fixes
* Resolve clang-tidy error
```
/__w/pybind11/pybind11/tests/test_callbacks.cpp:33:5: error: 'auto cfunc' can be declared as 'auto *cfunc' [readability-qualified-auto,-warnings-as-errors]
33 | auto cfunc = func.target<raw_t *>();
| ^~~~
| auto *
```
---------
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>
2025-03-28 11:36:02 -04:00
Ralf W. Grosse-Kunstleve
f365314ec0
Enable Conversions Between Native Python Enum Types and C++ Enums ( #5555 )
...
* Apply smart_holder-branch-based PR #5280 on top of master.
* Add pytest.skip("GraalPy does not raise UnicodeDecodeError")
* Add `parent_scope` as first argument to `py::native_enum` ctor.
* Replace `operator+=` API with `.finalize()` API. The error messages still need cleanup.
* Resolve clang-tidy performance-unnecessary-value-param errors
* Rename (effectively) native_enum_add_to_parent() -> finalize()
* Update error message: pybind11::native_enum<...>("Fake", ...): MISSING .finalize()
* Pass py::module_ by reference to resolve clang-tidy errors (this is entirely inconsequential otherwise for all practical purposes).
* test_native_enum_correct_use_failure -> test_native_enum_missing_finalize_failure
* Add test_native_enum_double_finalize(), test_native_enum_value_after_finalize()
* Clean up public/protected API.
* [ci skip] Update the Enumerations section in classes.rst
* Rename `py::native_enum_kind` → `py::enum_kind` as suggested by gh-henryiii:
https://github.com/pybind/pybind11/pull/5555#issuecomment-2711672335
* Experiment: StrEnum
enum.StrEnum does not map to C++ enum:
* https://chatgpt.com/share/67d5e965-ccb0-8008-95b7-0df2502309b3
```
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-8.3.3, pluggy-1.5.0
C++ Info: 13.3.0 C++20 __pybind11_internals_v10000000_system_libstdcpp_gxx_abi_1xxx_use_cxx11_abi_1__ PYBIND11_SIMPLE_GIL_MANAGEMENT=False PYBIND11_NUMPY_1_ONLY=False
configfile: pytest.ini
plugins: parallel-0.1.1, xdist-3.6.1
collected 40 items / 39 deselected / 1 selected
test_native_enum.py F [100%]
=================================== FAILURES ===================================
________________________ test_native_enum_StrEnum_greek ________________________
def test_native_enum_StrEnum_greek():
assert not hasattr(m, "greek")
> m.native_enum_StrEnum_greek(m)
test_native_enum.py:150:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.12/enum.py:764: in __call__
return cls._create_(
boundary = None
cls = <enum 'StrEnum'>
module = None
names = [('Alpha', 10), ('Omega', 20)]
qualname = None
start = 1
type = None
value = 'greek'
values = ()
/usr/lib/python3.12/enum.py:917: in _create_
return metacls.__new__(metacls, class_name, bases, classdict, boundary=boundary)
_ = <class 'str'>
bases = (<enum 'StrEnum'>,)
boundary = None
class_name = 'greek'
classdict = {'_generate_next_value_': <function StrEnum._generate_next_value_ at 0x701ec1711e40>, 'Alpha': 10, 'Omega': 20, '__module__': 'test_native_enum'}
cls = <enum 'StrEnum'>
first_enum = <enum 'StrEnum'>
item = ('Omega', 20)
member_name = 'Omega'
member_value = 20
metacls = <class 'enum.EnumType'>
module = 'test_native_enum'
names = [('Alpha', 10), ('Omega', 20)]
qualname = None
start = 1
type = None
/usr/lib/python3.12/enum.py:606: in __new__
raise exc.with_traceback(tb)
__class__ = <class 'enum.EnumType'>
__new__ = <function StrEnum.__new__ at 0x701ec1711da0>
_gnv = <staticmethod(<function StrEnum._generate_next_value_ at 0x701ec1711e40>)>
_order_ = None
_simple = False
bases = (<enum 'StrEnum'>,)
boundary = None
classdict = {'Alpha': <enum._proto_member object at 0x701ebc74f9b0>, 'Omega': <enum._proto_member object at 0x701ebc74cce0>, '__module__': 'test_native_enum', '_all_bits_': 0, ...}
cls = 'greek'
exc = TypeError('10 is not a string')
first_enum = <enum 'StrEnum'>
ignore = ['_ignore_']
invalid_names = set()
key = '_ignore_'
kwds = {}
member_names = {'Alpha': None, 'Omega': None}
member_type = <class 'str'>
metacls = <class 'enum.EnumType'>
name = 'Omega'
save_new = False
tb = <traceback object at 0x701ebc7a6cc0>
use_args = True
value = 20
/usr/lib/python3.12/enum.py:596: in __new__
enum_class = super().__new__(metacls, cls, bases, classdict, **kwds)
__class__ = <class 'enum.EnumType'>
__new__ = <function StrEnum.__new__ at 0x701ec1711da0>
_gnv = <staticmethod(<function StrEnum._generate_next_value_ at 0x701ec1711e40>)>
_order_ = None
_simple = False
bases = (<enum 'StrEnum'>,)
boundary = None
classdict = {'Alpha': <enum._proto_member object at 0x701ebc74f9b0>, 'Omega': <enum._proto_member object at 0x701ebc74cce0>, '__module__': 'test_native_enum', '_all_bits_': 0, ...}
cls = 'greek'
exc = TypeError('10 is not a string')
first_enum = <enum 'StrEnum'>
ignore = ['_ignore_']
invalid_names = set()
key = '_ignore_'
kwds = {}
member_names = {'Alpha': None, 'Omega': None}
member_type = <class 'str'>
metacls = <class 'enum.EnumType'>
name = 'Omega'
save_new = False
tb = <traceback object at 0x701ebc7a6cc0>
use_args = True
value = 20
/usr/lib/python3.12/enum.py:271: in __set_name__
enum_member = enum_class._new_member_(enum_class, *args)
args = (10,)
enum_class = <enum 'greek'>
member_name = 'Alpha'
self = <enum._proto_member object at 0x701ebc74f9b0>
value = 10
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <enum 'greek'>, values = (10,)
def __new__(cls, *values):
"values must already be of type `str`"
if len(values) > 3:
raise TypeError('too many arguments for str(): %r' % (values, ))
if len(values) == 1:
# it must be a string
if not isinstance(values[0], str):
> raise TypeError('%r is not a string' % (values[0], ))
E TypeError: 10 is not a string
cls = <enum 'greek'>
values = (10,)
/usr/lib/python3.12/enum.py:1322: TypeError
=========================== short test summary info ============================
FAILED test_native_enum.py::test_native_enum_StrEnum_greek - TypeError: 10 is...
======================= 1 failed, 39 deselected in 0.07s =======================
ERROR: completed_process.returncode=1
```
* Remove StrEnum code.
* Make enum_kind::Enum the default kind.
* Catch redundant .export_values() calls.
* [ci skip] Add back original documentation for `py::enum_` under new advanced/deprecated.rst
* [ci skip] Add documentation for `py::enum_kind` and `py::detail::type_caster_enum_type_enabled`
* Rename `Type` to `EnumType` for readability.
* Eliminate py::enum_kind, use "enum.Enum", "enum.IntEnum" directly. This is still WIP.
* EXPERIMENTAL StrEnum code. To be removed.
* Remove experimental StrEnum code:
My judgement: Supporting StrEnum is maybe nice, but not very valuable. I don't think it is worth the extra C++ code.
A level of indirection would need to be managed, e.g.
RED ↔ Python "r" ↔ C++ 0
Green ↔ Python "g" ↔ C++ 1
These mappings would need to be stored and processed.
* Add test with enum.IntFlag (no production code changes required).
* First import_or_getattr() implementation (dedicated tests are still missing).
* Fix import_or_getattr() implementation, add tests, fix clang-tidy errors.
* [ci skip] Update classes.rst: replace `py::enum_kind` with `native_type_name`
* For "constructor similar to that of enum.Enum" point to https://docs.python.org/3/howto/enum.html#functional-api , as suggested by gh-timohl (https://github.com/pybind/pybind11/pull/5555#discussion_r2009277507 ).
* Advertise Enum, IntEnum, Flag, IntFlags are compatible stdlib enum types in the documentation (as suggested by gh-timohl, https://github.com/pybind/pybind11/pull/5555#pullrequestreview-2708832587 ); add test for enum.Flag to ensure that is actually true.
2025-03-24 20:31:59 -07:00
Ralf W. Grosse-Kunstleve
48eb5ad9b9
Remove PyPy 3.8 and 3.9 testing. Make a pass through the entire repo to remove obviously obsolete workarounds for PyPy < 3.10. ( #5578 )
2025-03-23 20:35:14 -07:00
Michael Carlstrom
566894d5f1
Fix null pointer dereference in attr_with_type_hint ( #5576 )
...
* Fix regression
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* Request changes and fix for func_rec nullptr
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* Fix function_record call
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* try typedef forward declaration
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* refactor
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* remove from .py file
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* address feedback
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* Fix `e.j.` → `e.g.` typo.
---------
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com >
2025-03-23 10:09:46 -07:00
b-pass
974eba77a5
Change PYBIND11_MODULE to use multi-phase init (PEP 489) ( #5574 )
...
* Change PYBIND11_MODULE to use multi-phase init
Use slots to specify advanced init options (currently just Py_GIL_NOT_USED).
Adds a new function `initialize_multiphase_module_def` to module_, similar to the existing (unchanged) create_extension_module.
* Avoid dynamic allocation and non-trivial destruction
... by using an std::array for the slots.
* Oops, stray cut and paste character
* Remove assignment from placement new, change size fo slots array
* style: pre-commit fixes
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-03-21 08:03:34 -07:00
Matti Picus
97022f83ce
TEST: test passes on PyPy macOS ( #5569 )
...
* test passes on PyPy macOS
* revert, set strict=False instead
* Tweak condition for strict
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com >
---------
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com >
2025-03-20 22:41:33 -07:00
Michael Carlstrom
6412615ebb
Update NDArray[object] to be NDArray[numpy.object_] ( #5571 )
...
* fix numpy.object_
* style: pre-commit fixes
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-03-20 20:57:51 -07:00
Henry Schreiner
bb504dd809
fix: FindPython by default logic error ( #5561 )
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-03-20 17:38:30 -04:00
Henry Schreiner
655c60d84c
docs: fix incorrect name (PYBIND11_NEWPYTHON) ( #5570 )
2025-03-19 12:45:26 -04:00
Tim Ohliger
9f08625d60
Updated py::capsule type hint to use new types.CapsuleType ( #5567 )
2025-03-18 11:29:57 -07:00
Michael Carlstrom
dfe7e65b45
feat(types): Use typing.SupportsInt and typing.SupportsFloat and fix other typing based bugs. ( #5540 )
...
* init
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* remove import
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* remove uneeded function
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* Add missing import
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* Fix type behind detailed_message_enabled flag
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* Fix type behind detailed_message_enabled flag
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* Add io_name comment
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* Extra loops to single function
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* Remove unneeded forward declaration
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* Switch variable name away from macro
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* Switch variable name away from macro
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* Switch variable name away from macro
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* clang-tidy
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* remove stack import
* Fix bug in std::function Callable type
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* remove is_annotation argument
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
* Update function name and arg names
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
* style: pre-commit fixes
---------
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com >
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-03-18 07:56:34 -07:00
Henry Schreiner
16b5abd428
chore: bump catch download to 2.13.10 ( #5568 )
...
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-03-17 17:18:00 -04:00
Henry Schreiner
d28904f12e
feat: FindPython by default ( #5553 )
...
* feat: FindPython by default
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
* Update tools/pybind11Config.cmake.in
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com >
2025-03-11 18:10:26 -04:00