Added py::raise_from to enable chaining exceptions. #3215
Allow exception translators to be optionally registered local to a module instead of applying globally across all pybind11 modules. Use register_local_exception_translator(ExceptionTranslator&& translator) instead of register_exception_translator(ExceptionTranslator&& translator) to keep your exception remapping code local to the module. #2650
Add make_simple_namespace function for instantiating Python SimpleNamespace objects. #2840
pybind11::scoped_interpreter and initialize_interpreter have new arguments to allow sys.argv initialization. #2341
Allow Python builtins to be used as callbacks in CPython. #1413
Added view to view arrays with a different datatype. #987
Change .items from an iterator to a dictionary view.
Add .keys and .values (both dictionary views).
Allow __contains__ to take any object.
pybind11::custom_type_setup was added, for customizing the PyHeapTypeObject corresponding to a class, which may be useful for enabling garbage collection support, among other things. #3287
Changes:
Set __file__ constant when running eval_file in an embedded interpreter. #3233
Python objects and (C++17) std::optional now accepted in py::slice constructor. #1101
The pybind11 proxy types str, bytes, bytearray, tuple, list now consistently support passing ssize_t values for sizes and indexes. Previously, only size_t was accepted in several interfaces. #3219
Avoid evaluating PYBIND11_TLS_REPLACE_VALUE arguments more than once. #3290
Fixes:
Bug fix: enum value's __int__ returning non-int when underlying type is bool or of char type #1334
Fixes bug in setting error state in Capsule's pointer methods. #3261
A long-standing memory leak in py::cpp_function::initialize was fixed. #3229
Fixes thread safety for some pybind11::type_caster which require lifetime extension, such as for std::string_view. #3237
Restore compatibility with gcc 4.8.4 as distributed by ubuntu-trusty, linuxmint-17. #3270
Build system improvements:
Fix regression in CMake Python package config: improper use of absolute path. #3144
Cached Python version information could become stale when CMake was re-run with a different Python version. The build system now detects this and updates this information. #3299
Specified UTF8-encoding in setup.py calls of open(). #3137
Fix a harmless warning from CMake 3.21 with the classic Python discovery. #3220
Eigen repo and version can now be specified as cmake options. #3324
Backend and tidying up:
Reduced thread-local storage required for keeping alive temporary data for type conversion to one key per ABI version, rather than one key per extension module. This makes the total thread-local storage required by pybind11 2 keys per ABI version. #3275
Optimize NumPy array construction with additional moves. #3183
Conversion to std::string and std::string_view now avoids making an extra copy of the data on Python >= 3.3. #3257
Remove const modifier from certain C++ methods on Python collections (list, set, dict) such as (clear(), append(), insert(), etc...) and annotated them with py-non-const.
Enable readability clang-tidy-const-return and remove useless consts. #3254#3194
The clang-tidy google-explicit-constructor option was enabled. #3250
Mark a pytype move constructor as noexcept (perf). #3236
Added py::raise_from to enable chaining exceptions.
[#3215](https://github.com/pybind/pybind11/issues/3215) <https://github.com/pybind/pybind11/pull/3215>_
Allow exception translators to be optionally registered local to a module
instead of applying globally across all pybind11 modules. Use
register_local_exception_translator(ExceptionTranslator&& translator)
instead of register_exception_translator(ExceptionTranslator&& translator) to keep your exception remapping code local to the module.
[#2650](https://github.com/pybind/pybind11/issues/2650) <https://github.com/pybind/pybind11/pull/2650>_
Add make_simple_namespace function for instantiating Python
SimpleNamespace objects.
[#2840](https://github.com/pybind/pybind11/issues/2840) <https://github.com/pybind/pybind11/pull/2840>_
pybind11::scoped_interpreter and initialize_interpreter have new
arguments to allow sys.argv initialization.
[#2341](https://github.com/pybind/pybind11/issues/2341) <https://github.com/pybind/pybind11/pull/2341>_
Allow Python builtins to be used as callbacks in CPython.
[#1413](https://github.com/pybind/pybind11/issues/1413) <https://github.com/pybind/pybind11/pull/1413>_
Added view to view arrays with a different datatype.
[#987](https://github.com/pybind/pybind11/issues/987) <https://github.com/pybind/pybind11/pull/987>_
Implemented reshape on arrays.
[#984](https://github.com/pybind/pybind11/issues/984) <https://github.com/pybind/pybind11/pull/984>_
Enable defining custom __new__ methods on classes by fixing bug
preventing overriding methods if they have non-pybind11 siblings.
[#3265](https://github.com/pybind/pybind11/issues/3265) <https://github.com/pybind/pybind11/pull/3265>_
Add make_value_iterator(), and fix make_key_iterator() to return
references instead of copies.
[#3293](https://github.com/pybind/pybind11/issues/3293) <https://github.com/pybind/pybind11/pull/3293>_
Improve the classes generated by bind_map: [#3310](https://github.com/pybind/pybind11/issues/3310) <https://github.com/pybind/pybind11/pull/3310>_
Change .items from an iterator to a dictionary view.
Add .keys and .values (both dictionary views).
Allow __contains__ to take any object.
pybind11::custom_type_setup was added, for customizing the
PyHeapTypeObject corresponding to a class, which may be useful for
enabling garbage collection support, among other things.
[#3287](https://github.com/pybind/pybind11/issues/3287) <https://github.com/pybind/pybind11/pull/3287>_
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps pybind11 from 2.7.1 to 2.8.0.
Release notes
Sourced from pybind11's releases.
... (truncated)
Changelog
Sourced from pybind11's changelog.
... (truncated)
Commits
97976c1
[pre-commit.ci] pre-commit autoupdate (#3325)3747dc2
Revert "All-DDOWNLOAD_EIGEN=OFF
(to work around gitlab eigen outage)." (#3...c9a319c
chore: version 2.8.0 final20aae3e
ci: disable Eigen due to Cert issue on CentOS591db0b
docs: update CHANGELOG for 2.89f146a5
All-DDOWNLOAD_EIGEN=OFF
(to work around gitlab eigen outage).d7a7edc
tests: support Eigen configurationad96655
fix: replace free() with std::free() (#3321)b3573ac
feat: add.keys
and.values
to bind_map (#3310)b4e1ab8
Docs: Demonstrate non-enum internal types in example (#3314)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)