* Removing last remnants of pragma block at the top of pybind11.h, defaulting CUDA, GCC7, GCC8 to PYBIND11_NOINLINE_DISABLED, with the option to define PYBIND11_NOINLINE_FORCED.
* Unique SOSIZE prefix to make it easier to extract the sosizes from the GitHub logs.
* Commenting out PYBIND11_WERROR block, for noinline testing.
* Undoing accidental change.
* `#define PYBIND11_NOINLINE_FORCED`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* `#define PYBIND11_NOINLINE_DISABLED`
* Going back to default (removing `#define PYBIND11_NOINLINE_DISABLED`).
* `#define PYBIND11_NOINLINE_FORCED`
* Undoing all changes releated to measuring sosizes.
* Rollback of PR #3030 (Working around Centos 8 failure).
* Disabling -Werror for GNU (experiment).
* Commenting out the entire `if(PYBIND11_WERROR)` again (although that is not expected to make a difference, but who knows what I am overlooking).
* Adding `-DCMAKE_BUILD_TYPE=Release`
* Undoing change to tests/CMakeLists.txt (uncommenting `if(PYBIND11_WERROR)` block).
* post `git rebase master -X theirs` fixups.
* Adding measurements to comment for `PYBIND11_NOINLINE_FORCED`.
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Apply isort
* Tweak isort config
* Add env.py as a known_first_party
* Add one missing known first party
* Make config compat with older isort versions
* Add another comment
* Revert pyproject setting
* Removing pragma for GCC -Wattributes, fixing forward declarations.
* Introducing PYBIND11_NOINLINE_FWD to deal with CUDA, GCC7, GCC8.
* Updating PYBIND11_NOINLINE_DCL in Doxyfile.
* Trying noinline, noinline for {CUDA, GCC7, GCC8}
* Trying noinline, inline for {CUDA, GCC7, GCC8}
* Adding GCC -Wattributes `pragma` in 3 header files.
* Introducing PYBIND11_NOINLINE_GCC_PRAGMA_ATTRIBUTES_NEEDED, used in 9 header files.
* Removing ICC pragma 2196, to see if it is still needed.
* Trying noinline, noinline for ICC
* Trying noinline, inline for ICC
* Restoring ICC pragma 2196, introducing PYBIND11_NOINLINE_FORCED, defined for testing.
* Removing code accidentally left in (was for experimentation only).
* Removing one-time-test define.
* Removing PYBIND11_NOINLINE_FWD macro (after learning that it makes no sense).
* Testing with PYBIND11_NOINLINE_DISABLED. Minor non-functional enhancements.
* Removing #define PYBIND11_NOINLINE_DISABLED (test was successful).
* Removing PYBIND11_NOINLINE_FORCED and enhancing comments for PYBIND11_NOINLINE.
* WIP stripping back
* Making -Wattributes pragma in pybind11 specific to GCC7, GCC8, CUDA.
* test_eval: Show example of working closure
* Extend test_eval_closure with weirder examples of closures for py::eval
Co-authored-by: Yannick Jadoul <yannick.jadoul@belgacom.net>
Co-authored-by: Aaron Gokaslan <skylion.aaron@gmail.com>
* Cleanup triggered by work on pragma for GCC -Wunused-but-set-parameter.
* Backing out changes to eigen.h (to be worked on later).
* Adding PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER in type_caster_base.h (apparently needed only for older GCCs).
* Apparently older compilers need a simpler overload for silence_unused_warnings().
* clang C++11 compatibility: removing constexpr
* Special case for MSVC 2017: `constexpr void` return
* Trying again without the silence_unused_warnings(const int *) overload.
* Separate macros for ALL_GCC, OLD_GCC_UNUSED_BUT_SET_PARAMETER
* Changing to __GNUC__ <= 2 (turning off)
* Refined condition for PYBIND11_WORKAROUND_INCORRECT_OLD_GCC_UNUSED_BUT_SET_PARAMETER.
* Quick experiment trying out suggestion by @henryiii
* Introducing macro: PYBIND11_INT_ARRAY_WORKING_AROUND_MSVC_CLANG_ISSUES
* Trying henryiii@ (void) expander idea.
* fix: apply simpler expression with fewer workarounds
* Purging new-but-already-obsoleted macro, made possible by @henryiii's commit.
* Renaming `ALL_GCC` macro back to just `GCC` (because there is no `OLD` anymore, luckily).
* [actions skip] Adding "All GCC versions" to comment, to be clear about it.
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
* Removing pragma for 4127 (to see what is still broken with the latest code).
* Using new constexpr_bool() to suppress warning C4127.
* One missed case, Python 2 only.
* PYBIND11_SILENCE_MSVC_C4127 (more similar to the approach for C4100).
* Moving pragma for C4505 from pybind11.h to existing list in detail/common.h.
* Removing 4 existing suppressions to 1. see what is still needed and 2. capture the MSVC messages.
* It turns out none of the 4 pragmas are needed anymore.
* mingw64 platform string is like mingw_xxx not "mingw"
See https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-python/0099-Change-the-get_platform-method-in-sysconfig-and-dist.patch
* Mingw: Do not dllexport exceptions
This is a fix for errors like:
D:/a/pybind11/pybind11/include/pybind11/detail/common.h:735:23: error: 'dllexport' implies default visibility, but 'class pybind11::builtin_exception' has already been declared with a different visibility
735 | class PYBIND11_EXPORT builtin_exception : public std::runtime_error {
| ^~~~~~~~~~~~~~~~~
* GHA: Test Mingw64 build
* fix: avoid thin binaries on mingw
* fix: drop lto on MinGW
* Mingw64: disable PYBIND11_DEPRECATED
It trigger many warnings for unknown reasons
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
* Moving pragma for ignoring -Wnoexcept-type to the one location where it is needed.
* Trying a second location.
* The previous commit worked (GitHub Actions green), but see the added comment about the dicy nature of -Wnoexcept-type ("if and only if").
* Applying reviewer suggestion.
* Removing pragma for 4100 (to see what is still broken with the latest code).
* Adding --keep-going
* Revert "Adding --keep-going"
This reverts commit 1c844c6ffd07a6111b644811e7e3b0a50b9d44bb.
* Introducing PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100.
* _MSC_VER <= 1916
* Replacing simple variadic function with variadic template (attempt to resolve MSVC 2017 failures).
* Preserving existing comment (moved from pybind11.h to detail/common.h).
* Adding blank lines for readability.
* Fixing `pragma warning pop` for `__INTEL_COMPILER`.
* Adding push/pop to 3 tests. Removing #878 from top of pybind11.h (it was/is only needed for 1 test).
* Trying again after CI failure, moving the push to the top of 2 tests.
* Trying more after CI failure, adding push/pop to pybind11_tests.h, constructor_stats.h.
* Moving ICC #2196 suppression to CMakeLists.txt
* Fixing condition for `pragma GCC diagnostic push` in pybind11.h
* Moving `pragma warning disable 2196` to common.h
* Revising #ifdef to be more conservative.
* Undoing insertion of notes that will hopefully soon be completely obsolete anyway.
* maint(clang-tidy) Improve code readability
* Fix minor typos
* Revert optimization that removed test case
* Fix comment formatting
* Revert another optimization to repro an issue
* Remove make_unique since it C++14 and newer only
* eformat comments
* Fix unsignedness of comparison
* Update comment
* Allow python builtins to be used as callbacks
* Try to fix pypy segfault
* Add expected fail for PyPy
* Fix typo
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Add more info to xfail
* Add env
* Try returning false
* Try removing the move for pypy
* Fix bugs
* Try removing move
* Just keep ignoring for PyPy
* Add back xfail
* Fix ctors
* Revert change of std::move
* Change to skip
* Fix bug and edit comments
* Remove clang-tidy bugprone fix skip bug
Co-authored-by: Aaron Gokaslan <skylion.aaron@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Adding PYBIND11_COMPAT_BOOL_CAST to appease MSVC 2015 warning C4800.
* Replacing PYBIND11_COMPAT_BOOL_CAST with simpler != 0
* Extra parentheses (almost all compilers failed without these).
* Removing MSVC C4996 from pragma block at the top of pybind11.h
* localtime_thread_safe, PYBIND11_COMPAT_STRDUP
* Adding #include <ctime> (attempt to fix MSVC 2015, 2017 errors).
* Create a module_internals struct
Since we now have two things that are going to be module local, it felt
correct to add a struct to manage them.
* Add local exception translators
These are added via the register_local_exception_translator function
and are then applied before the global translators
* Add unit tests to show the local exception translator works
* Fix a bug in the unit test with the string value of KeyError
* Fix a formatting issue
* Rename registered_local_types_cpp()
Rename it to get_registered_local_types_cpp() to disambiguate from the
new member of module_internals
* Add additional comments to new local exception code path
* Add a register_local_exception function
* Add additional unit tests for register_local_exception
* Use get_local_internals like get_internals
* Update documentation for new local exception feature
* Add back a missing space
* Clean-up some issues in the docs
* Remove the code duplication when translating exceptions
Separated out the exception processing into a standalone function in the
details namespace.
Clean-up some comments as per PR notes as well
* Remove the code duplication in register_exception
* Cleanup some formatting things caught by clang-format
* Remove the templates from exception translators
But I added a using declaration to alias the type.
* Remove the extra local from local_internals variable names
* Add an extra explanatory comment to local_internals
* Fix a typo in the code
* Enable -Wstrict-aliasing warning
* Narrow down the scope of -Wstrict-aliasing
* Go home, MSVC, you're drunk
* Make sure "pragma GCC" is not executed on ICC
Co-authored-by: Yannick Jadoul <yannick.jadoul@belgacom.net>