Skip to content

Commit f3046d4

Browse files
authored
Drop Python 3.9 support
* Upgrade pre-commit dependencies * Run pre-commit * Upgrade Python requirements * Add support for Python 3.14
1 parent ed1f2d6 commit f3046d4

File tree

8 files changed

+33
-41
lines changed

8 files changed

+33
-41
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
- name: "Set up Python"
1212
uses: "actions/setup-python@v5"
1313
with:
14-
python-version: "3.9"
14+
python-version: "3.10"
1515
- name: "Build distribution packages"
1616
run: make package-check
1717
- name: "Save distribution directory"

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ jobs:
1414
fail-fast: false
1515
matrix:
1616
python-version: [
17-
"3.9",
1817
"3.10",
1918
"3.11",
2019
"3.12",
2120
"3.13",
21+
"3.14",
2222
]
2323
steps:
2424
- name: "Check out repository"

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
rev: v0.12.7
3+
rev: v0.14.5
44
hooks:
55
- id: ruff
66
args: [--fix, --exit-non-zero-on-fix]

README.md

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,13 @@ Calling the module from Python:
4848
E.g.:
4949

5050
```python
51-
Python 3.9.18 (main, Nov 14 2023, 15:21:53)
52-
[GCC 11.4.0] on linux
53-
Type "help", "copyright", "credits" or "license" for more information.
54-
>>> from amclient import AMClient
55-
>>> am = AMClient()
56-
>>> am.ss_url = "http://127.0.0.1:62081"
57-
>>> am.ss_user_name = "test"
58-
>>> am.ss_api_key = "test"
59-
>>> am.list_storage_locations()
60-
...json is output here...
51+
from amclient import AMClient
52+
am = AMClient()
53+
am.ss_url = "http://127.0.0.1:62081"
54+
am.ss_user_name = "test"
55+
am.ss_api_key = "test"
56+
am.list_storage_locations()
57+
# ...json is output here...
6158
```
6259

6360
## CONTRIBUTING

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ dynamic = [
1717
"readme",
1818
]
1919
description = "Archivematica API client library."
20-
requires-python = ">=3.9"
20+
requires-python = ">=3.10"
2121
license = {file = "LICENSE"}
2222
dependencies = [
2323
"requests",
@@ -34,11 +34,11 @@ classifiers = [
3434
"License :: OSI Approved :: GNU Affero General Public License v3",
3535
"Operating System :: POSIX :: Linux",
3636
"Programming Language :: Python :: 3 :: Only",
37-
"Programming Language :: Python :: 3.9",
3837
"Programming Language :: Python :: 3.10",
3938
"Programming Language :: Python :: 3.11",
4039
"Programming Language :: Python :: 3.12",
4140
"Programming Language :: Python :: 3.13",
41+
"Programming Language :: Python :: 3.14",
4242
]
4343
authors = [
4444
{name = "Artefactual Systems Inc.", email = "[email protected]"}

requirements-dev.txt

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,32 @@
11
#
2-
# This file is autogenerated by pip-compile with Python 3.9
2+
# This file is autogenerated by pip-compile with Python 3.10
33
# by the following command:
44
#
55
# pip-compile --allow-unsafe --extra=dev --output-file=requirements-dev.txt pyproject.toml
66
#
77
build==1.3.0
88
# via pip-tools
9-
certifi==2025.8.3
9+
certifi==2025.11.12
1010
# via requests
11-
charset-normalizer==3.4.2
11+
charset-normalizer==3.4.4
1212
# via requests
13-
click==8.1.8
13+
click==8.3.1
1414
# via pip-tools
15-
coverage[toml]==7.10.2
15+
coverage[toml]==7.12.0
1616
# via
1717
# amclient (pyproject.toml)
1818
# pytest-cov
1919
exceptiongroup==1.3.0
2020
# via pytest
21-
idna==3.10
21+
idna==3.11
2222
# via requests
23-
importlib-metadata==8.7.0
24-
# via build
25-
iniconfig==2.1.0
23+
iniconfig==2.3.0
2624
# via pytest
2725
packaging==25.0
2826
# via
2927
# build
3028
# pytest
31-
pip-tools==7.5.0
29+
pip-tools==7.5.2
3230
# via amclient (pyproject.toml)
3331
pluggy==1.6.0
3432
# via
@@ -40,35 +38,33 @@ pyproject-hooks==1.2.0
4038
# via
4139
# build
4240
# pip-tools
43-
pytest==8.4.1
41+
pytest==9.0.1
4442
# via
4543
# amclient (pyproject.toml)
4644
# pytest-cov
47-
pytest-cov==6.2.1
45+
pytest-cov==7.0.0
4846
# via amclient (pyproject.toml)
49-
requests==2.32.4
47+
requests==2.32.5
5048
# via amclient (pyproject.toml)
51-
ruff==0.12.7
49+
ruff==0.14.5
5250
# via amclient (pyproject.toml)
53-
tomli==2.2.1
51+
tomli==2.3.0
5452
# via
5553
# build
5654
# coverage
5755
# pip-tools
5856
# pytest
59-
typing-extensions==4.14.1
57+
typing-extensions==4.15.0
6058
# via exceptiongroup
6159
urllib3==2.5.0
6260
# via
6361
# amclient (pyproject.toml)
6462
# requests
6563
wheel==0.45.1
6664
# via pip-tools
67-
zipp==3.23.0
68-
# via importlib-metadata
6965

7066
# The following packages are considered to be unsafe in a requirements file:
71-
pip==25.2
67+
pip==25.3
7268
# via pip-tools
7369
setuptools==80.9.0
7470
# via pip-tools

requirements.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#
2-
# This file is autogenerated by pip-compile with Python 3.9
2+
# This file is autogenerated by pip-compile with Python 3.10
33
# by the following command:
44
#
55
# pip-compile --allow-unsafe --output-file=requirements.txt pyproject.toml
66
#
7-
certifi==2025.8.3
7+
certifi==2025.11.12
88
# via requests
9-
charset-normalizer==3.4.2
9+
charset-normalizer==3.4.4
1010
# via requests
11-
idna==3.10
11+
idna==3.11
1212
# via requests
13-
requests==2.32.4
13+
requests==2.32.5
1414
# via amclient (pyproject.toml)
1515
urllib3==2.5.0
1616
# via

tests/test_amclient.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from binascii import hexlify
88
from collections.abc import Generator
99
from typing import Any
10-
from typing import Optional
1110
from unittest import mock
1211

1312
import pytest
@@ -3450,7 +3449,7 @@ def recursion_limit() -> Generator[int, None, None]:
34503449

34513450
def response_generator(page_count: int) -> Generator[dict[str, Any], None, None]:
34523451
for page_index in range(page_count):
3453-
next_page_url: Optional[str] = (
3452+
next_page_url: str | None = (
34543453
None
34553454
if page_index == page_count - 1
34563455
else f"/api/v2/file/?offset={page_index + 1}&package_type=AIP"

0 commit comments

Comments
 (0)