1. 02 Nov, 2022 1 commit
    • Ethan Steinberg's avatar
      Fix functional.h bug + introduce test to verify that it is fixed (#4254) · ee2b5226
      Ethan Steinberg authored
      
      
      * Illustrate bug in functional.h
      
      * style: pre-commit fixes
      
      * Make functional casting more robust / add workaround
      
      * Make function_record* casting even more robust
      
      * See if this fixes PyPy issue
      
      * It still fails on PyPy sadly
      
      * Do not make new CTOR just yet
      
      * Fix test
      
      * Add name to ensure correctness
      
      * style: pre-commit fixes
      
      * Clean up tests + remove ifdef guards
      
      * Add comments
      
      * Improve comments, error handling, and safety
      
      * Fix compile error
      
      * Fix magic logic
      
      * Extract helper function
      
      * Fix func signature
      
      * move to local internals
      
      * style: pre-commit fixes
      
      * Switch to simpler design
      
      * style: pre-commit fixes
      
      * Move to function_record
      
      * style: pre-commit fixes
      
      * Switch to internals, update tests and docs
      
      * Fix lint
      
      * Oops, forgot to resolve last comment
      
      * Fix typo
      
      * Update in response to comments
      
      * Implement suggestion to improve test
      
      * Update comment
      
      * Simple fixes
      Co-authored-by: default avatarpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
      Co-authored-by: default avatarAaron Gokaslan <aaronGokaslan@gmail.com>
      ee2b5226
  2. 12 Feb, 2022 1 commit
  3. 11 Feb, 2022 1 commit
    • Ralf W. Grosse-Kunstleve's avatar
      Python 2 removal part 1: tests (C++ code is intentionally ~untouched) (#3688) · 6493f496
      Ralf W. Grosse-Kunstleve authored
      
      
      * `#error BYE_BYE_GOLDEN_SNAKE`
      
      * Removing everything related to 2.7 from ci.yml
      
      * Commenting-out Centos7
      
      * Removing `PYTHON: 27` from .appveyor.yml
      
      * "PY2" removal, mainly from tests. C++ code is not touched.
      
      * Systematic removal of `u` prefix from `u"..."` and `u'...'` literals. Collateral cleanup of a couple minor other things.
      
      * Cleaning up around case-insensitive hits for `[^a-z]py.*2` in tests/.
      
      * Removing obsolete Python 2 mention in compiling.rst
      
      * Proper `#error` for Python 2.
      
      * Using PY_VERSION_HEX to guard `#error "PYTHON 2 IS NO LONGER SUPPORTED.`
      
      * chore: bump pre-commit
      
      * style: run pre-commit for pyupgrade 3+
      
      * tests: use sys.version_info, not PY
      
      * chore: more Python 2 removal
      
      * Uncommenting Centos7 block (PR #3691 showed that it is working again).
      
      * Update pre-commit hooks
      
      * Fix pre-commit hook
      
      * refactor: remove Python 2 from CMake
      
      * refactor: remove Python 2 from setup code
      
      * refactor: simplify, better static typing
      
      * feat: fail with nice messages
      
      * refactor: drop Python 2 C++ code
      
      * docs: cleanup for Python 3
      
      * revert: intree
      
      revert: intree
      
      * docs: minor touchup to py2 statement
      Co-authored-by: default avatarHenry Schreiner <henryschreineriii@gmail.com>
      Co-authored-by: default avatarAaron Gokaslan <skylion.aaron@gmail.com>
      6493f496
  4. 08 Oct, 2021 1 commit
  5. 31 Aug, 2021 1 commit
    • Tailing Yuan's avatar
      fix: memory leak in cpp_function (#3228) (#3229) · d6474ed7
      Tailing Yuan authored
      
      
      * fix: memory leak in cpp_function (#3228)
      
      * add a test case to check objects are deconstructed in cpp_function
      
      * update the test case about cpp_function
      
      * fix the test case about cpp_function: remove "noexcept"
      
      * Actually calling func. CHECK(stat.alive() == 2); Manually verified that the new tests fails without the change in pybind11.h
      
      * Moving new test to test_callbacks.cpp,py, with small enhancements.
      
      * Removing new test from test_interpreter.cpp (after it was moved to test_callbacks.cpp,py). This restores test_interpreter.cpp to the current state on master.
      
      * Using py::detail::silence_unused_warnings(py_func); to make the intent clear.
      Co-authored-by: default avatarRalf W. Grosse-Kunstleve <rwgk@google.com>
      d6474ed7
  6. 13 Aug, 2021 1 commit
    • Aaron Gokaslan's avatar
      maint(precommit): Apply isort (#3195) · 9df2f1ff
      Aaron Gokaslan authored
      * 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
      9df2f1ff
  7. 29 Jul, 2021 1 commit
  8. 27 Jul, 2021 1 commit
  9. 13 Jul, 2021 1 commit
  10. 13 Apr, 2021 1 commit
  11. 03 Apr, 2021 1 commit
  12. 16 Oct, 2020 1 commit
  13. 20 Jul, 2020 1 commit
  14. 11 Jun, 2019 1 commit
  15. 05 Aug, 2017 1 commit
    • Jason Rhinelander's avatar
      Update all remaining tests to new test styles · 391c7544
      Jason Rhinelander authored
      This udpates all the remaining tests to the new test suite code and
      comment styles started in #898.  For the most part, the test coverage
      here is unchanged, with a few minor exceptions as noted below.
      
      - test_constants_and_functions: this adds more overload tests with
        overloads with different number of arguments for more comprehensive
        overload_cast testing.  The test style conversion broke the overload
        tests under MSVC 2015, prompting the additional tests while looking
        for a workaround.
      
      - test_eigen: this dropped the unused functions `get_cm_corners` and
        `get_cm_corners_const`--these same tests were duplicates of the same
        things provided (and used) via ReturnTester methods.
      
      - test_opaque_types: this test had a hidden dependence on ExampleMandA
        which is now fixed by using the global UserType which suffices for the
        relevant test.
      
      - test_methods_and_attributes: this required some additions to UserType
        to make it usable as a replacement for th...
      391c7544
  16. 29 Apr, 2017 1 commit
    • Jason Rhinelander's avatar
      functional: support bound methods · a01b6b80
      Jason Rhinelander authored
      If a bound std::function is invoked with a bound method, the implicit
      bound self is lost because we use `detail::get_function` to unbox the
      function.  This commit amends the code to use py::function and only
      unboxes in the special is-really-a-c-function case.  This makes bound
      methods stay bound rather than unbinding them by forcing extraction of
      the c function.
      a01b6b80
  17. 22 Feb, 2017 1 commit
    • Lunderberg's avatar
      Fixed compilation error when binding function accepting some forms of std::function (#689) · c7fcde7c
      Lunderberg authored
      * Fixed compilation error when defining function accepting some forms of std::function.
      
      The compilation error happens only when the functional.h header is
      present, and the build is done in debug mode, with NDEBUG being
      undefined.  In addition, the std::function must accept an abstract
      base class by reference.
      
      The compilation error occurred in cast.h, when trying to construct a
      std::tuple<AbstractBase>, rather than a std::tuple<AbstractBase&>.
      This was caused by functional.h using std::move rather than
      std::forward, changing the signature of the function being used.
      
      This commit contains the fix, along with a test that exhibits the
      issue when compiled in debug mode without the fix applied.
      
      * Moved new std::function tests into test_callbacks, added callback_with_movable test.
      c7fcde7c
  18. 19 Sep, 2016 1 commit
  19. 06 Sep, 2016 1 commit
    • Dean Moldovan's avatar
      Support keyword arguments and generalized unpacking in C++ · c743e1b1
      Dean Moldovan authored
      A Python function can be called with the syntax:
      ```python
      foo(a1, a2, *args, ka=1, kb=2, **kwargs)
      ```
      This commit adds support for the equivalent syntax in C++:
      ```c++
      foo(a1, a2, *args, "ka"_a=1, "kb"_a=2, **kwargs)
      ```
      
      In addition, generalized unpacking is implemented, as per PEP 448,
      which allows calls with multiple * and ** unpacking:
      ```python
      bar(*args1, 99, *args2, 101, **kwargs1, kz=200, **kwargs2)
      ```
      and
      ```c++
      bar(*args1, 99, *args2, 101, **kwargs1, "kz"_a=200, **kwargs2)
      ```
      c743e1b1
  20. 19 Aug, 2016 3 commits
    • Dean Moldovan's avatar
      382db5b2
    • Dean Moldovan's avatar
      Simplify tests by replacing output capture with asserts where possible · 665e8804
      Dean Moldovan authored
      The C++ part of the test code is modified to achieve this. As a result,
      this kind of test:
      
      ```python
      with capture:
          kw_func1(5, y=10)
      assert capture == "kw_func(x=5, y=10)"
      ```
      
      can be replaced with a simple:
      
      `assert kw_func1(5, y=10) == "x=5, y=10"`
      665e8804
    • Dean Moldovan's avatar
      Port tests to pytest · a0c1ccf0
      Dean Moldovan authored
      Use simple asserts and pytest's powerful introspection to make testing
      simpler. This merges the old .py/.ref file pairs into simple .py files
      where the expected values are right next to the code being tested.
      
      This commit does not touch the C++ part of the code and replicates the
      Python tests exactly like the old .ref-file-based approach.
      a0c1ccf0