Skip to content

Commit 1be5e2f

Browse files
committed
Add support for Python up to 3.14
1 parent 81268de commit 1be5e2f

7 files changed

Lines changed: 40 additions & 42 deletions

File tree

.github/workflows/ci.yml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ jobs:
1919
strategy:
2020
fail-fast: false
2121
matrix:
22-
os: ['ubuntu-20.04']
23-
python: ['3.8', '3.9', '3.10', '3.11']
22+
os: ['ubuntu-22.04']
23+
python: ['3.10', '3.11', '3.12', '3.13', '3.14']
2424
steps:
2525
- name: Checkout source repository for Python ${{ matrix.python }}
26-
uses: actions/checkout@v2
26+
uses: actions/checkout@v6
2727

2828
- name: Set up Python ${{ matrix.python }}
29-
uses: actions/setup-python@v2
29+
uses: actions/setup-python@v6
3030
with:
3131
python-version: ${{ matrix.python }}
3232

@@ -40,14 +40,14 @@ jobs:
4040
fail-fast: false
4141
matrix:
4242
etcd: ['3.3.27', '3.4.23', '3.5.7']
43-
os: ['ubuntu-20.04']
44-
python: ['3.8', '3.9', '3.10', '3.11']
43+
os: ['ubuntu-22.04']
44+
python: ['3.10', '3.11', '3.12', '3.13', '3.14']
4545
steps:
4646
- name: Checkout source repository for Python ${{ matrix.python }}
47-
uses: actions/checkout@v2
47+
uses: actions/checkout@v6
4848

4949
- name: Set up Python ${{ matrix.python }}
50-
uses: actions/setup-python@v2
50+
uses: actions/setup-python@v6
5151
with:
5252
python-version: ${{ matrix.python }}
5353

@@ -70,8 +70,8 @@ jobs:
7070
make genproto
7171
7272
- name: Upload coverage report
73-
uses: codecov/codecov-action@v2
74-
if: matrix.python == '3.9' && github.ref == 'refs/heads/master'
73+
uses: codecov/codecov-action@v6
74+
if: matrix.python == '3.10' && github.ref == 'refs/heads/master'
7575

7676
distrib:
7777
name: Build and upload the packages
@@ -81,15 +81,15 @@ jobs:
8181
strategy:
8282
fail-fast: false
8383
matrix:
84-
os: ['ubuntu-20.04']
85-
python: ['3.9']
84+
os: ['ubuntu-22.04']
85+
python: ['3.10']
8686

8787
steps:
8888
- name: Checkout source repository for Python ${{ matrix.python }}
89-
uses: actions/checkout@v2
89+
uses: actions/checkout@v6
9090

9191
- name: Set up Python ${{ matrix.python }}
92-
uses: actions/setup-python@v2
92+
uses: actions/setup-python@v6
9393
with:
9494
python-version: ${{ matrix.python }}
9595

.readthedocs.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
version: 2
22
python:
3-
version: 3.8
43
install:
54
- method: pip
65
path: .

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ PYTHON=$(VENV)/bin/$(PYTHON_BIN)
88
help:
99
@echo "Please use \`$(MAKE) <target>' where <target> is one of the following:"
1010
@echo " help - show help information"
11-
@echo " bootstrap - setup packaging dependencies and initialize venv"
11+
@echo " bootstrap - setup packaging dependencies and initialize venv"
1212
@echo " build - build project packages"
1313
@echo " genproto - process .proto files and generate gRPC stubs"
1414
@echo " lint - inspect project source code for errors"
@@ -22,9 +22,9 @@ help:
2222
bootstrap: $(VENV)/bin/activate
2323
$(VENV)/bin/activate:
2424
$(PYTHON_BIN) -m venv $(VENV)
25-
$(PYTHON) -m pip install pip==23.0 setuptools==67.3.2 wheel==0.38.4
25+
$(PYTHON) -m pip install pip==26.1 setuptools==82.0.1 wheel==0.47.0
2626
$(PYTHON) -m pip install -e .[dev,doc,test]
27-
$(PYTHON) -m pip install 'pifpaf @ git+https://github.com/jd/pifpaf.git@80cc13bd7e4b0cb286d15659c9fe7958e8600cd9#egg=aetcd'
27+
$(PYTHON) -m pip install 'pifpaf @ git+https://github.com/jd/pifpaf.git@18e693f5b86f9fd12fd2eaba35822af04c1f85ae#egg=aetcd'
2828

