Skip to content

Commit e2427b2

Browse files
committed
Add Python 3.14 support, drop EOL 3.8
1 parent b4d2892 commit e2427b2

File tree

6 files changed

+49
-31
lines changed

6 files changed

+49
-31
lines changed

.github/workflows/release.yml

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,14 @@ jobs:
5050
PIP_DISABLE_PIP_VERSION_CHECK: 1
5151

5252
steps:
53-
- uses: actions/checkout@v4
53+
- uses: actions/checkout@v5
5454
with:
5555
fetch-depth: 50
5656
submodules: true
57+
persist-credentials: false
5758

5859
- name: Set up Python
59-
uses: actions/setup-python@v5
60+
uses: actions/setup-python@v6
6061
with:
6162
python-version: "3.x"
6263

@@ -76,18 +77,20 @@ jobs:
7677
outputs:
7778
include: ${{ steps.set-matrix.outputs.include }}
7879
steps:
79-
- uses: actions/checkout@v4
80-
- uses: actions/setup-python@v5
80+
- uses: actions/checkout@v5
81+
with:
82+
persist-credentials: false
83+
- uses: actions/setup-python@v6
8184
with:
8285
python-version: "3.x"
83-
- run: pip install cibuildwheel==2.21.3
86+
- run: pip install cibuildwheel==3.2.1
8487
- id: set-matrix
8588
run: |
8689
MATRIX_INCLUDE=$(
8790
{
88-
cibuildwheel --print-build-identifiers --platform linux --arch x86_64,aarch64 | grep cp | jq -nRc '{"only": inputs, "os": "ubuntu-latest"}' \
89-
&& cibuildwheel --print-build-identifiers --platform macos --arch x86_64,arm64 | grep cp | jq -nRc '{"only": inputs, "os": "macos-latest"}' \
90-
&& cibuildwheel --print-build-identifiers --platform windows --arch x86,AMD64 | grep cp | jq -nRc '{"only": inputs, "os": "windows-latest"}'
91+
cibuildwheel --print-build-identifiers --platform linux --archs x86_64,aarch64 | grep cp | jq -nRc '{"only": inputs, "os": "ubuntu-latest"}' \
92+
&& cibuildwheel --print-build-identifiers --platform macos --archs x86_64,arm64 | grep cp | jq -nRc '{"only": inputs, "os": "macos-latest"}' \
93+
&& cibuildwheel --print-build-identifiers --platform windows --archs x86,AMD64 | grep cp | jq -nRc '{"only": inputs, "os": "windows-latest"}'
9194
} | jq -sc
9295
)
9396
echo "include=$MATRIX_INCLUDE" >> $GITHUB_OUTPUT
@@ -110,16 +113,17 @@ jobs:
110113
PIP_DISABLE_PIP_VERSION_CHECK: 1
111114

112115
steps:
113-
- uses: actions/checkout@v4
116+
- uses: actions/checkout@v5
114117
with:
115118
fetch-depth: 50
116119
submodules: true
120+
persist-credentials: false
117121

118122
- name: Set up QEMU
119123
if: runner.os == 'Linux'
120-
uses: docker/setup-qemu-action@v2
124+
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
121125

122-
- uses: pypa/cibuildwheel@7940a4c0e76eb2030e473a5f864f291f63ee879b # v2.21.3
126+
- uses: pypa/cibuildwheel@9c00cb4f6b517705a3794b22395aedc36257242c # v3.2.1
123127
with:
124128
only: ${{ matrix.only }}
125129
env:
@@ -149,13 +153,14 @@ jobs:
149153

150154
steps:
151155
- name: Checkout source
152-
uses: actions/checkout@v4
156+
uses: actions/checkout@v5
153157
with:
154158
fetch-depth: 5
155159
submodules: true
160+
persist-credentials: false
156161

157162
- name: Set up Python
158-
uses: actions/setup-python@v5
163+
uses: actions/setup-python@v6
159164
with:
160165
python-version: "3.x"
161166

@@ -165,11 +170,12 @@ jobs:
165170
make htmldocs
166171
167172
- name: Checkout gh-pages
168-
uses: actions/checkout@v4
173+
uses: actions/checkout@v5
169174
with:
170175
fetch-depth: 5
171176
ref: gh-pages
172177
path: docs/gh-pages
178+
persist-credentials: false
173179

174180
- name: Sync docs
175181
run: |
@@ -200,10 +206,11 @@ jobs:
200206
deployments: write
201207

202208
steps:
203-
- uses: actions/checkout@v4
209+
- uses: actions/checkout@v5
204210
with:
205211
fetch-depth: 5
206212
submodules: false
213+
persist-credentials: false
207214

208215
- uses: actions/download-artifact@v4
209216
with:

.github/workflows/tests.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,21 @@ jobs:
1717
# job.
1818
strategy:
1919
matrix:
20-
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
20+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
2121
os: [ubuntu-latest, macos-latest, windows-latest]
2222
loop: [asyncio, uvloop]
2323
exclude:
2424
# uvloop does not support windows
2525
- loop: uvloop
2626
os: windows-latest
27+
# or python 3.14 (yet)
28+
- loop: uvloop
29+
python-version: "3.14"
2730

2831
runs-on: ${{ matrix.os }}
2932

33+
permissions: {}
34+
3035
defaults:
3136
run:
3237
shell: bash
@@ -35,10 +40,11 @@ jobs:
3540
PIP_DISABLE_PIP_VERSION_CHECK: 1
3641

3742
steps:
38-
- uses: actions/checkout@v4
43+
- uses: actions/checkout@v5
3944
with:
4045
fetch-depth: 50
4146
submodules: true
47+
persist-credentials: false
4248

