Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: remove Python 3.7 support #5191

Merged
merged 18 commits into from
Jul 30, 2024
Merged

feat: remove Python 3.7 support #5191

merged 18 commits into from
Jul 30, 2024

Commits on Jun 24, 2024

  1. Configuration menu
    Copy the full SHA
    83b5ddc View commit details
    Browse the repository at this point in the history
  2. Remove jobs using silkeh/clang and gcc docker containers that come wi…

    …th Python 3.7
    Ralf W. Grosse-Kunstleve committed Jun 24, 2024
    Configuration menu
    Copy the full SHA
    2f24de5 View commit details
    Browse the repository at this point in the history
  3. Add silkeh/clang:17-bookworm

    Ralf W. Grosse-Kunstleve committed Jun 24, 2024
    Configuration menu
    Copy the full SHA
    e4279a2 View commit details
    Browse the repository at this point in the history
  4. Add job using GCC 7

    Ralf W. Grosse-Kunstleve committed Jun 24, 2024
    Configuration menu
    Copy the full SHA
    518515a View commit details
    Browse the repository at this point in the history
  5. Revert "Add job using GCC 7"

    This reverts commit 518515a.
    Ralf W. Grosse-Kunstleve committed Jun 24, 2024
    Configuration menu
    Copy the full SHA
    b339dc4 View commit details
    Browse the repository at this point in the history
  6. Try running in ubuntu-18.04 container under ubuntu-latest (to get GCC 7)

    Ralf W. Grosse-Kunstleve committed Jun 24, 2024
    Configuration menu
    Copy the full SHA
    b203a29 View commit details
    Browse the repository at this point in the history
  7. Fix - vs : mixup.

    Ralf W. Grosse-Kunstleve committed Jun 24, 2024
    Configuration menu
    Copy the full SHA
    b1c4304 View commit details
    Browse the repository at this point in the history

Commits on Jun 25, 2024

  1. This reverts commit b1c4304.

    Revert "Try running in ubuntu:18.04 container under ubuntu-latest (to get GCC 7)"
    
    This reverts commit b203a29.
    Ralf W. Grosse-Kunstleve committed Jun 25, 2024
    Configuration menu
    Copy the full SHA
    2324df0 View commit details
    Browse the repository at this point in the history
  2. git grep 0x03080000 cleanup.

    Ralf W. Grosse-Kunstleve committed Jun 25, 2024
    Configuration menu
    Copy the full SHA
    af537e7 View commit details
    Browse the repository at this point in the history
  3. git grep -I -E '3\.7' cleanup.

    Removes two changes made under pybind#3702
    Ralf W. Grosse-Kunstleve committed Jun 25, 2024
    Configuration menu
    Copy the full SHA
    bb5b9d1 View commit details
    Browse the repository at this point in the history
  4. Revert "git grep -I -E '3\.7' cleanup."

    This reverts commit bb5b9d1.
    Ralf W. Grosse-Kunstleve committed Jun 25, 2024
    Configuration menu
    Copy the full SHA
    551740d View commit details
    Browse the repository at this point in the history
  5. Remove comments that are evidently incorrect:

    ```
    ...
    -- The CXX compiler identification is Clang 15.0.7
    ...
    - Found Python: /usr/bin/python3.9 (found suitable version "3.9.2", minimum required is "3.7") found components: Interpreter Development.Module Development.Embed
    ...
    /__w/pybind11/pybind11/include/pybind11/gil.h:150:13: error: 'auto key' can be declared as 'auto *key' [readability-qualified-auto,-warnings-as-errors]
                auto key = internals.tstate;
                ^~~~~
                auto *
    /__w/pybind11/pybind11/include/pybind11/gil.h:174:13: error: 'auto key' can be declared as 'auto *key' [readability-qualified-auto,-warnings-as-errors]
                auto key = detail::get_internals().tstate;
                ^~~~~
                auto *
    ```
    Ralf W. Grosse-Kunstleve committed Jun 25, 2024
    Configuration menu
    Copy the full SHA
    b3102c4 View commit details
    Browse the repository at this point in the history
  6. .github/workflows/configure.yml: Change from Python 3.7 to 3.8

    Ralf W. Grosse-Kunstleve committed Jun 25, 2024
    Configuration menu
    Copy the full SHA
    e10d268 View commit details
    Browse the repository at this point in the history
  7. Misc cleanup pass

    Ralf W. Grosse-Kunstleve committed Jun 25, 2024
    Configuration menu
    Copy the full SHA
    d255d63 View commit details
    Browse the repository at this point in the history