2929
build: bootstrap
3030
$(PYTHON) setup.py sdist bdist_wheel
@@ -45,7 +45,7 @@ test: bootstrap
4545
$(PYTHON) -m pytest
4646

4747
testcluster: bootstrap
48-
$(PYTHON) -m pifpaf -e TEST --debug run etcd --cluster -- $(PYTHON) -m pytest --with-cluster --cov-report=xml
48+
$(PYTHON) -m pifpaf -e TEST run etcd --cluster -- $(PYTHON) -m pytest --with-cluster --cov-report=xml
4949

5050
testreport: bootstrap
5151
$(PYTHON) -m pytest --cov-report=html

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
master_doc = 'index'
1212

1313
project = 'aetcd'
14-
copyright = '2022, Andrey Martyanov'
14+
copyright = '2026, Andrey Martyanov'
1515
author = 'Andrey Martyanov'
1616

1717
version = release = importlib.metadata.version('aetcd')

setup.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,48 +28,49 @@ def _get_long_description():
2828
zip_safe=False,
2929
keywords='etcd3',
3030
classifiers=[
31-
'Development Status :: 3 - Alpha',
31+
'Development Status :: 4 - Beta',
3232
'Intended Audience :: Developers',
3333
'License :: OSI Approved :: Apache Software License',
3434
'Programming Language :: Python :: 3',
35-
'Programming Language :: Python :: 3.8',
36-
'Programming Language :: Python :: 3.9',
3735
'Programming Language :: Python :: 3.10',
3836
'Programming Language :: Python :: 3.11',
37+
'Programming Language :: Python :: 3.12',
38+
'Programming Language :: Python :: 3.13',
39+
'Programming Language :: Python :: 3.14',
3940
],
4041
project_urls={
4142
'Documentation': 'https://aetcd.readthedocs.io',
4243
'Code': 'https://github.com/martyanov/aetcd',
4344
'Issues': 'https://github.com/martyanov/aetcd/issues',
4445
},
45-
python_requires='>=3.8,<4.0',
46+
python_requires='>=3.10,<4.0',
4647
setup_requires=[
47-
'setuptools_scm==6.3.2',
48+
'setuptools_scm==10.0.5',
4849
],
4950
install_requires=[
50-
'grpcio>1.51,<2',
51-
'protobuf>4,<5',
51+
'grpcio>1.76.0,<2',
52+
'protobuf>4,<7',
5253
],
5354
extras_require={
5455
'dev': [
55-
'flake8-commas==2.1.0',
56+
'flake8-commas==4.0.0',
5657
'flake8-docstrings==1.7.0',
57-
'flake8-isort==6.0.0',
58-
'flake8-quotes==3.3.2',
59-
'flake8==6.0.0',
60-
'grpcio-tools==1.51.1',
61-
'pep8-naming==0.13.3',
62-
'twine==4.0.2',
58+
'flake8-isort==7.0.0',
59+
'flake8-quotes==3.4.0',
60+
'flake8==7.3.0',
61+
'grpcio-tools==1.80.0',
62+
'pep8-naming==0.15.1',
63+
'twine==6.2.0',
6364
],
6465
'doc': [
65-
'sphinx==6.1.3',
66-
'sphinx_rtd_theme==1.2.0',
66+
'sphinx==8.1.3',
67+
'sphinx_rtd_theme==3.1.0',
6768
],
6869
'test': [
69-
'pytest-asyncio==0.20.3',
70-
'pytest-cov==4.0.0',
71-
'pytest-mock==3.10.0',
72-
'pytest==7.2.1',
70+
'pytest-asyncio==1.3.0',
71+
'pytest-cov==7.1.0',
72+
'pytest-mock==3.15.1',
73+
'pytest==9.0.3',
7374
],
7475
},
7576
)

tests/integration/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ def setup():
1616

1717

1818
@pytest.fixture(scope='session')
19-
@pytest.mark.asyncio
2019
def etcdctl():
2120
async def _etcdctl(*args, ignore_result=False):
2221
endpoint = os.environ.get('TEST_ETCD_HTTP_URL')

tests/integration/test_auth.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import aetcd
44

55

6-
@pytest.mark.asyncio
76
@pytest.fixture
87
async def etcd_auth(etcdctl):
98
await etcdctl('user', 'add', 'root:pwd')

0 commit comments

Comments
 (0)