Skip to content

Commit 3f03962

Browse files
authored
Merge pull request #537 from numpy/drop-py310
2 parents dac1e16 + c3a708a commit 3f03962

File tree

138 files changed

+387
-627
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+387
-627
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
strategy:
6363
fail-fast: false
6464
matrix:
65-
py: ["3.10", "3.11", "3.12", "3.13"]
65+
py: ["3.11", "3.12", "3.13"]
6666
steps:
6767
- uses: actions/checkout@v4
6868

@@ -80,7 +80,7 @@ jobs:
8080
strategy:
8181
fail-fast: false
8282
matrix:
83-
py: ["3.10", "3.11", "3.12", "3.13"]
83+
py: ["3.11", "3.12", "3.13"]
8484
steps:
8585
- uses: actions/checkout@v4
8686

@@ -100,7 +100,7 @@ jobs:
100100
fail-fast: false
101101
matrix:
102102
os: [ubuntu-latest, macos-latest, windows-latest]
103-
py: ["3.10", "3.11", "3.12", "3.13"]
103+
py: ["3.11", "3.12", "3.13"]
104104
steps:
105105
- uses: actions/checkout@v4
106106

docs/dev/index.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ installed. Now you can install the project with the dev dependencies:
99
uv sync
1010
```
1111

12-
You can also install it with a specific Python version, e.g. `3.10`, as
12+
You can also install it with a specific Python version, e.g. `3.11`, as
1313

1414
```shell
15-
uv sync --python 3.10
15+
uv sync --python 3.11
1616
```
1717

1818
## Linting and formatting with `ruff`
@@ -154,15 +154,13 @@ If all is good, then you should see something like this appear:
154154
ruff: OK ✔ in 0.05 seconds
155155
pytest: OK ✔ in 0.34 seconds
156156
3.11: OK ✔ in 20.44 seconds
157-
3.10: OK ✔ in 21.53 seconds
158157
3.12: OK ✔ in 22.32 seconds
159158
3.13: OK ✔ in 26.41 seconds
160159
basedpyright: OK ✔ in 27.33 seconds
161160
ruff: OK (0.05=setup[0.03]+cmd[0.01,0.01] seconds)
162161
pytest: OK (0.34=setup[0.02]+cmd[0.32] seconds)
163162
basedpyright: OK (27.33=setup[0.02]+cmd[27.31] seconds)
164163
mypy: OK (36.39=setup[0.02]+cmd[36.37] seconds)
165-
3.10: OK (21.53=setup[0.43]+cmd[21.10] seconds)
166164
3.11: OK (20.44=setup[0.42]+cmd[20.01] seconds)
167165
3.12: OK (22.32=setup[0.44]+cmd[21.88] seconds)
168166
3.13: OK (26.41=setup[0.48]+cmd[25.93] seconds)

docs/user/differences.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ But the now concrete scalar types will no longer accept *any* `#!py floating[T]`
4444

4545
Type parameters can instead use an abstract scalar type as an upper bound. So instead of
4646

47-
/// tab | Python 3.10 and above
47+
/// tab | Python 3.11 and above
4848

4949
```py
5050
import numpy as np
@@ -71,7 +71,7 @@ def f[NT: npt.NBitBase](x: np.floating[NT]) -> np.floating[NT]: ...
7171

7272
you can write
7373

74-
/// tab | Python 3.10 and above
74+
/// tab | Python 3.11 and above
7575

7676
```py
7777
import numpy as np
@@ -98,7 +98,7 @@ As you can see, this also makes the code more readable.
9898

9999
But what if that isn't possible? For instance, you might have the following function:
100100

101-
/// tab | Python 3.10 and above
101+
/// tab | Python 3.11 and above
102102

103103
```py
104104
import numpy as np

pyproject.toml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ classifiers = [
2323
"Operating System :: OS Independent",
2424
"Programming Language :: Python",
2525
"Programming Language :: Python :: 3",
26-
"Programming Language :: Python :: 3.10",
2726
"Programming Language :: Python :: 3.11",
2827
"Programming Language :: Python :: 3.12",
2928
"Programming Language :: Python :: 3.13",
@@ -35,7 +34,7 @@ packages = [
3534
{include = "src/numpy-stubs"},
3635
{include = "src/numtype"},
3736
]
38-
requires-python = ">=3.10"
37+
requires-python = ">=3.11"
3938
dependencies = []
4039

4140
[project.optional-dependencies]
@@ -62,7 +61,7 @@ list_and_test = [
6261
]
6362
types = [
6463
{include-group = "pytest"},
65-
"types-setuptools>=80.0.0.20250429",
64+
"types-setuptools>=80.1.0.20250503",
6665
"types-tabulate>=0.9.0.20241207",
6766
]
6867
basedpyright = [
@@ -269,7 +268,6 @@ env_list = [
269268
"pytest",
270269
"basedpyright",
271270
"mypy",
272-
"3.10",
273271
"3.11",
274272
"3.12",
275273
"3.13",

src/_numtype/__init__.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import decimal
66
import fractions
77
from collections.abc import Sequence
8-
from typing import Any, TypeAlias, type_check_only
9-
from typing_extensions import Never, Protocol, TypeAliasType, TypeVar
8+
from typing import Any, Never, TypeAlias, type_check_only
9+
from typing_extensions import Protocol, TypeAliasType, TypeVar
1010

1111
import numpy as np
1212
from numpy._typing import _NestedSequence

src/_numtype/_just.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
# pyright: reportIncompatibleMethodOverride=false
33

44
import datetime as dt
5-
from typing import Protocol, SupportsFloat, SupportsIndex, TypeAlias, final, type_check_only
6-
from typing_extensions import Self, TypeVar, override
5+
from typing import Protocol, Self, SupportsFloat, SupportsIndex, TypeAlias, final, type_check_only
6+
from typing_extensions import TypeVar, override
77

88
__all__ = ["Just", "JustBytes", "JustComplex", "JustFloat", "JustInt", "JustObject", "JustStr"]
99

src/_numtype/_shape.pyi

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing_extensions import TypeAliasType, Unpack
1+
from typing_extensions import TypeAliasType
22

33
__all__ = [
44
"Shape",
@@ -20,7 +20,7 @@ Shape2 = TypeAliasType("Shape2", tuple[int, int])
2020
Shape3 = TypeAliasType("Shape3", tuple[int, int, int])
2121
Shape4 = TypeAliasType("Shape4", tuple[int, int, int, int])
2222

23-
Shape1_ = TypeAliasType("Shape1_", tuple[int, Unpack[tuple[int, ...]]])
24-
Shape2_ = TypeAliasType("Shape2_", tuple[int, int, Unpack[tuple[int, ...]]])
25-
Shape3_ = TypeAliasType("Shape3_", tuple[int, int, int, Unpack[tuple[int, ...]]])
26-
Shape4_ = TypeAliasType("Shape4_", tuple[int, int, int, int, Unpack[tuple[int, ...]]])
23+
Shape1_ = TypeAliasType("Shape1_", tuple[int, *tuple[int, ...]])
24+
Shape2_ = TypeAliasType("Shape2_", tuple[int, int, *tuple[int, ...]])
25+
Shape3_ = TypeAliasType("Shape3_", tuple[int, int, int, *tuple[int, ...]])
26+
Shape4_ = TypeAliasType("Shape4_", tuple[int, int, int, int, *tuple[int, ...]])

src/numpy-stubs/@test/generated/emath.pyi

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/numpy-stubs/@test/generated/literal_bool_ops.pyi

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/numpy-stubs/@test/generated/ndarray_abs.pyi

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)