1. Jan 16, 2021
    • Axel Huebl's avatar
      ci: Intel icc/icpc via oneAPI (#2573) · 0b3df7f9
      Axel Huebl authored
      
      
      * CI: Intel icc/icpc via oneAPI
      
      Add testing for Intel icc/icpc via the oneAPI images.
      Intel oneAPI is in a late beta stage, currently shipping
      oneAPI beta09 with ICC 20.2.
      
      * CI: Skip Interpreter Tests for Intel
      
      Cannot find how to add this, neiter the package `libc6-dev` nor
      `intel-oneapi-mkl-devel` help when installed to solve this:
      ```
      -- Looking for C++ include pthread.h
      -- Looking for C++ include pthread.h - not found
      CMake Error at /__t/cmake/3.18.4/x64/cmake-3.18.4-Linux-x86_64/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
        Could NOT find Threads (missing: Threads_FOUND)
      Call Stack (most recent call first):
        /__t/cmake/3.18.4/x64/cmake-3.18.4-Linux-x86_64/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
        /__t/cmake/3.18.4/x64/cmake-3.18.4-Linux-x86_64/share/cmake-3.18/Modules/FindThreads.cmake:234 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
        tests/test_embed/CMakeLists.txt:17 (find_package)
      ```
      
      * CI: libc6-dev from GCC for ICC
      
      * CI: Run bare metal for oneAPI
      
      * CI: Ubuntu 18.04 for oneAPI
      
      * CI: Intel +Catch -Eigen
      
      * CI: CMake from Apt (ICC tests)
      
      * CI: Replace Intel Py with GCC Py
      
      * CI: Intel w/o GCC's Eigen
      
      * CI: ICC with verbose make
      
      * [Debug] Find core dump
      
      * tests: use arg{} instead of arg() for Intel
      
      * tests: adding a few more missing {}
      
      * fix: sync with @tobiasleibner's branch
      
      * fix: try ubuntu 20-04
      
      * fix: drop exit 1
      
      * style: clang tidy fix
      
      * style: fix missing NOLINT
      
      * ICC: Update Compiler Name
      
      Changed upstream with the last oneAPI release.
      
      * ICC CI: Downgrade pytest
      
      pytest 6 does not capture the `discard_as_unraisable` stderr and
      just writes a warning with its content instead.
      
      * Use new test pinning requirements.txt
      
      * tests: add notes about intel, cleanup
      
      Co-authored-by: default avatarHenry Schreiner <henryschreineriii@gmail.com>
      0b3df7f9
    • Yannick Jadoul's avatar
      Add a Valgrind build on debug Python 3.9 (#2746) · 0f8d5f2e
      Yannick Jadoul authored
      
      
      * Adding a valgrind build on debug Python 3.9
      
      Co-authored-by: default avatarBoris Staletic <boris.staletic@gmail.com>
      
      * Add Valgrind suppression files
      
      - Introduce suppression file, populate it with a first suppression taken from CPython, and fix one leak in the tests
      - Suppress leak in NumPy
      - More clean tests!
      - Tests with names a-e passing (except for test_buffer)
      - Suppress multiprocessing errors
      - Merge multiprocessing suppressions into other suppression files
      - Numpy seems to be spelled with a big P
      - Append single entry from valgrind-misc.supp to valgrind-python.supp, and make clear valgrind-python.supp is only CPython
      
      Co-authored-by: default avatarBoris Staletic <boris.staletic@gmail.com>
      
      * Enable test_virtual_functions with a workaround
      
      * Add a memcheck cmake target
      
      - Add a memcheck cmake target
      - Reformat cmake
      - Appease the formatting overlords - they are angry
      - Format CMake valgrind target decently
      
      * Update CI config to new action versions
      
      * fix: separate memcheck from pytest
      
      * ci: cleanup
      
      * Merge Valgrind and other deadsnakes builds
      
      Co-authored-by: default avatarBoris Staletic <boris.staletic@gmail.com>
      Co-authored-by: default avatarHenry Schreiner <henryschreineriii@gmail.com>
      0f8d5f2e
  2. Jan 15, 2021
    • heyer2's avatar
      fix: STATIC and SHARED flags not being detected (#2796) · 76a16007
      heyer2 authored
      
      
      * Fix STATIC and SHARED flags not being detected
      
      * fix: use classic naming for all lib types
      
      Co-authored-by: default avatarHenry Schreiner <henryschreineriii@gmail.com>
      76a16007
    • Yannick Jadoul's avatar
      Plug leaking function_records in cpp_function initialization in case of... · 08551463
      Yannick Jadoul authored
      Plug leaking function_records in cpp_function initialization in case of exceptions (found by Valgrind in #2746) (#2756)
      
      * Plug leaking function_record objects when exceptions are thrown
      
      * Plug leak of strdup'ed strings in function_record
      
      * Some extra comments about the function_record ownership dance
      
      * Clean up the function_record better, in case of exceptions
      
      * Demonstrate some extra function_record leaks
      
      * Change  DeleteStrings template argument to free_strings runtime argument in destruct(function_record *)
      
      * Zero-state unique_function_record deleter object
      
      * Clarify rvalue reference to unique_ptr parameter in initialize_generic
      
      * Use push_back with const char * instead of emplace_back
      08551463
  3. Jan 14, 2021
  4. Jan 02, 2021
    • Yannick Jadoul's avatar
      Ignore deprecation warnings about old-style __init__/__setstate__ constructors... · 98f1bbb8
      Yannick Jadoul authored
      Ignore deprecation warnings about old-style __init__/__setstate__ constructors in the tests (originally done in #2746) (#2759)
      
      * Ignore old-style __init__ warnings
      
      * Simplify ignoreOldStyleInitWarnings with py::exec
      
      * Only wrap single class_::defs to ignore DeprecationWarnings about old-style __init__
      98f1bbb8
    • Yannick Jadoul's avatar
      Fix various minor memory leaks in the tests (found by Valgrind in #2746) (#2758) · e57dd471
      Yannick Jadoul authored
      * Fix leak in the test_copy_move::test_move_fallback
      
      * Fix leaking PyMethodDef in test_class::test_implicit_conversion_life_support
      
      * Plumb leak in test_buffer, occuring when a mutable buffer is requested for a read-only object, and enable test_buffer.py
      
      * Fix weird return_value_policy::reference in test_stl_binders, and enable those tests
      
      * Cleanup nodelete holder objects in test_smart_ptr, and enable those tests
      e57dd471
  5. Jan 01, 2021
  6. Dec 29, 2020
  7. Dec 28, 2020
  8. Dec 24, 2020
    • Yannick Jadoul's avatar
      tests: update pytest 6.2.1 and fix test_python_alreadyset_in_destructor (#2741) · 830f8eda
      Yannick Jadoul authored
      * Update pytest to 6.2.1 in tests/requirements.txt
      
      * Pin pytest to last supported version for 3.5
      
      * Suppress PytestUnraisableExceptionWarning and use sys.__unraisablehook__ instead of sys.unraisablehook
      
      * Fix filterwarnings mark on old pytest and old Python versions
      
      * Cleanup ignore_pytest_unraisable_warning decorator
      830f8eda
    • Steve Siano's avatar
      docs: add a note about compiling the example (#2737) · 6f66e760
      Steve Siano authored
      * docs: mention PYTHONPATH in installing.rst
      
      When pybind11 is included as a submodule, the user needs to update their
      Python module search path.  Otherwise, the first c++ compilation command
      in docs/basics.rst will fail.
      
      * docs: add a note about compiling the example
      
      This note shows how to modify the compilation command for the example
      when the pybind11 source has been included as a Git submodule.
      
      * docs: add a note about compiling the example
      
      Added an internal link to the docs
      
      * docs: updated a note about compiling the example
      
      Also updated the command substitution syntax for consistency
      6f66e760
    • Eric Cousineau's avatar
  9. Dec 22, 2020
  10. Dec 20, 2020
  11. Dec 19, 2020
  12. Dec 16, 2020
    • Yannick Jadoul's avatar
      fix: also throw in the move-constructor added by the PYBIND11_OBJECT macro,... · 30eb39ed
      Yannick Jadoul authored
      fix: also throw in the move-constructor added by the PYBIND11_OBJECT macro, after the argument has been moved-out (if necessary) (#2701)
      
      30eb39ed
    • Robert Haschke's avatar
      style: remove redundant instance->owned = true (#2723) · d9fa7056
      Robert Haschke authored
      which was just before set to True in instance->allocate_layout()
      d9fa7056
    • Henry Schreiner's avatar
      fix: regression with installed pybind11 overriding local one (#2716) · ffb113d1
      Henry Schreiner authored
      * fix: regression with installed pybind11 overriding discovered one
      
      Closes #2709
      
      * docs: wording incorrect
      ffb113d1
    • Henry Schreiner's avatar
      ci: drop pypy2 linux, PGI 20.7, add Python 10 dev (#2724) · 499fcd54
      Henry Schreiner authored
      * ci: drop pypy2 linux, add Python 10 dev
      
      * ci: fix mistake
      
      * ci: commented-out PGI 20.11, drop 20.7
      499fcd54
    • Laramie Leavitt's avatar
      Adjusting `type_caster<std::reference_wrapper<T>>` to support const/non-const... · 5469c238
      Laramie Leavitt authored
      Adjusting `type_caster<std::reference_wrapper<T>>` to support const/non-const propagation in `cast_op`. (#2705)
      
      
      * Allow type_caster of std::reference_wrapper<T> to be the same as a native reference.
      
      Before, both std::reference_wrapper<T> and std::reference_wrapper<const T> would
      invoke cast_op<type>. This doesn't allow the type_caster<> specialization for T
      to distinguish reference_wrapper types from value types.
      
      After, the type_caster<> specialization invokes cast_op<type&>, which allows
      reference_wrapper to behave in the same way as a native reference type.
      
      * Add tests/examples for std::reference_wrapper<const T>
      
      * Add tests which use mutable/immutable variants
      
      This test is a chimera; it blends the pybind11 casters with a custom
      pytype implementation that supports immutable and mutable calls.
      
      In order to detect the immutable/mutable state, the cast_op needs
      to propagate it, even through e.g. std::reference<const T>
      
      Note: This is still a work in progress; some things are crashing,
      which likely means that I have a refcounting bug or something else
      missing.
      
      * Add/finish tests that distinguish const& from &
      
      Fixes the bugs in my custom python type implementation,
      demonstrate test that requires const& and reference_wrapper<const T>
      being treated differently from Non-const.
      
      * Add passing a const to non-const method.
      
      * Demonstrate non-const conversion of reference_wrapper in tests.
      
      Apply formatting presubmit check.
      
      * Fix build errors from presubmit checks.
      
      * Try and fix a few more CI errors
      
      * More CI fixes.
      
      * More CI fixups.
      
      * Try and get PyPy to work.
      
      * Additional minor fixups. Getting close to CI green.
      
      * More ci fixes?
      
      * fix clang-tidy warnings from presubmit
      
      * fix more clang-tidy warnings
      
      * minor comment and consistency cleanups
      
      * PyDECREF -> Py_DECREF
      
      * copy/move constructors
      
      * Resolve codereview comments
      
      * more review comment fixes
      
      * review comments: remove spurious &
      
      * Make the test fail even when the static_assert is commented out.
      
      This expands the test_freezable_type_caster a bit by:
      1/ adding accessors .is_immutable and .addr to compare identity
      from python.
      2/ Changing the default cast_op of the type_caster<> specialization
      to return a non-const value. In normal codepaths this is a reasonable
      default.
      3/ adding roundtrip variants to exercise the by reference, by pointer
      and by reference_wrapper in all call paths.  In conjunction with 2/, this
      demonstrates the failure case of the existing std::reference_wrpper conversion,
      which now loses const in a similar way that happens when using the default cast_op_type<>.
      
      * apply presubmit formatting
      
      * Revert inclusion of test_freezable_type_caster
      
      There's some concern that this test is a bit unwieldly because of the use
      of the raw <Python.h> functions. Removing for now.
      
      * Add a test that validates const references propagation.
      
      This test verifies that cast_op may be used to correctly detect
      const reference types when used with std::reference_wrapper.
      
      * mend
      
      * Review comments based changes.
      
      1. std::add_lvalue_reference<type> -> type&
      2. Simplify the test a little more; we're never returning the ConstRefCaster
      type so the class_ definition can be removed.
      
      * formatted files again.
      
      * Move const_ref_caster test to builtin_casters
      
      * Review comments: use cast_op and adjust some comments.
      
      * Simplify ConstRefCasted test
      
      I like this version better as it moves the assertion that matters
      back into python.
      5469c238
  13. Dec 09, 2020
  14. Nov 25, 2020
  15. Nov 24, 2020
  16. Nov 23, 2020