4349
- name: Check if release PR.
4450
uses: edgedb/action-release/validate-pr@master
@@ -56,7 +62,7 @@ jobs:
5662
brew install postgresql
5763
5864
- name: Set up Python ${{ matrix.python-version }}
59-
uses: actions/setup-python@v5
65+
uses: actions/setup-python@v6
6066
if: "!steps.release.outputs.is_release"
6167
with:
6268
python-version: ${{ matrix.python-version }}
@@ -86,14 +92,17 @@ jobs:
8692

8793
runs-on: ubuntu-latest
8894

95+
permissions: {}
96+
8997
env:
9098
PIP_DISABLE_PIP_VERSION_CHECK: 1
9199

92100
steps:
93-
- uses: actions/checkout@v4
101+
- uses: actions/checkout@v5
94102
with:
95103
fetch-depth: 50
96104
submodules: true
105+
persist-credentials: false
97106

98107
- name: Check if release PR.
99108
uses: edgedb/action-release/validate-pr@master
@@ -117,7 +126,7 @@ jobs:
117126
>> "${GITHUB_ENV}"
118127
119128
- name: Set up Python ${{ matrix.python-version }}
120-
uses: actions/setup-python@v5
129+
uses: actions/setup-python@v6
121130
if: "!steps.release.outputs.is_release"
122131
with:
123132
python-version: "3.x"
@@ -142,6 +151,7 @@ jobs:
142151
name: "Regression Tests"
143152
needs: [test-platforms, test-postgres]
144153
runs-on: ubuntu-latest
154+
permissions: {}
145155

146156
steps:
147157
- run: echo OK

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ of PostgreSQL server binary protocol for use with Python's ``asyncio``
1313
framework. You can read more about asyncpg in an introductory
1414
`blog post <http://magic.io/blog/asyncpg-1m-rows-from-postgres-to-python/>`_.
1515

16-
asyncpg requires Python 3.8 or later and is supported for PostgreSQL
16+
asyncpg requires Python 3.9 or later and is supported for PostgreSQL
1717
versions 9.5 to 17. Other PostgreSQL versions or other databases
1818
implementing the PostgreSQL protocol *may* work, but are not being
1919
actively tested.

docs/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ PostgreSQL and Python/asyncio. asyncpg is an efficient, clean implementation
1515
of PostgreSQL server binary protocol for use with Python's ``asyncio``
1616
framework.
1717

18-
**asyncpg** requires Python 3.8 or later and is supported for PostgreSQL
18+
**asyncpg** requires Python 3.9 or later and is supported for PostgreSQL
1919
versions 9.5 to 17. Other PostgreSQL versions or other databases implementing
2020
the PostgreSQL protocol *may* work, but are not being actively tested.
2121

pyproject.toml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ description = "An asyncio PostgreSQL driver"
44
authors = [{name = "MagicStack Inc", email = "hello@magic.io"}]
55
requires-python = '>=3.8.0'
66
readme = "README.rst"
7-
license = {text = "Apache License, Version 2.0"}
7+
license = "Apache-2.0"
8+
license-files = ["LICENSE"]
89
dynamic = ["version"]
910
keywords = [
1011
"database",
@@ -14,16 +15,16 @@ classifiers = [
1415
"Development Status :: 5 - Production/Stable",
1516
"Framework :: AsyncIO",
1617
"Intended Audience :: Developers",
17-
"License :: OSI Approved :: Apache Software License",
1818
"Operating System :: POSIX",
1919
"Operating System :: MacOS :: MacOS X",
2020
"Operating System :: Microsoft :: Windows",
2121
"Programming Language :: Python :: 3 :: Only",
22-
"Programming Language :: Python :: 3.8",
2322
"Programming Language :: Python :: 3.9",
2423
"Programming Language :: Python :: 3.10",
2524
"Programming Language :: Python :: 3.11",
2625
"Programming Language :: Python :: 3.12",
26+
"Programming Language :: Python :: 3.13",
27+
"Programming Language :: Python :: 3.14",
2728
"Programming Language :: Python :: Implementation :: CPython",
2829
"Topic :: Database :: Front-Ends",
2930
]
@@ -56,9 +57,8 @@ docs = [
5657

5758
[build-system]
5859
requires = [
59-
"setuptools>=60",
60-
"wheel",
61-
"Cython(>=0.29.24,<4.0.0)"
60+
"setuptools>=77.0.3",
61+
"Cython(>=3.1.0,<4.0.0)"
6262
]
6363
build-backend = "setuptools.build_meta"
6464

@@ -74,6 +74,7 @@ include = ["asyncpg", "asyncpg.*"]
7474
[tool.cibuildwheel]
7575
build-frontend = "build"
7676
test-extras = "test"
77+
skip = "cp38-*"
7778

7879
[tool.cibuildwheel.macos]
7980
before-all = ".github/workflows/install-postgres.sh"

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import sys
99

10-
if sys.version_info < (3, 8):
11-
raise RuntimeError('asyncpg requires Python 3.8 or greater')
10+
if sys.version_info < (3, 9):
11+
raise RuntimeError('asyncpg requires Python 3.9 or greater')
1212

1313
import os
1414
import os.path
@@ -25,7 +25,7 @@
2525
from setuptools.command import build_ext as setuptools_build_ext
2626

2727

28-
CYTHON_DEPENDENCY = 'Cython(>=0.29.24,<4.0.0)'
28+
CYTHON_DEPENDENCY = 'Cython(>=3.1.0,<4.0.0)'
2929

3030
CFLAGS = ['-O2']
3131
LDFLAGS = []

0 commit comments

Comments
 (0)