Commits on Jul 28, 2024

  1. Merge branch 'master' into rm_py37

    Ralf W. Grosse-Kunstleve committed Jul 28, 2024
    Configuration menu
    Copy the full SHA
    5de1214 View commit details
    Browse the repository at this point in the history
  2. Miscellaneous changes based on manual review of the git grep matche…

    …s below:
    
    ```
    git_grep_37_38.sh |& sort | uniq -c
    ```
    
    With git_grep_37_38.sh:
    
    ```
    set -x
    git grep 0x0307
    git grep 0x0308
    git grep PY_MINOR_VERSION
    git grep PYPY_VERSION
    git grep -I -E '3\.7'
    git grep -I -E '3\.8'
    git grep -I -E '\(3, 7'
    git grep -I -E '\(3, 8'
    git grep -I -E '3[^A-Za-z0-9.]+7'
    git grep -I -E '3[^A-Za-z0-9.]+8'
    ```
    
    Output:
    
    ```
          1 .appveyor.yml:    $env:CMAKE_INCLUDE_PATH = "eigen-3.3.7;$env:CMAKE_INCLUDE_PATH"
          1 .appveyor.yml:    7z x eigen-3.3.7.zip -y > $null
          1 .appveyor.yml:    Start-FileDownload 'https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.zip'
          1 CMakeLists.txt:    # Bug in macOS CMake < 3.7 is unable to download catch
          1 CMakeLists.txt:  elseif(WINDOWS AND CMAKE_VERSION VERSION_LESS 3.8)
          1 CMakeLists.txt:  if(OSX AND CMAKE_VERSION VERSION_LESS 3.7)
          1 CMakeLists.txt:    message(WARNING "CMAKE 3.7+ needed on macOS to download catch, and newer HIGHLY recommended")
          1 CMakeLists.txt:    message(WARNING "CMAKE 3.8+ tested on Windows, previous versions untested")
          1 CMakeLists.txt:    # Only tested with 3.8+ in CI.
          1 docs/advanced/functions.rst:Python 3.8 introduced a new positional-only argument syntax, using ``/`` in the
          1 docs/changelog.rst:* Adapt pybind11 to a C API convention change in Python 3.8. `pybind#1950
          1 docs/changelog.rst:* Allow thread termination to be avoided during shutdown for CPython 3.7+ via
          1 docs/changelog.rst:  considered as conversion, consistent with Python 3.8+.
          1 docs/changelog.rst:  CPython 3.8 and 3.9 debug builds.
          1 docs/changelog.rst:* Enum now has an ``__index__`` method on Python <3.8 too.
          1 docs/changelog.rst:  on Python 3.8. `pybind#1780 <https://github.com/pybind/pybind11/pull/1780>`_.
          1 docs/changelog.rst:* PyPy 3.10 support was added, PyPy 3.7 support was dropped.
          2 docs/changelog.rst:* Support PyPy 7.3.7 and the PyPy3.8 beta. Test python-3.11 on PRs with the
          1 docs/changelog.rst:* Use ``macos-13`` (Intel) for CI jobs for now (will drop Python 3.7 soon).
          1 docs/changelog.rst:* Use new Python 3.7 Thread Specific Storage (TSS) implementation if available.
          1 docs/compiling.rst:    cmake -DPYBIND11_PYTHON_VERSION=3.8 ..
          1 docs/compiling.rst:    find_package(Python 3.8 COMPONENTS Interpreter Development REQUIRED)
          1 docs/limitations.rst:- PyPy3 7.3.1 and 7.3.2 have issues with several tests on 32-bit Windows.
          1 docs/requirements.txt:idna==3.7 \
          1 + git grep 0x0307
          1 + git grep 0x0308
          1 + git grep -I -E '\(3, 7'
          1 + git grep -I -E '3\.7'
          1 + git grep -I -E '\(3, 8'
          1 + git grep -I -E '3\.8'
          1 + git grep -I -E '3[^A-Za-z0-9.]+7'
          1 + git grep -I -E '3[^A-Za-z0-9.]+8'
          1 + git grep PY_MINOR_VERSION
          1 + git grep PYPY_VERSION
          2 .github/workflows/ci.yml:        - '3.8'
          1 .github/workflows/ci.yml:        - 3.8
          1 .github/workflows/ci.yml:    - name: Add Python 3.8
          1 .github/workflows/ci.yml:        - 'pypy-3.8'
          2 .github/workflows/ci.yml:            python: '3.8'
          1 .github/workflows/ci.yml:          - python: '3.8'
          1 .github/workflows/ci.yml:          - python: 3.8
          1 .github/workflows/ci.yml:            python: 'pypy-3.8'
          1 .github/workflows/configure.yml:          cmake: "3.8"
          1 .github/workflows/configure.yml:    name: 🐍 3.8 • CMake ${{ matrix.cmake }} • ${{ matrix.runs-on }}
          1 .github/workflows/configure.yml:    - name: Setup Python 3.8
          1 .github/workflows/configure.yml:        python-version: 3.8
          1 .github/workflows/pip.yml:    name: 🐍 3.8 • 📦 & 📦 tests • ubuntu-latest
          1 .github/workflows/pip.yml:    name: 🐍 3.8 • 📦 tests • windows-latest
          2 .github/workflows/pip.yml:    - name: Setup 🐍 3.8
          2 .github/workflows/pip.yml:        python-version: 3.8
          2 include/pybind11/cast.h:#if !defined(PYPY_VERSION)
          2 include/pybind11/cast.h:#if defined(PYPY_VERSION)
          2 include/pybind11/cast.h:            // PyPy: 7.3.7's 3.8 does not implement PyLong_*'s __index__ calls.
          5 include/pybind11/detail/class.h:#if !defined(PYPY_VERSION)
          1 include/pybind11/detail/class.h:#if defined(PYPY_VERSION)
          1 include/pybind11/detail/class.h:    // This was not needed before Python 3.8 (Python issue 35810)
          1 include/pybind11/detail/common.h:    && !defined(PYPY_VERSION) && !defined(PYBIND11_ASSERT_GIL_HELD_INCREF_DECREF)
          2 include/pybind11/detail/common.h:#    error "PYTHON < 3.8 IS UNSUPPORTED. pybind11 v2.13 was the last to support Python 3.7."
          1 include/pybind11/detail/common.h:#if defined(PYPY_VERSION) && !defined(PYBIND11_SIMPLE_GIL_MANAGEMENT)
          1 include/pybind11/detail/common.h:#if PY_VERSION_HEX < 0x03080000
          1 include/pybind11/detail/common.h:            = PYBIND11_TOSTRING(PY_MAJOR_VERSION) "." PYBIND11_TOSTRING(PY_MINOR_VERSION);        \
          1 include/pybind11/detail/internals.h:        // called. PYBIND11_TLS_FREE is PyThread_tss_free on python 3.7+. On older python, it does
          1 include/pybind11/detail/internals.h:#if PYBIND11_INTERNALS_VERSION <= 4 || defined(PYPY_VERSION)
          1 include/pybind11/detail/internals.h:// The old Python Thread Local Storage (TLS) API is deprecated in Python 3.7 in favor of the new
          1 include/pybind11/detail/type_caster_base.h:#if defined(PYPY_VERSION)
          1 include/pybind11/embed.h:#    define PYBIND11_PYCONFIG_SUPPORT_PY_VERSION_HEX (0x03080000)
          1 include/pybind11/embed.h:#if defined(PYPY_VERSION)
          1 include/pybind11/eval.h:    // globals if not yet present.  Python 3.8 made PyRun_String behave
          2 include/pybind11/eval.h:#if defined(PYPY_VERSION)
          2 include/pybind11/eval.h:    // was missing from PyPy3.8 7.3.7.
          2 include/pybind11/gil.h:    /// allowed during shutdown. Check _Py_IsFinalizing() on Python 3.7+, and
          1 include/pybind11/pybind11.h:#if !defined(PYPY_VERSION)
          4 include/pybind11/pybind11.h:#if !defined(PYPY_VERSION) && PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION == 9
          1 include/pybind11/pytypes.h:#endif //! defined(PYPY_VERSION)
          2 include/pybind11/pytypes.h:#if !defined(PYPY_VERSION)
          1 include/pybind11/pytypes.h:#    if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x07030a00
          1 include/pybind11/pytypes.h:#ifdef PYPY_VERSION
          1 include/pybind11/stl/filesystem.h:#    if !defined(PYPY_VERSION)
          2 pybind11/__init__.py:if sys.version_info < (3, 8):
          2 pybind11/__init__.py:    msg = "pybind11 does not support Python < 3.8. v2.13 was the last release supporting Python 3.7."
          1 pyproject.toml:master.py-version = "3.8"
          1 pyproject.toml:python_version = "3.8"
          1 README.rst:lines of code and depend on Python (3.8+, or PyPy) and the C++
          2 README.rst:- Python 3.8+, and PyPy3 7.3 are supported with an implementation-agnostic
          1 setup.cfg:    Programming Language :: Python :: 3.8
          1 setup.cfg:python_requires = >=3.8
          1 setup.py:# TODO: use literals & overload (typing extensions or Python 3.8)
          1 tests/CMakeLists.txt:if(NOT CMAKE_VERSION VERSION_LESS 3.8)
          2 tests/constructor_stats.h:#if defined(PYPY_VERSION)
          1 tests/env.py:    doesn't work on CPython 3.8.0 with pytest==3.3.2 on Ubuntu 18.04 (pybind#2922).
          1 tests/requirements.txt:build~=1.0; python_version>="3.8"
          1 tests/requirements.txt:numpy~=1.21.5; platform_python_implementation!="PyPy" and python_version>="3.8" and python_version<"3.10"
          1 tests/requirements.txt:numpy~=1.23.0; python_version=="3.8" and platform_python_implementation=="PyPy"
          1 tests/test_buffers.py:    env.PYPY, reason="PyPy 7.3.7 doesn't clear this anymore", strict=False
          1 tests/test_builtin_casters.py:    # Before Python 3.8, `PyLong_AsLong` does not pick up on `obj.__index__`,
          2 tests/test_builtin_casters.py:    if (3, 8) <= sys.version_info < (3, 10) and env.CPYTHON:
          4 tests/test_builtin_casters.py:    # TODO: PyPy 3.8 does not behave like CPython 3.8 here yet (7.3.7)
          1 tests/test_callbacks.py:    assert m.test_callback3(z.double) == "func(43) = 86"
          2 tests/test_call_policies.cpp:#if !defined(PYPY_VERSION)
          1 tests/test_chrono.py:    diff = m.test_chrono_float_diff(43.789012, 1.123456)
          1 tests/test_constants_and_functions.py:    assert m.f3(86) == 89
          1 tests/test_eigen_matrix.py:    a_copy3[8, 1] = 11
          1 tests/test_eigen_matrix.py:    assert np.all(cornersc == np.array([[1.0, 3], [7, 9]]))
          1 tests/test_eigen_matrix.py:    assert np.all(cornersr == np.array([[1.0, 3], [7, 9]]))
          1 tests/test_eigen_matrix.py:        mymat = chol(np.array([[1.0, 2, 4], [2, 13, 23], [4, 23, 77]]))
          1 tests/test_exceptions.py:    if hasattr(pytest, unraisable):  # Python >= 3.8 and pytest >= 6
          2 tests/test_exceptions.py:@pytest.mark.xfail(env.PYPY, reason="Failure on PyPy 3.8 (7.3.7)", strict=False)
          1 tests/test_factory_constructors.py:    assert [i.alive() for i in cstats] == [13, 7]
          1 tests/test_kwargs_and_defaults.cpp:#ifdef PYPY_VERSION
          1 tests/test_local_bindings.py:    assert i1.get3() == 8
          1 tests/test_methods_and_attributes.cpp:#if !defined(PYPY_VERSION)
          1 tests/test_numpy_array.py:    a = np.arange(3 * 7 * 2) + 1
          1 tests/test_numpy_array.py:    assert str(excinfo.value) == "cannot reshape array of size 42 into shape (3,7,1)"
          2 tests/test_numpy_array.py:    assert x.shape == (3, 7, 2)
          2 tests/test_numpy_array.py:        m.reshape_tuple(a, (3, 7, 1))
          2 tests/test_numpy_array.py:    x = m.reshape_tuple(a, (3, 7, 2))
          1 tests/test_numpy_vectorize.py:    assert np.isclose(m.vectorized_func3(np.array(3 + 7j)), [6 + 14j])
          1 tests/test_pickling.cpp:#if !defined(PYPY_VERSION)
          1 tests/test_pytypes.cpp:#if (defined(__APPLE__) && defined(__clang__)) || defined(PYPY_VERSION)
          1 tests/test_smart_ptr.cpp:    m.def("make_myobject3_1", []() { return new MyObject3(8); });
          1 tests/test_smart_ptr.py:    assert cstats.values() == ["MyObject3[9]", "MyObject3[8]", "MyObject3[9]"]
          1 tests/test_stl_binders.py:    assert v_int2 == m.VectorInt([0, 99, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 88])
          1 tests/test_stl_binders.py:    assert v_int2 == m.VectorInt([0, 99, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 88, 4])
          1 tests/test_type_caster_pyobject_ptr.cpp:#if !defined(PYPY_VERSION) // It is not worth the trouble doing something special for PyPy.
          1 tools/FindPythonLibsNew.cmake:  set(PythonLibsNew_FIND_VERSION "3.8")
          1 tools/JoinPaths.cmake:# https://docs.python.org/3.7/library/os.path.html#os.path.join
          1 tools/pybind11NewTools.cmake:    Python 3.8 REQUIRED COMPONENTS ${_pybind11_interp_component} ${_pybind11_dev_component}
          1 tools/pybind11NewTools.cmake:# Python debug libraries expose slightly different objects before 3.8
          1 tools/pybind11Tools.cmake:    "3.12;3.11;3.10;3.9;3.8"
          1 tools/pybind11Tools.cmake:    if(NOT DEFINED PYPY_VERSION)
          1 tools/pybind11Tools.cmake:    message(STATUS "PYPY ${PYPY_VERSION} (Py ${PYTHON_VERSION})")
          1 tools/pybind11Tools.cmake:# Python debug libraries expose slightly different objects before 3.8
          1 tools/pybind11Tools.cmake:      set(PYPY_VERSION
    ```
    Ralf W. Grosse-Kunstleve committed Jul 28, 2024
    Configuration menu
    Copy the full SHA
    4b25159 View commit details
    Browse the repository at this point in the history

Commits on Jul 29, 2024

  1. Merge branch 'master' into rm_py37

    Ralf W. Grosse-Kunstleve committed Jul 29, 2024
    Configuration menu
    Copy the full SHA
    64a7b44 View commit details
    Browse the repository at this point in the history

Commits on Jul 30, 2024

  1. Change [tool.ruff] target-version to "py38", as suggested by @S…

    Ralf W. Grosse-Kunstleve committed Jul 30, 2024
    Configuration menu
    Copy the full SHA
    49580cf View commit details
    Browse the repository at this point in the history