Skip to content

Commit 9de84be

Browse files
authored
Merge pull request #991 from webrecorder/python3.14
Python 3.13 and 3.14 support
2 parents 81483a5 + ec5e1c1 commit 9de84be

6 files changed

Lines changed: 21 additions & 14 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ jobs:
1111
timeout-minutes: 20
1212
runs-on: ubuntu-latest
1313
strategy:
14-
max-parallel: 4
14+
max-parallel: 6
1515
matrix:
16-
python-version: ['3.9', '3.10', '3.11', '3.12']
16+
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
1717

1818
steps:
1919
- name: checkout

INSTALL.rst

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ remove some of these steps.*
1010
Requirements
1111
~~~~~~~~~~~~
1212

13-
pywb has tested in python 2.6, 2.7. It runs best in python 2.7.3+
13+
pywb is tested on python 3.9-3.14.
1414

1515
pywb tool suite provides several WSGI applications, which have been
1616
tested under *wsgiref*, *waitress*, and uWSGI.
1717

1818
For best results, the *uWSGI* container is recommended.
1919

20-
Support for Python 3 is planned but not yet implemented.
21-
2220
Sample Data
2321
~~~~~~~~~~~
2422

pywb/warcserver/test/testutils.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,12 @@ def setup_class(cls, *args, **kwargs):
167167
super(HttpBinLiveTests, cls).setup_class(*args, **kwargs)
168168

169169
from httpbin import app as httpbin_app
170-
httpbin_app.config.update(JSONIFY_PRETTYPRINT_REGULAR=True)
170+
171+
if hasattr(httpbin_app, 'json'): # Flask >= 2.2.0
172+
httpbin_app.json.compact = False
173+
else:
174+
httpbin_app.config.update(JSONIFY_PRETTYPRINT_REGULAR=True)
175+
171176
cls.httpbin_server = GeventServer(httpbin_app)
172177

173178
httpbin_local = 'http://localhost:' + str(cls.httpbin_server.port) + '/'

requirements.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
six
2+
setuptools; python_version>="3.12"
23
warcio>=1.7.5
34
requests
45
redis==2.10.6
56
jinja2>=3.1.2
67
surt>=0.3.1
78
brotlipy
89
pyyaml
9-
werkzeug==2.2.3
10+
werkzeug==3.1.7
1011
webencodings
11-
gevent==22.10.2; python_version<"3.8"
12-
gevent==23.9.0.post1; python_version>="3.8"
12+
legacy-cgi; python_version>="3.13"
13+
gevent==23.9.0.post1; python_version<"3.12"
14+
gevent==25.9.1; python_version>="3.12"
1315
greenlet>=2.0.2,<3.0; python_version<"3.12"
14-
greenlet==3.2.4; python_version>="3.12.0rc0"
16+
greenlet==3.3.2; python_version>="3.12"
1517
webassets==2.0
1618
portalocker
1719
wsgiprox>=1.5.1

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def get_package_data():
127127
"babel-vue-extractor"
128128
],
129129
},
130-
python_requires='>=3.7,<3.13',
130+
python_requires='>=3.9,<3.15',
131131
tests_require=load_requirements("test_requirements.txt"),
132132
cmdclass={'test': PyTest},
133133
test_suite='',
@@ -147,12 +147,12 @@ def get_package_data():
147147
'License :: OSI Approved :: GNU General Public License (GPL)',
148148
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
149149
'Programming Language :: Python :: 3',
150-
'Programming Language :: Python :: 3.7',
151-
'Programming Language :: Python :: 3.8',
152150
'Programming Language :: Python :: 3.9',
153151
'Programming Language :: Python :: 3.10',
154152
'Programming Language :: Python :: 3.11',
155153
'Programming Language :: Python :: 3.12',
154+
'Programming Language :: Python :: 3.13',
155+
'Programming Language :: Python :: 3.14',
156156
'Topic :: Internet :: Proxy Servers',
157157
'Topic :: Internet :: WWW/HTTP',
158158
'Topic :: Internet :: WWW/HTTP :: WSGI',

tox.ini

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ testpaths =
44
tests
55

66
[tox]
7-
envlist = py37, py38, py39, py310, py311, py312
7+
envlist = py39, py310, py311, py312, py313, py314
88

99
[gh-actions]
1010
python =
1111
3.9: py39
1212
3.10: py310
1313
3.11: py311
1414
3.12: py312
15+
3.13: py313
16+
3.14: py314
1517

1618
[testenv]
1719
setenv = PYWB_NO_VERIFY_SSL = 1

0 commit comments

Comments
 (0)