Log message:
py-pybind11: updated to 2.7.0
Version 2.7.0
New features:
Enable py::implicitly_convertible<py::none, ...> for py::class_-wrapped types.
Allow function pointer extraction from overloaded functions.
NumPy: added .char_() to type which gives the NumPy public char result, which \
also distinguishes types by bit length (unlike .kind()).
Add pybind11::bytearray to manipulate bytearray similar to bytes.
pybind11/stl/filesystem.h registers a type caster that, on C++17/Python 3.6+, \
converts std::filesystem::path to pathlib.Path and any os.PathLike to \
std::filesystem::path.
A PYBIND11_VERSION_HEX define was added, similar to PY_VERSION_HEX.
Changes:
py::str changed to exclusively hold PyUnicodeObject. Previously py::str could
also hold bytes, which is probably surprising, was never documented, and can \
mask bugs (e.g. accidental use of py::str instead of py::bytes).
Add a safety guard to ensure that the Python GIL is held when C++ calls back \
into Python via object_api<>::operator() (e.g. py::function __call__). \
(This feature is available for Python 3.6+ only.)
Catch a missing self argument in calls to __init__().
Use std::string_view if available to avoid a copy when passing an object to a \
std::ostream.
An important warning about thread safety was added to the iostream.h \
documentation; attempts to make py::scoped_ostream_redirect thread safe have \
been removed, as it was only partially effective.
Fixes:
Performance: avoid unnecessary strlen calls.
Fix auto-generated documentation string when using const T in pyarray_t.
Unify error messages thrown by simple_collector/unpacking_collector.
pybind11::builtin_exception is now explicitly exported, which means the types \
included/defined in different modules are identical, and exceptions raised in \
different modules can be caught correctly. The documentation was updated to \
explain that custom exceptions that are used across module boundaries need to be \
explicitly exported as well.
Fixed exception when printing UTF-8 to a scoped_ostream_redirect.
Pickle support enhancement: setstate implementation will attempt to setattr \
__dict__ only if the unpickled dict object is not empty, to not force use of \
py::dynamic_attr() unnecessarily.
Allow negative timedelta values to roundtrip.
Fix unchecked errors could potentially swallow signals/other exceptions.
Add null pointer check with std::localtime.
Fix the weakref constructor from py::object to create a new weakref on conversion.
Avoid relying on exceptions in C++17 when getting a shared_ptr holder from a \
shared_from_this class.
Allow the codec's exception to be raised instead of RuntimeError when casting \
from py::str to std::string.
Build system improvements:
In setup_helpers.py, test for platforms that have some multiprocessing features \
but lack semaphores, which ParallelCompile requires.
Fix pybind11_INCLUDE_DIR in case CMAKE_INSTALL_INCLUDEDIR is absolute.
Fix bug not respecting WITH_SOABI or WITHOUT_SOABI to CMake.
Fix the default Pybind11Extension compilation flags with a Mingw64 python.
Clang on Windows: do not pass /MP (ignored flag).
pybind11.setup_helpers.intree_extensions can be used to generate \
Pybind11Extension instances from cpp files placed in the Python
package source tree.
Backend and tidying up:
Enable clang-tidy performance, readability, and modernization checks throughout \
the codebase to enforce best coding practices.,
Checks for common misspellings were added to the pre-commit hooks.
Changed Werror to stricter Werror-all for Intel compiler and fixed minor issues.
Fixed compilation with GCC < 5 when the user defines _GLIBCXX_USE_CXX11_ABI.
Added nox support for easier local testing and linting of contributions. and
Avoid RTD style issue with docutils 0.17+.
Support pipx run, such as pipx run pybind11 --include for a quick compile.
|