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.6 support #5177

Merged
merged 23 commits into from
Jun 22, 2024
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4886d87
Change Python version guard: PYTHON < 3.7 IS UNSUPPORTED.
Jun 19, 2024
78d36ef
Replace or remove Python 3.6 jobs.
Jun 19, 2024
b6eb928
Move appveyor to Python 3.8
Jun 19, 2024
2474969
Change `[tool.pylint]` `master.py-version` from `3.6` to `3.8`
Jun 20, 2024
79bf088
Change `[tool.pylint]` `master.py-version` to `3.7`
Jun 20, 2024
bc723d9
Remove `centos:7` job; Change almalinux:8 job to use Python 3.8
Jun 20, 2024
85a429b
Try 🐍 3.8 • ubuntu-20.04 • x64 without `-DCMAKE_CXX_FLAGS="-D_=1"`
Jun 20, 2024
16edc01
Update setup.cfg as suggested by @henryiii
Jun 20, 2024
b47e690
Try running `cmake --build . --target cpptest` on all platforms (`sta…
Jun 20, 2024
bbcd008
Disable deadsnakes jobs entirely.
Jun 20, 2024
a32f44d
Apply PR #5179: Add Python 3.10, 3.11, 3.12 to win32 job matrix.
Jun 20, 2024
51851f4
Add back `-DCMAKE_CXX_FLAGS="-D_=1"` but do not install boost in that…
Jun 20, 2024
9014bbc
PY_VERSION_HEX < 3.7 cleanup pass: include/pybind11
Jun 21, 2024
c498d72
WITH_THREAD cleanup pass: include/pybind11
Jun 21, 2024
b5cab43
Undo incorrect change.
Jun 21, 2024
b455b8f
Revert "Disable deadsnakes jobs entirely."
Jun 21, 2024
ef13237
WITH_THREAD cleanup pass: tests/
Jun 21, 2024
95198dc
Change Python version guard in pybind11/__init__.py: pybind11 does no…
Jun 21, 2024
08985d2
Merge branch 'master' into rm_py36
Jun 21, 2024
748706a
Misc cleanup pass
Jun 21, 2024
0e13588
chore: use future imports
henryiii Jun 22, 2024
63f2ca1
Update tests/test_numpy_array.py
henryiii Jun 22, 2024
97ec762
Update test_numpy_array.py
henryiii Jun 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ platform:
- x86
environment:
matrix:
- PYTHON: 36
- PYTHON: 38
CONFIG: Debug
install:
- ps: |
Expand Down
29 changes: 11 additions & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
matrix:
runs-on: [ubuntu-20.04, windows-2022, macos-13]
python:
- '3.6'
- '3.8'
- '3.9'
- '3.12'
- '3.13'
Expand All @@ -48,16 +48,17 @@ jobs:
include:
# Just add a key
- runs-on: ubuntu-20.04
python: '3.6'
python: '3.8'
args: >
-DPYBIND11_FINDPYTHON=ON
-DCMAKE_CXX_FLAGS="-D_=1"
exercise_D_: 1
- runs-on: ubuntu-20.04
python: 'pypy-3.8'
args: >
-DPYBIND11_FINDPYTHON=ON
- runs-on: windows-2019
python: '3.6'
python: '3.8'
args: >
-DPYBIND11_FINDPYTHON=ON
# Inject a couple Windows 2019 runs
Expand All @@ -82,7 +83,7 @@ jobs:

- name: Setup Boost (Linux)
# Can't use boost + define _
if: runner.os == 'Linux' && matrix.python != '3.6'
if: runner.os == 'Linux' && matrix.exercise_D_ != 1
run: sudo apt-get install libboost-dev

- name: Setup Boost (macOS)
Expand Down Expand Up @@ -655,15 +656,13 @@ jobs:
cmake --build build-17 --target test_cmake_build


# Testing on CentOS (manylinux uses a centos base, and this is an easy way
# to get GCC 4.8, which is the manylinux1 compiler).
# Testing on CentOS (manylinux uses a centos base).
centos:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
container:
- "centos:7" # GCC 4.8
- "almalinux:8"
- "almalinux:9"

Expand All @@ -673,18 +672,13 @@ jobs:
steps:
- name: Latest actions/checkout
uses: actions/checkout@v4
if: matrix.container != 'centos:7'

- name: Pin actions/checkout as required for centos:7
uses: actions/checkout@v3
if: matrix.container == 'centos:7'

- name: Add Python 3 (RHEL 7)
if: matrix.container == 'centos:7'
run: yum update -y && yum install -y python3-devel gcc-c++ make git
- name: Add Python 3.8
if: matrix.container == 'almalinux:8'
run: dnf update -y && dnf install -y python38-devel gcc-c++ make git

- name: Add Python 3 (RHEL 8+)
if: matrix.container != 'centos:7'
- name: Add Python 3 (default)
if: matrix.container != 'almalinux:8'
run: dnf update -y && dnf install -y python3-devel gcc-c++ make git

- name: Update pip
Expand Down Expand Up @@ -807,7 +801,6 @@ jobs:
fail-fast: false
matrix:
python:
- '3.6'
- '3.7'
- '3.8'
- '3.9'
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/pip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,18 @@ env:

jobs:
# This builds the sdists and wheels and makes sure the files are exactly as
# expected. Using Windows and Python 3.6, since that is often the most
# challenging matrix element.
# expected.
test-packaging:
name: 🐍 3.6 • 📦 tests • windows-latest
name: 🐍 3.8 • 📦 tests • windows-latest
runs-on: windows-latest

steps:
- uses: actions/checkout@v4

- name: Setup 🐍 3.6
- name: Setup 🐍 3.8
uses: actions/setup-python@v5
with:
python-version: 3.6
python-version: 3.8

- name: Prepare env
run: |
Expand Down
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ dependency.
Think of this library as a tiny self-contained version of Boost.Python
with everything stripped away that isn't relevant for binding
generation. Without comments, the core header files only require ~4K
lines of code and depend on Python (3.6+, or PyPy) and the C++
lines of code and depend on Python (3.7+, or PyPy) and the C++
standard library. This compact implementation was possible thanks to
some C++11 language features (specifically: tuples, lambda functions and
variadic templates). Since its creation, this library has grown beyond
Expand Down Expand Up @@ -79,7 +79,7 @@ Goodies
In addition to the core functionality, pybind11 provides some extra
goodies:

- Python 3.6+, and PyPy3 7.3 are supported with an implementation-agnostic
- Python 3.7+, and PyPy3 7.3 are supported with an implementation-agnostic
interface (pybind11 2.9 was the last version to support Python 2 and 3.5).

- It is possible to bind C++11 lambda functions with captured
Expand Down
2 changes: 2 additions & 0 deletions docs/benchmark.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

import datetime as dt
import os
import random
Expand Down
4 changes: 2 additions & 2 deletions docs/compiling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ with ``PYTHON_EXECUTABLE``. For example:

.. code-block:: bash

cmake -DPYBIND11_PYTHON_VERSION=3.6 ..
cmake -DPYBIND11_PYTHON_VERSION=3.7 ..

# Another method:
cmake -DPYTHON_EXECUTABLE=/path/to/python ..
Expand Down Expand Up @@ -493,7 +493,7 @@ existing targets instead:
cmake_minimum_required(VERSION 3.15...3.22)
project(example LANGUAGES CXX)

find_package(Python 3.6 COMPONENTS Interpreter Development REQUIRED)
find_package(Python 3.7 COMPONENTS Interpreter Development REQUIRED)
find_package(pybind11 CONFIG REQUIRED)
# or add_subdirectory(pybind11)

Expand Down
1 change: 1 addition & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#
# All configuration values have a default; values that are commented out
# serve to show the default.
from __future__ import annotations

import os
import re
Expand Down
14 changes: 3 additions & 11 deletions include/pybind11/detail/class.h
Original file line number Diff line number Diff line change
Expand Up @@ -567,17 +567,9 @@ inline void enable_dynamic_attributes(PyHeapTypeObject *heap_type) {
type->tp_traverse = pybind11_traverse;
type->tp_clear = pybind11_clear;

static PyGetSetDef getset[] = {{
#if PY_VERSION_HEX < 0x03070000
const_cast<char *>("__dict__"),
#else
"__dict__",
#endif
PyObject_GenericGetDict,
PyObject_GenericSetDict,
nullptr,
nullptr},
{nullptr, nullptr, nullptr, nullptr, nullptr}};
static PyGetSetDef getset[]
= {{"__dict__", PyObject_GenericGetDict, PyObject_GenericSetDict, nullptr, nullptr},
{nullptr, nullptr, nullptr, nullptr, nullptr}};
type->tp_getset = getset;
}

Expand Down
5 changes: 2 additions & 3 deletions include/pybind11/detail/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -272,9 +272,8 @@ PYBIND11_WARNING_DISABLE_MSVC(4505)
#endif

#include <Python.h>
// Reminder: WITH_THREAD is always defined if PY_VERSION_HEX >= 0x03070000
#if PY_VERSION_HEX < 0x03060000
# error "PYTHON < 3.6 IS UNSUPPORTED. pybind11 v2.9 was the last to support Python 2 and 3.5."
#if PY_VERSION_HEX < 0x03070000
# error "PYTHON < 3.7 IS UNSUPPORTED. pybind11 v2.12 was the last to support Python 3.6."
#endif
#include <frameobject.h>
#include <pythread.h>
Expand Down
Loading
Loading