Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 3 additions & 6 deletions .github/workflows/reusable-cookie.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.13"]
python-version: ["3.10", "3.14"]
runs-on: [ubuntu-latest, windows-latest, macos-latest]

include:
- python-version: pypy-3.10
- python-version: pypy-3.11
runs-on: ubuntu-latest

steps:
Expand All @@ -38,9 +38,6 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
# Python 3.13.4 broken on Windows
check-latest: >-
${{ matrix.python-version == '3.13' && runner.os == 'Windows' }}

- name: Setup uv
uses: astral-sh/setup-uv@v7
Expand Down Expand Up @@ -76,7 +73,7 @@ jobs:
run: nox -s 'tests(setuptools, novcs)' -s 'tests(setuptools, vcs)'

- name: Native poetry tooling
if: matrix.python-version != 'pypy-3.10'
if: matrix.python-version != 'pypy-3.11'
run: |
nox -s 'native(poetry, novcs)'
nox -s 'native(poetry, vcs)'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-rr-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
runs-on: [ubuntu-latest, macos-14, windows-latest]

steps:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Check the key setup files, `pyproject.toml`, and possibly `setup.cfg` and
`setup.py` (pybind11 example). Update `README.md`. Also update and add docs to
`docs/`.

There are a few example dependencies and a minimum Python version of 3.9, feel
There are a few example dependencies and a minimum Python version of 3.10, feel
free to change it to whatever you actually need/want. There is also a basic
backports structure with a small typing example.

Expand Down
4 changes: 2 additions & 2 deletions docs/_includes/pyproject.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ authors = [
maintainers = [
{ name = "My Organization", email = "[email protected]" },
]
requires-python = ">=3.9"
requires-python = ">=3.10"

dependencies = [
"typing_extensions",
Expand All @@ -24,11 +24,11 @@ dependencies = [
classifiers = [
"Development Status :: 4 - Beta",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering :: Physics",
]

Expand Down
6 changes: 3 additions & 3 deletions docs/pages/guides/gha_basic.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,9 @@ tests:
fail-fast: false
matrix:
python-version:
- "3.9"
- "3.11"
- "3.13"
- "3.10"
- "3.12"
- "3.14"
name: Check Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v5
Expand Down
4 changes: 2 additions & 2 deletions docs/pages/guides/packaging_classic.md
Original file line number Diff line number Diff line change
Expand Up @@ -288,11 +288,11 @@ classifiers =
Programming Language :: C++
Programming Language :: Python
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
Programming Language :: Python :: 3.13
Programming Language :: Python :: 3.14
Topic :: Scientific/Engineering
Topic :: Scientific/Engineering :: Information Analysis
Topic :: Scientific/Engineering :: Mathematics
Expand All @@ -310,7 +310,7 @@ project_urls =
packages = find:
install_requires =
numpy>=1.19.3
python_requires = >=3.9
python_requires = >=3.10
include_package_data = True
package_dir =
=src
Expand Down
4 changes: 2 additions & 2 deletions docs/pages/guides/packaging_compiled.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ rand = "0.8.3"
[dependencies.pyo3]
version = "0.19.1"
# "extension-module" tells pyo3 we want to build an extension module (skips linking against libpython.so)
# "abi3-py39" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.9
features = ["extension-module", "abi3-py39"]
# "abi3-py310" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.10
features = ["extension-module", "abi3-py310"]
```
<!-- prettier-ignore-end -->
<!-- [[[end]]] -->
Expand Down
4 changes: 2 additions & 2 deletions docs/pages/guides/style.md
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@ this:
```ini
[tool.mypy]
files = "src"
python_version = "3.9"
python_version = "3.10"
strict = true
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
warn_unreachable = true
Expand Down Expand Up @@ -840,7 +840,7 @@ started:

```toml
[tool.pylint]
py-version = "3.9"
py-version = "3.10"
jobs = "0"
reports.output-format = "colorized"
similarities.ignore-imports = "yes"
Expand Down
4 changes: 2 additions & 2 deletions docs/pages/guides/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ customize the versions of Python prepared for you, then use input like this:
```yaml
- uses: wntrblm/[email protected]
with:
python-versions: "3.9, 3.10, 3.11, 3.12, 3.13, pypy-3.10"
python-versions: "3.10, 3.11, 3.12, 3.13, 3.13t, 3.14, 3.14t, pypy-3.11"
```

### Introduction
Expand Down Expand Up @@ -137,7 +137,7 @@ You can parametrize sessions. either on Python or on any other item.

```python
# Shortcut to parametrize Python
@nox.session(python=["3.9", "3.10", "3.11", "3.12", "3.13"])
@nox.session(python=["3.10", "3.11", "3.12", "3.13", "3.14"])
def my_session(session: nox.Session) -> None: ...


Expand Down
13 changes: 3 additions & 10 deletions {{cookiecutter.project_name}}/.github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.13"]
runs-on: [ubuntu-latest, windows-latest, macos-14]
python-version: ["3.10", "3.14"]
runs-on: [ubuntu-latest, windows-latest, macos-latest]

include:
- python-version: "pypy-3.10"
- python-version: "pypy-3.11"
runs-on: ubuntu-latest

steps:
Expand All @@ -60,13 +60,6 @@ jobs:
with:
python-version: {% raw %}${{ matrix.python-version }}{% endraw %}
allow-prereleases: true
{%- if cookiecutter.__type == "compiled" %}
{%- raw %}
# Python 3.13.4 broken on Windows
check-latest: >-
${{ matrix.python-version == '3.13' && runner.os == 'Windows' }}
{%- endraw %}
{%- endif %}

- uses: astral-sh/setup-uv@v6

Expand Down
8 changes: 4 additions & 4 deletions {{cookiecutter.project_name}}/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ license = "MIT"
{%- endif %}
license-files = ["LICENSE"]
{%- endif %}
requires-python = ">=3.9"
requires-python = ">=3.10"
classifiers = [
"Development Status :: 1 - Planning",
"Intended Audience :: Science/Research",
Expand All @@ -97,11 +97,11 @@ classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering",
"Typing :: Typed",
]
Expand Down Expand Up @@ -252,7 +252,7 @@ report.exclude_also = [

[tool.mypy]
files = ["src", "tests"]
python_version = "3.9"
python_version = "3.10"
warn_unused_configs = true
strict = true
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
Expand Down Expand Up @@ -309,7 +309,7 @@ isort.required-imports = ["from __future__ import annotations"]


[tool.pylint]
py-version = "3.9"
py-version = "3.10"
ignore-paths = [".*/_version.py"]
{%- if cookiecutter.__type == "compiled" %}
extension-pkg-allow-list = ["{{ cookiecutter.__project_slug }}._core"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ cache:
- .cache/pip
- .venv/

image: python:3.9-buster
image: python:3.10-buster
before_script:
# want to set up a virtualenv to cache
- apt-get install -y --no-install-recommends git
Expand Down Expand Up @@ -79,7 +79,7 @@ tests:
- python -m pytest -ra --cov={{ cookiecutter.project_name }}
parallel:
matrix:
- IMAGE: ['python:3.9-buster', 'python:3.11-buster']
- IMAGE: ['python:3.10-buster', 'python:3.11-buster']

{%- if cookiecutter.__type == "pure" %}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ rand = "0.8.3"
[dependencies.pyo3]
version = "0.19.1"
# "extension-module" tells pyo3 we want to build an extension module (skips linking against libpython.so)
# "abi3-py39" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.9
features = ["extension-module", "abi3-py39"]
# "abi3-py310" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.10
features = ["extension-module", "abi3-py310"]
Loading