commit ae835275a60d4dc408d5d9deb943e26bc7a52468 Author: Adrian Schröter Date: Tue Jun 6 15:14:23 2023 +0200 Sync from SUSE:ALP:Source:Standard:1.0 python-pybind11 revision 96af6d984ecba2046e9112567e656cc2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fecc750 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..83bd4e9 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + test + diff --git a/pybind11-2.10.4.tar.gz b/pybind11-2.10.4.tar.gz new file mode 100644 index 0000000..3269599 --- /dev/null +++ b/pybind11-2.10.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:832e2f309c57da9c1e6d4542dedd34b24e4192ecb4d62f6f4866a737454c9970 +size 740622 diff --git a/python-pybind11-rpmlintrc b/python-pybind11-rpmlintrc new file mode 100644 index 0000000..97ee389 --- /dev/null +++ b/python-pybind11-rpmlintrc @@ -0,0 +1,2 @@ +# The ghost comes from pretrans +addFilter("ghost-files-without-postin") diff --git a/python-pybind11.changes b/python-pybind11.changes new file mode 100644 index 0000000..d7e5be3 --- /dev/null +++ b/python-pybind11.changes @@ -0,0 +1,605 @@ +------------------------------------------------------------------- +Fri Apr 21 12:30:25 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Thu Apr 13 22:43:32 UTC 2023 - Matej Cepl + +- Make calling of %{sle15modernpython} optional. + +------------------------------------------------------------------- +Sun Mar 19 12:06:00 UTC 2023 - Dirk Müller + +- update to 2.10.4: + * ``python3 -m pybind11`` gained a ``--version`` option (prints + the version and exits). + * Fix a warning when pydebug is enabled on Python 3.11. + * Ensure ``gil_scoped_release`` RAII is non-copyable. + * Ensure the tests dir does not show up with new versions of + setuptools. + * Better stacklevel for a warning in setuptools helpers. + +------------------------------------------------------------------- +Thu Jan 12 17:50:05 UTC 2023 - Ben Greiner + +- Package new pkgconfig file gh#pybind/pybind11#4077 +- PEP517 build +- Fix multibuild setup: unique packagename for test flavor required + +------------------------------------------------------------------- +Wed Jan 4 19:48:22 UTC 2023 - Dirk Müller + +- update to 2.10.3: + * Temporarily made our GIL status assertions (added in 2.10.2) disabled by + default (re-enable manually by defining + ``PYBIND11_ASSERT_GIL_HELD_INCREF_DECREF``, will be enabled in 2.11). + * Improved error messages when ``inc_ref``/``dec_ref`` are called with an + invalid GIL state. + * Some minor touchups found by static analyzers. + * ``scoped_interpreter`` constructor taking ``PyConfig``. + * ``pybind11/eigen/tensor.h`` adds converters to and from + ``Eigen::Tensor`` and + ``Eigen::TensorMap``. + * ``PyGILState_Check()``'s were integrated to ``pybind11::handle`` + ``inc_ref()`` & ``dec_ref()``. The added GIL checks are guarded by + ``PYBIND11_ASSERT_GIL_HELD_INCREF_DECREF``, which is the default only if + ``NDEBUG`` is not defined. (Made non-default in 2.10.3, will be active in 2.11) + * Add option for enable/disable enum members in docstring. + * Fixed typing of ``KeysView``, ``ValuesView`` and ``ItemsView`` in + ``bind_map``. + * Fix segfault bug when passing foreign native functions to functional.h. + * Build system improvements: + * Support setting PYTHON_LIBRARIES manually for Windows ARM cross- + compilation + (classic mode). + * Extend IPO/LTO detection for ICX (a.k.a IntelLLVM) compiler. + * Allow calling ``find_package(pybind11 CONFIG)`` multiple times from + separate + directories in the same CMake project and properly link Python (new mode). + * ``multiprocessing_set_spawn`` in pytest fixture for added safety. + * Fixed a bug in two pybind11/tools cmake scripts causing "Unknown + arguments specified" errors. + * Version 2.10.1 (Oct 31, 2022) + * This is the first version to fully support embedding the newly released + Python 3.11. + * Changes: + * Allow ``pybind11::capsule`` constructor to take null destructor + pointers. + * ``embed.h`` was changed so that ``PYTHONPATH`` is used also with Python + 3.11 + (established behavior). + * A ``PYBIND11_SIMPLE_GIL_MANAGEMENT`` option was added (cmake, C++ + define), + along with many additional tests in ``test_gil_scoped.py``. The option may be + useful to try when debugging GIL-related issues, to determine if the more + complex default implementation is or is not to blame. See #4216 for + background. WARNING: Please be careful to not create ODR violations when + using the option: everything that is linked together with mutual symbol + visibility needs to be rebuilt. + * ``PYBIND11_EXPORT_EXCEPTION`` was made non-empty only under macOS. This + makes + Linux builds safer, and enables the removal of warning suppression pragmas for + Windows. + * Fixed a bug where ``UnicodeDecodeError`` was not propagated from various + ``py::str`` ctors when decoding surrogate utf characters. + * Revert perfect forwarding for ``make_iterator``. This broke at least one + valid use case. May revisit later. + * Fix support for safe casts to ``void*`` (regression in 2.10.0). + * Fix ``char8_t`` support (regression in 2.9). + * Unicode surrogate character in Python exception message leads to process + termination in ``error_already_set::what()``. + * Fix MSVC 2019 v.1924 & C++14 mode error for ``overload_cast``. + * Make augmented assignment operators non-const for the object-api. + Behavior + was previously broken for augmented assignment operators. + * Add proper error checking to C++ bindings for Python list append and + insert. + * Work-around for Nvidia's CUDA nvcc compiler in versions 11.4.0 - 11.8.0. + * A workaround for PyPy was added in the ``py::error_already_set`` + implementation, related to PR `#1895 `_ + released with v2.10.0. + * Fixed compiler errors when C++23 ``std::forward_like`` is available. + * Properly raise exceptions in contains methods (like when an object in + unhashable). + * Further improve another error in exception handling. + * ``get_local_internals()`` was made compatible with + ``finalize_interpreter()``, fixing potential freezes during interpreter + finalization. + * Performance and style: + * Reserve space in set and STL map casters if possible. This will prevent + unnecessary rehashing / resizing by knowing the number of keys ahead of time + for Python to C++ casting. This improvement will greatly speed up the casting + of large unordered maps and sets. + * GIL RAII scopes are non-copyable to avoid potential bugs. + * Explicitly default all relevant ctors for pytypes in the + ``PYBIND11_OBJECT`` + macros and enforce the clang-tidy checks ``modernize-use-equals-default`` in + macros as well. + * Optimize iterator advancement in C++ bindings. + * Use the modern ``PyObject_GenericGetDict`` and + ``PyObject_GenericSetDict`` + for handling dynamic attribute dictionaries. + * Document that users should use ``PYBIND11_NAMESPACE`` instead of using + ``pybind11`` when + opening namespaces. Using namespace declarations and namespace qualification + remain the same as ``pybind11``. This is done to ensure consistent symbol + visibility. + * Mark ``detail::forward_like`` as constexpr. + * Optimize unpacking_collector when processing ``arg_v`` arguments. + * Optimize casting C++ object to ``None``. + +------------------------------------------------------------------- +Thu Sep 15 20:25:44 UTC 2022 - Ben Greiner + +- %pretrans must be lua +- requires python-rpm-macros >= 20220912 because of parameter in + scriptlet +- Fix subdirectory links + +------------------------------------------------------------------- +Wed Sep 14 21:02:16 UTC 2022 - Ben Greiner + +- Work around long standing rpm-directory-to-symlink-bug + * https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/ + * rh#447156 + * use shell instead of lua for pretrans scriptlet + +------------------------------------------------------------------- +Sun Sep 11 00:15:11 UTC 2022 - Ben Greiner + +- Update to 2.10.0 + * Removed support for Python 2.7, Python 3.5, and MSVC 2015. + Support for MSVC 2017 is limited due to availability of CI + runners; we highly recommend MSVC 2019 or 2022 be used. + Initial support added for Python 3.11. + * New features: + + py::anyset & py::frozenset were added, with copying (cast) + to std::set (similar to set). #3901 + + Support bytearray casting to string. #3707 + + type_caster was added. std::monostate is a + tag type that allows std::variant to act as an optional, or + allows default construction of a std::variant holding a + non-default constructible type. #3818 + + pybind11::capsule::set_name added to mutate the name of the + capsule instance. #3866 + + NumPy: dtype constructor from type number added, accessors + corresponding to Python API dtype.num, dtype.byteorder, + dtype.flags and dtype.alignment added. #3868 + * Changes: + + Python 3.6 is now the minimum supported version. #3688 #3719 + + The minimum version for MSVC is now 2017. #3722 + + Fix issues with CPython 3.11 betas and add to supported test + matrix. #3923 + + error_already_set is now safer and more performant, + especially for exceptions with long tracebacks, by delaying + computation. #1895 + + Improve exception handling in python str bindings. #3826 + + The bindings for capsules now have more consistent exception + handling. #3825 + + PYBIND11_OBJECT_CVT and PYBIND11_OBJECT_CVT_DEFAULT macro + can now be used to define classes in namespaces other than + pybind11. #3797 + + Error printing code now uses + PYBIND11_DETAILED_ERROR_MESSAGES instead of requiring + NDEBUG, allowing use with release builds if desired. #3913 + + Implicit conversion of the literal 0 to pybind11::handle is + now disabled. #4008 + * Bug fixes: + + Fix exception handling when pybind11::weakref() fails. #3739 + + module_::def_submodule was missing proper error handling. + This is fixed now. #3973 + + The behavior or error_already_set was made safer and the + highly opaque "Unknown internal error occurred" message was + replaced with a more helpful message. #3982 + + error_already_set::what() now handles non-normalized + exceptions correctly. #3971 + + Support older C++ compilers where filesystem is not yet part + of the standard library and is instead included in + std::experimental::filesystem. #3840 + + Fix -Wfree-nonheap-object warnings produced by GCC by + avoiding returning pointers to static objects with + return_value_policy::take_ownership. #3946 + + Fix cast from pytype rvalue to another pytype. #3949 + + Ensure proper behavior when garbage collecting classes with + dynamic attributes in Python >=3.9. #4051 + + A couple long-standing PYBIND11_NAMESPACE + __attribute__((visibility("hidden"))) inconsistencies are + now fixed (affects only unusual environments). #4043 + + pybind11::detail::get_internals() is now resilient to + in-flight Python exceptions. #3981 + + Arrays with a dimension of size 0 are now properly converted + to dynamic Eigen matrices (more common in NumPy 1.23). #4038 + + Avoid catching unrelated errors when importing NumPy. #3974 + * Performance and style: + + Added an accessor overload of (object &&key) to reference + steal the object when using python types as keys. This + prevents unnecessary reference count overhead for attr, + dictionary, tuple, and sequence look ups. Added additional + regression tests. Fixed a performance bug the caused + accessor assignments to potentially perform unnecessary + copies. #3970 + + Perfect forward all args of make_iterator. #3980 + + Avoid potential bug in pycapsule destructor by adding an + error_guard to one of the dtors. #3958 + + Optimize dictionary access in strip_padding for numpy. #3994 + + stl_bind.h bindings now take slice args as a const-ref. + #3852 + + Made slice constructor more consistent, and improve + performance of some casters by allowing reference stealing. + #3845 + + Change numpy dtype from_args method to use const ref. #3878 + + Follow rule of three to ensure PyErr_Restore is called only + once. #3872 + + Added missing perfect forwarding for make_iterator + functions. #3860 + + Optimize c++ to python function casting by using the rvalue + caster. #3966 + + Optimize Eigen sparse matrix casting by removing unnecessary + temporary. #4064 + + Avoid potential implicit copy/assignment constructors + causing double free in strdup_gaurd. #3905 + + Enable clang-tidy checks misc-definitions-in-headers, + modernize-loop-convert, and modernize-use-nullptr. #3881 + #3988 + * Build system improvements: + + CMake: Fix file extension on Windows with cp36 and cp37 + using FindPython. #3919 + + CMake: Support multiple Python targets (such as on vcpkg). + #3948 + + CMake: Fix issue with NVCC on Windows. #3947 + + CMake: Drop the bitness check on cross compiles (like + targeting WebAssembly via Emscripten). #3959 + + Add MSVC builds in debug mode to CI. #3784 + + MSVC 2022 C++20 coverage was added to GitHub Actions, + including Eigen. #3732, #3741 + * Backend and tidying up: + + New theme for the documentation. #3109 + + Remove idioms in code comments. Use more inclusive language. + #3809 + + #include was removed from the pybind11/stl.h + header. Your project may break if it has a transitive + dependency on this include. The fix is to "Include What You + Use". #3928 + + Avoid setup.py usage in internal tests. #3734 +- Fix header deduplication: pybind11.get_include still reports + the headers to be in the sitelib (SciPy meson build fail) +- Test in multibuild as some tests expect the system-wide + %_includedir/pybind11/pybind11.h + +------------------------------------------------------------------- +Sat Apr 9 22:47:00 UTC 2022 - Dirk Müller + +- update to 2.9.2: + * Enum now has an ``__index__`` method on Python <3.8 too. + * Local internals are now cleared after finalizing the interpreter. + * Better support for Python 3.11 alphas. + * ``PYBIND11_TYPE_CASTER`` now uses fully qualified symbols, so it can be used + outside of ``pybind11::detail``. + * Some fixes for PyPy 3.9. + * Fixed a potential memleak in PyPy in ``get_type_override``. + * Fix usage of ``VISIBILITY_INLINES_HIDDEN``. + * Uses ``sysconfig`` module to determine installation locations on Python >= + 3.10, instead of ``distutils`` which has been deprecated. + * Support Catch 2.13.5+ (supporting GLIBC 2.34+). + * Fix test failures with numpy 1.22 by ignoring whitespace when comparing + ``str()`` of dtypes. + +------------------------------------------------------------------- +Sun Mar 27 15:11:08 UTC 2022 - Dirk Müller + +- update to 2.9.1: + * If possible, attach Python exception with py::raise_from to TypeError when + casting from C++ to Python. This will give additional info if Python + exceptions occur in the caster. + * Add a mapping of C++11 nested exceptions to their Python exception + equivalent using py::raise_from. This attaches the nested exceptions in + Python using the __cause__ field. + * Propagate Python exception traceback using raise_from if a pybind11 + function runs out of overloads. + * py::multiple_inheritance is now only needed when C++ bases are hidden from + pybind11. + * Allow py::args to be followed by other arguments; the remaining arguments + are implicitly keyword-only, as if a py::kw_only{} annotation had been + used. + * Fix a rare warning about extra copy in an Eigen constructor. + * Fix caching of the C++ overrides. + * Add missing std::forward calls to some cpp_function overloads. + * Support PyPy 7.3.7 and the PyPy3.8 beta. Test python-3.11 on PRs with the python dev label. + * Replace usage of deprecated Eigen::MappedSparseMatrix with Eigen::Map> for Eigen 3.3+. + * Tweaks to support Microsoft Visual Studio 2022. + +------------------------------------------------------------------- +Mon Dec 6 10:07:33 UTC 2021 - Dirk Müller + +- udpate to 2.8.1: + * The simple namespace creation shortcut added in 2.8.0 was deprecated due to + usage of CPython internal API, and will be removed soon. + * Add C++ Exception type to throw and catch ``AttributeError``. + * Fixed the potential for dangling references when using properties with + ``std::optional`` types. + * Modernize usage of ``PyCodeObject`` on Python 3.9+ (moving toward support for + Python 3.11a1) + * A long-standing bug in ``eigen.h`` was fixed (originally PR #3343). The bug + was unmasked by newly added ``static_assert``'s in the Eigen 3.4.0 release. + * Support multiple raw inclusion of CMake helper files + * Fix harmless warning on upcoming CMake 3.22. + * Fix 2.8.0 regression with MSVC 2017 + C++17 mode + Python 3. + * Fix 2.8.0 regression that caused undefined behavior (typically + segfaults) in ``make_key_iterator``/``make_value_iterator`` if dereferencing + the iterator returned a temporary value instead of a reference. + +------------------------------------------------------------------- +Sat Oct 16 20:47:43 UTC 2021 - Stefan Schubert + +- Use libalternatives instead of update-alternatives. + +------------------------------------------------------------------- +Sat Oct 16 19:47:43 UTC 2021 - Ben Greiner + +- Update to v2.8.0 + * 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 + * Implemented reshape on arrays. #984 + * Enable defining custom __new__ methods on classes by fixing bug + preventing overriding methods if they have non-pybind11 + siblings. #3265 + * Add make_value_iterator(), and fix make_key_iterator() to + return references instead of copies. #3293 + * Improve the classes generated by bind_map: #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 + * 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 + * 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 + * 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 + * 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 + * Enable clang-tidy check to guard against inheritance slicing. + #3210 + * Legacy warning suppression pragma were removed from eigen.h. On + Unix platforms, please use -isystem for Eigen include + directories, to suppress compiler warnings originating from + Eigen headers. Note that CMake does this by default. No + adjustments are needed for Windows. #3198 + * Format pybind11 with isort consistent ordering of imports #3195 + * The warnings-suppression "pragma clamp" at the top/bottom of + pybind11 was removed, clearing the path to refactoring and IWYU + cleanup. #3186 + * Enable most bugprone checks in clang-tidy and fix the found + potential bugs and poor coding styles. #3166 + * Add clang-tidy-readability rules to make boolean casts explicit + improving code readability. Also enabled other misc and + readability clang-tidy checks. #3148 + * Move object in .pop() for list. #3116 +- Release 2.7.1 + * Allow Python builtins to be used as callbacks in CPython. #1413 + * Fix regression in CMake Python package config: improper use of + absolute path. #3144 + * Fix Mingw64 and add to the CI testing matrix. #3132 + * Specified UTF8-encoding in setup.py calls of open(). #3137 + * Add clang-tidy-readability rules to make boolean casts explicit + improving code readability. Also enabled other misc and + readability clang-tidy checks. #3148 + * Move object in .pop() for list. #3116 + * Removed and fixed warning suppressions. #3127 #3129 #3135 #3141 + #3142 #3150 #3152 #3160 #3161 +- Release 2.7.0 + * Enable py::implicitly_convertible for + py::class_-wrapped types. #3059 + * Allow function pointer extraction from overloaded functions. + #2944 + * NumPy: added .char_() to type which gives the NumPy public char + result, which also distinguishes types by bit length (unlike + .kind()). #2864 + * Add pybind11::bytearray to manipulate bytearray similar to + bytes. #2799 + * 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. + #2730 + * A PYBIND11_VERSION_HEX define was added, similar to + PY_VERSION_HEX. #3120 + * 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). #2409 + * 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.) #2919 + * Catch a missing self argument in calls to __init__(). #2914 + * Use std::string_view if available to avoid a copy when passing + an object to a std::ostream. #3042 + * 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. #2995 + * Performance: avoid unnecessary strlen calls. #3058 + * Fix auto-generated documentation string when using const T in + pyarray_t. #3020 + * Unify error messages thrown by + simple_collector/unpacking_collector. #3013 + * 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. #2999 + * Fixed exception when printing UTF-8 to a + scoped_ostream_redirect. #2982 + * 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. #2972 + * Allow negative timedelta values to roundtrip. #2870 + * Fix unchecked errors could potentially swallow signals/other + exceptions. #2863 + * Add null pointer check with std::localtime. #2846 + * Fix the weakref constructor from py::object to create a new + weakref on conversion. #2832 + * Avoid relying on exceptions in C++17 when getting a shared_ptr + holder from a shared_from_this class. #2819 + * Allow the codec's exception to be raised instead of + RuntimeError when casting from py::str to std::string. #2903 + * In setup_helpers.py, test for platforms that have some + multiprocessing features but lack semaphores, which + ParallelCompile requires. #3043 + * Fix pybind11_INCLUDE_DIR in case CMAKE_INSTALL_INCLUDEDIR is + absolute. #3005 + * Fix bug not respecting WITH_SOABI or WITHOUT_SOABI to CMake. + #2938 + * Fix the default Pybind11Extension compilation flags with a + Mingw64 python. #2921 + * Clang on Windows: do not pass /MP (ignored flag). #2824 + * pybind11.setup_helpers.intree_extensions can be used to + generate Pybind11Extension instances from cpp files placed in + the Python package source tree. #2831 + * Enable clang-tidy performance, readability, and modernization + checks throughout the codebase to enforce best coding + practices. #3046, #3049, #3051, #3052, #3080, and #3094 + * Checks for common misspellings were added to the pre-commit + hooks. #3076 + * Changed Werror to stricter Werror-all for Intel compiler and + fixed minor issues. #2948 + * Fixed compilation with GCC < 5 when the user defines + _GLIBCXX_USE_CXX11_ABI. #2956 + * Added nox support for easier local testing and linting of + contributions. #3101 and #3121 + * Avoid RTD style issue with docutils 0.17+. #3119 + * Support pipx run, such as pipx run pybind11 --include for a + quick compile. #3117 +- Drop unicode.patch merged upstream + +------------------------------------------------------------------- +Wed Jul 7 14:30:20 UTC 2021 - Markéta Machová + +- Add upstream patch unicode.patch to fix random python crash + +------------------------------------------------------------------- +Mon Feb 15 00:56:32 UTC 2021 - Benjamin Greiner + +- Dont test with python36-numpy. Tumbleweed's NumPy >= 1.20 dropped + support for Python 3.6 + +------------------------------------------------------------------- +Sun Feb 7 13:15:06 UTC 2021 - John Vandenberg + +- Add docs/changelog.rst to package contents +- Update to v2.6.2 + * See changelog for changes since 2.5.0 + +------------------------------------------------------------------- +Fri Jul 17 01:00:06 UTC 2020 - Stefan Brüns + +- Also expand generation of test binaries for Python 2 and 3, + fixes Leap 15.x builds where Python 2 is still built. + +------------------------------------------------------------------- +Mon Jul 6 14:56:54 UTC 2020 - Christian Goll + +- updated to version 2.5.0 and running the internal unit tests now + +------------------------------------------------------------------- +Thu Apr 23 10:05:00 UTC 2020 - Tomáš Chvátal + +- On devel files you need the pybind too to compile anything + +------------------------------------------------------------------- +Wed Mar 11 16:57:22 UTC 2020 - Tomáš Chvátal + +- Fix build without python2 + +------------------------------------------------------------------- +Thu Feb 13 05:32:14 UTC 2020 - Stefan Brüns + +- Fix mixup of expanded/unexpaned python versions in devel package, + the devel package always required python(2)-devel and + python2-pybind. Move the data to a -common-devel subpackage, + pulled in by versioned python{2,3}-pybind-devel packages. + +------------------------------------------------------------------- +Tue Jan 14 10:19:23 UTC 2020 - John Vandenberg + +- Add package version to extra devel packages added via Provides + +------------------------------------------------------------------- +Sat Dec 21 15:51:16 UTC 2019 - Luigi Baldoni + +- Update to version 2.4.3 + * Adapt pybind11 to a C API convention change in Python 3.8. + +------------------------------------------------------------------- +Tue Oct 8 09:11:41 UTC 2019 - Christian Goll + +- updated to 2.4.2 + * made devel package python version independent + * added cmake run to install cmake include files + +------------------------------------------------------------------- +Sat Aug 24 06:26:13 UTC 2019 - Jan Engelhardt + +- Replace description by something more substantial. + +------------------------------------------------------------------- +Mon Jul 22 14:21:41 UTC 2019 - Michal Vyskocil + +- Initial packaging of pybind11 2.3.0 for openSUSE diff --git a/python-pybind11.spec b/python-pybind11.spec new file mode 100644 index 0000000..f654503 --- /dev/null +++ b/python-pybind11.spec @@ -0,0 +1,205 @@ +# +# spec file +# +# Copyright (c) 2023 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%bcond_without test +%define psuffix -test +%else +%bcond_with test +%define psuffix %{nil} +%endif + +%if 0%{?suse_version} > 1500 +%bcond_without libalternatives +%else +%bcond_with libalternatives +%endif + +%define skip_python2 1 +%define plainpython python +%{?sle15_python_module_pythons} +Name: python-pybind11%{psuffix} +Version: 2.10.4 +Release: 0 +Summary: Module for operability between C++11 and Python +License: BSD-3-Clause +URL: https://github.com/pybind/pybind11 +Source: https://github.com/pybind/pybind11/archive/v%{version}.tar.gz#/pybind11-%{version}.tar.gz +Source99: python-pybind11-rpmlintrc +BuildRequires: %{python_module devel >= 3.6} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools >= 42} +BuildRequires: %{python_module wheel} +BuildRequires: cmake >= 3.18 +BuildRequires: fdupes +BuildRequires: gcc-c++ +BuildRequires: python-rpm-macros >= 20220912 +%if %{with libalternatives} +Requires: alts +BuildRequires: alts +%else +Requires(post): update-alternatives +Requires(postun):update-alternatives +%endif +%if %{with test} +BuildRequires: %{python_module numpy} +BuildRequires: %{python_module pybind11-devel = %{version}} +BuildRequires: %{python_module pytest-timeout} +BuildRequires: %{python_module pytest} +%endif +BuildArch: noarch +%python_subpackages + +%description +pybind11 is a header-only library that exposes C++ types in Python +and vice versa, mainly to create Python bindings of existing C++ +code. It can reduce boilerplate code in traditional extension modules +by inferring type information using compile-time introspection. + +%package -n %{name}-common-devel +Summary: Development files for pybind11 +Provides: %{python_module pybind11-common-devel = %{version}} + +%description -n %{name}-common-devel +This package contains files for developing applications using pybind11. + +%package devel +Summary: Development files for pybind11 +Requires: %{name}-common-devel = %{version} +Requires: python-devel +Requires: python-pybind11 = %{version} +Requires: %{plainpython}(abi) = %{python_version} + +%description devel +This package contains files for developing applications using pybind11. + +%prep +%setup -q -n pybind11-%{version} + +%build +%if !%{with test} +%pyproject_wheel +# calling cmake to install header to right location and +# generate cmake include files +%{python_expand pushd . +%cmake \ + -DPYBIND11_INSTALL=ON \ + -DPYBIND11_TEST=OFF \ + -DPYTHON_EXECUTABLE:FILEPATH=%{_bindir}/$python +%cmake_build +popd +} +%else +%{python_expand pushd . +%cmake \ + -DPYBIND11_INSTALL=OFF \ + -DPYBIND11_TEST=ON \ + -DPYTHON_EXECUTABLE:FILEPATH=%{_bindir}/$python +%cmake_build +popd +} +%endif + +%install +%if !%{with test} +%pyproject_install +%python_clone -a %{buildroot}%{_bindir}/pybind11-config +%{python_expand # +%cmake_install +# remove duplicated header files from sitelibs but link to common dirs as some +# packages expect them to be in the sitelib where pybind11.get_include() reports them. +rm -r %{buildroot}%{$python_sitelib}/pybind11/include/pybind11 +ln -s %{_includedir}/pybind11 %{buildroot}%{$python_sitelib}/pybind11/include/pybind11 +# same for cmake files: pybind11.get_cmake_dir() +rm -r %{buildroot}%{$python_sitelib}/pybind11/share/cmake/pybind11 +ln -s %{_datadir}/cmake/pybind11 %{buildroot}%{$python_sitelib}/pybind11/share/cmake/pybind11 +# same for pkgconfig +rm %{buildroot}%{$python_sitelib}/pybind11/share/pkgconfig/pybind11.pc +ln -s %{_datadir}/pkgconfig/pybind11.pc %{buildroot}%{$python_sitelib}/pybind11/share/pkgconfig/pybind11.pc +%fdupes %{buildroot}%{$python_sitelib} +} +%endif + +%if %{with test} +%check +export PYTHONPATH=${PWD}/build/tests/ +# tests fail as python3-widget is not in distribuion +ignore_tests="--ignore tests/test_embed/test_interpreter.py --ignore tests/test_embed/test_trampoline.py" +# no isolated build env with builddep wheels available +ignore_tests="$ignore_tests --ignore tests/extra_python_package/test_files.py" +%pytest $ignore_tests +%endif + +%pretrans devel -p +-- https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/ +-- rh#447156 +-- Define the paths to directory being replaced in the below. +-- DO NOT add a trailing slash at the end. +paths = {"%{python_sitelib}/pybind11/share/cmake/pybind11", "%{python_sitelib}/pybind11/include/pybind11"} +for i, path in ipairs(paths) do + st = posix.stat(path) + if st and st.type == "directory" then + status = os.rename(path, path .. ".rpmmoved") + if not status then + suffix = 0 + while not status do + suffix = suffix + 1 + status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix) + end + os.rename(path, path .. ".rpmmoved") + end + end +end + +%pre +# If libalternatives is used: Removing old update-alternatives entries. +%python_libalternatives_reset_alternative pybind11-config + +%post +%python_install_alternative pybind11-config + +%postun +%python_uninstall_alternative pybind11-config + +%if !%{with test} +%files %{python_files} +%doc README.rst docs/changelog.rst +%license LICENSE +%python_alternative %{_bindir}/pybind11-config +%{python_sitelib}/pybind11 +%exclude %{python_sitelib}/pybind11/share/cmake +%exclude %{python_sitelib}/pybind11/include +%{python_sitelib}/pybind11-%{version}*-info + +%files -n %{name}-common-devel +%license LICENSE +%{_includedir}/pybind11 +%{_datadir}/cmake/pybind11 +%{_datadir}/pkgconfig/pybind11.pc + +%files %{python_files devel} +%license LICENSE +%{python_sitelib}/pybind11/share/cmake +%ghost %{python_sitelib}/pybind11/share/cmake/pybind11.rpmmoved +%{python_sitelib}/pybind11/include +%ghost %{python_sitelib}/pybind11/include/pybind11.rpmmoved +%{python_sitelib}/pybind11/share/pkgconfig +%endif + +%changelog