1. 01 Jan, 2021 1 commit
    • 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
  2. 31 Dec, 2020 2 commits
  3. 28 Dec, 2020 1 commit
  4. 19 Dec, 2020 1 commit
  5. 16 Dec, 2020 3 commits
    • 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
    • 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
  6. 23 Nov, 2020 3 commits
  7. 19 Nov, 2020 1 commit
  8. 12 Nov, 2020 1 commit
  9. 11 Nov, 2020 1 commit
  10. 10 Nov, 2020 1 commit
  11. 09 Nov, 2020 1 commit
  12. 05 Nov, 2020 1 commit
  13. 02 Nov, 2020 1 commit
  14. 29 Oct, 2020 1 commit
  15. 27 Oct, 2020 1 commit
  16. 21 Oct, 2020 3 commits
    • Wenzel Jakob's avatar
      86d3e9eb
    • Wenzel Jakob's avatar
      v2.6.0 release · 59a2ac27
      Wenzel Jakob authored
      59a2ac27
    • Boris Staletic's avatar
      Remove friend declaration of py::class_ in py::detail::generic_type (#2613) · 4038542b
      Boris Staletic authored
      This line had two bugs:
      
      1. It declares `py::detail::class_` as `friend`.
      2. After fixing that, we would have to change it to
         `template <typename, typename...>`
      
      The first one was introduced ~5 years ago, when a large refactoring was
      made, probably as an intermediate step during refactoring.
      
      The second was made when `generic_type` was made to be agnostic with
      respect to the order of `py::class_` template parameters.
      
      &nbsp;
      
      We're removing the declaration altogether, because it was never relied
      on. This is what makes me think that it was an intermediate step in
      refactoring that shouldn't have ended up in commit history.
      4038542b
  17. 20 Oct, 2020 1 commit
  18. 16 Oct, 2020 3 commits
  19. 15 Oct, 2020 3 commits
  20. 14 Oct, 2020 2 commits
  21. 13 Oct, 2020 1 commit
  22. 12 Oct, 2020 2 commits
  23. 09 Oct, 2020 4 commits
  24. 08 Oct, 2020 1 commit
    • Yannick Jadoul's avatar
      Check scope's __dict__ instead of using hasattr when registering classes and exceptions (#2335) · 71aea49b
      Yannick Jadoul authored
      * Check scope's __dict__ instead of using hasattr when registering classes and exceptions, to allow registering the same name in a derived class scope
      
      * Extend test_base_and_derived_nested_scope test
      
      * Add tests on error being thrown registering duplicate classes
      
      * Circumvent bug with combination of test_class.py::test_register_duplicate_class and test_factory_constructors.py::test_init_factory_alias
      71aea49b