Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ jobs:
timeout-minutes: 20
runs-on: ubuntu-latest
strategy:
max-parallel: 4
max-parallel: 6
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12']
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']

steps:
- name: checkout
Expand Down
4 changes: 1 addition & 3 deletions INSTALL.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,13 @@ remove some of these steps.*
Requirements
~~~~~~~~~~~~

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

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

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

Support for Python 3 is planned but not yet implemented.

Sample Data
~~~~~~~~~~~

Expand Down
7 changes: 6 additions & 1 deletion pywb/warcserver/test/testutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,12 @@ def setup_class(cls, *args, **kwargs):
super(HttpBinLiveTests, cls).setup_class(*args, **kwargs)

from httpbin import app as httpbin_app
httpbin_app.config.update(JSONIFY_PRETTYPRINT_REGULAR=True)

if hasattr(httpbin_app, 'json'): # Flask >= 2.2.0
httpbin_app.json.compact = False
else:
httpbin_app.config.update(JSONIFY_PRETTYPRINT_REGULAR=True)

cls.httpbin_server = GeventServer(httpbin_app)

httpbin_local = 'http://localhost:' + str(cls.httpbin_server.port) + '/'
Expand Down
10 changes: 6 additions & 4 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
six
setuptools; python_version>="3.12"
warcio>=1.7.5
requests
redis==2.10.6
jinja2>=3.1.2
surt>=0.3.1
brotlipy
pyyaml
werkzeug==2.2.3
werkzeug==3.1.7
webencodings
gevent==22.10.2; python_version<"3.8"
gevent==23.9.0.post1; python_version>="3.8"
legacy-cgi; python_version>="3.13"
gevent==23.9.0.post1; python_version<"3.12"
gevent==25.9.1; python_version>="3.12"
greenlet>=2.0.2,<3.0; python_version<"3.12"
greenlet==3.2.4; python_version>="3.12.0rc0"
greenlet==3.3.2; python_version>="3.12"
webassets==2.0
portalocker
wsgiprox>=1.5.1
Expand Down
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ def get_package_data():
"babel-vue-extractor"
],
},
python_requires='>=3.7,<3.13',
python_requires='>=3.9,<3.15',
tests_require=load_requirements("test_requirements.txt"),
cmdclass={'test': PyTest},
test_suite='',
Expand All @@ -147,12 +147,12 @@ def get_package_data():
'License :: OSI Approved :: GNU General Public License (GPL)',
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: 3.14',
'Topic :: Internet :: Proxy Servers',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: WSGI',
Expand Down
4 changes: 3 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@ testpaths =
tests

[tox]
envlist = py37, py38, py39, py310, py311, py312
envlist = py39, py310, py311, py312, py313, py314

[gh-actions]
python =
3.9: py39
3.10: py310
3.11: py311
3.12: py312
3.13: py313
3.14: py314

[testenv]
setenv = PYWB_NO_VERIFY_SSL = 1
Expand Down
Loading