summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2022-01-17 16:48:14 -0600
committerGitHub <noreply@github.com>2022-01-17 16:48:14 -0600
commit88d5e7bfd48059c32ea37fff3af91234eedf9524 (patch)
treec7158f74196a95174af153e401e99c51c99d0262
parent640c9afec78876115e9a7f9fd9a331129ab58836 (diff)
parent9db35068c1410a2fdce508d84739457c0ca69007 (diff)
downloadwaitress-88d5e7bfd48059c32ea37fff3af91234eedf9524.tar.gz
Merge pull request #362 from Pylons/garden/update-supported-python-versions
Garden: update supported python versions
-rw-r--r--.github/workflows/ci-tests.yml10
-rw-r--r--CHANGES.txt7
-rw-r--r--README.rst6
-rw-r--r--docs/index.rst4
-rw-r--r--setup.cfg4
-rw-r--r--tests/test_functional.py14
-rw-r--r--tox.ini51
7 files changed, 54 insertions, 42 deletions
diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml
index f28f6ca..4bae72b 100644
--- a/.github/workflows/ci-tests.yml
+++ b/.github/workflows/ci-tests.yml
@@ -53,14 +53,14 @@ jobs:
name: Validate coverage
steps:
- uses: actions/checkout@v2
- - name: Setup python 3.8
+ - name: Setup python 3.10
uses: actions/setup-python@v2
with:
- python-version: 3.8
+ python-version: "3.10"
architecture: x64
- run: pip install tox
- - run: tox -e py38,coverage
+ - run: tox -e py310,coverage
docs:
runs-on: ubuntu-latest
name: Build the documentation
@@ -69,7 +69,7 @@ jobs:
- name: Setup python
uses: actions/setup-python@v2
with:
- python-version: 3.8
+ python-version: "3.10"
architecture: x64
- run: pip install tox
- run: tox -e docs
@@ -81,7 +81,7 @@ jobs:
- name: Setup python
uses: actions/setup-python@v2
with:
- python-version: 3.8
+ python-version: "3.10"
architecture: x64
- run: pip install tox
- run: tox -e lint
diff --git a/CHANGES.txt b/CHANGES.txt
index 56e3340..5ccaa64 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,13 @@
Next Release
------------
+Python Version Support
+~~~~~~~~~~~~~~~~~~~~~~
+
+- Python 3.6 is no longer supported by Waitress
+
+- Python 3.10 is fully supported by Waitress
+
Bugfix
~~~~~~
diff --git a/README.rst b/README.rst
index a7b63c4..0d9c5e9 100644
--- a/README.rst
+++ b/README.rst
@@ -18,9 +18,9 @@ Waitress
Waitress is a production-quality pure-Python WSGI server with very acceptable
performance. It has no dependencies except ones which live in the Python
-standard library. It runs on CPython on Unix and Windows under Python 3.6+. It
-is also known to run on PyPy (version 3.6 compatible) on UNIX. It supports
-HTTP/1.0 and HTTP/1.1.
+standard library. It runs on CPython on Unix and Windows under Python 3.7+. It
+is also known to run on PyPy 3 (version 3.7 compatible python) on UNIX. It
+supports HTTP/1.0 and HTTP/1.1.
For more information, see the "docs" directory of the Waitress package or visit
https://docs.pylonsproject.org/projects/waitress/en/latest/
diff --git a/docs/index.rst b/docs/index.rst
index 2e12be0..ba34b5e 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -7,8 +7,8 @@ Waitress
Waitress is meant to be a production-quality pure-Python WSGI server with very
acceptable performance. It has no dependencies except ones which live in the
Python standard library. It runs on CPython on Unix and Windows under Python
-3.6+. It is also known to run on PyPy 7.3.2 (PyPy3) on UNIX. It supports
-HTTP/1.0 and HTTP/1.1.
+3.7+. It is also known to run on PyPy 3 (python version 3.7+) on UNIX. It
+supports HTTP/1.0 and HTTP/1.1.
Extended Documentation
diff --git a/setup.cfg b/setup.cfg
index 245b7f4..efb02cc 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -13,10 +13,10 @@ classifiers =
License :: OSI Approved :: Zope Public License
Programming Language :: Python
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: Implementation :: PyPy
Operating System :: OS Independent
@@ -37,7 +37,7 @@ maintainer_email = pylons-discuss@googlegroups.com
package_dir=
=src
packages=find:
-python_requires = >=3.6.0
+python_requires = >=3.7.0
[options.entry_points]
paste.server_runner =
diff --git a/tests/test_functional.py b/tests/test_functional.py
index 01fcda6..f74a252 100644
--- a/tests/test_functional.py
+++ b/tests/test_functional.py
@@ -52,6 +52,7 @@ class FixtureTcpWSGIServer(server.TcpWSGIServer):
def __init__(self, application, queue, **kw): # pragma: no cover
# Coverage doesn't see this as it's ran in a separate process.
+ kw["host"] = "127.0.0.1"
kw["port"] = 0 # Bind to any available port.
super().__init__(application, **kw)
host, port = self.socket.getsockname()
@@ -97,9 +98,20 @@ class SubprocessTests:
self.proc.terminate()
self.sock.close()
# This give us one FD back ...
- self.queue.close()
self.proc.join()
self.proc.close()
+ self.queue.close()
+ self.queue.join_thread()
+
+ # The following is for the benefit of PyPy 3, for some reason it is
+ # holding on to some resources way longer than necessary causing tests
+ # to fail with file desctriptor exceeded errors on macOS which defaults
+ # to 256 file desctriptors per process. While we could use ulimit to
+ # increase the limits before running tests, this works as well and
+ # means we don't need to remember to do that.
+ import gc
+
+ gc.collect()
def assertline(self, line, status, reason, version):
v, s, r = (x.strip() for x in line.split(None, 2))
diff --git a/tox.ini b/tox.ini
index f37689f..c168404 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,15 +1,17 @@
[tox]
envlist =
lint,
- py36,py37,py38,py39,pypy3,
- docs,
- coverage
+ py37,py38,py39,py310,pypy3,
+ coverage,
+ docs
isolated_build = True
[testenv]
commands =
python --version
- pytest {posargs:}
+ python -mpytest \
+ pypy3: --no-cov \
+ {posargs:}
extras =
testing
setenv =
@@ -25,46 +27,37 @@ deps =
coverage
setenv =
COVERAGE_FILE=.coverage
-depends = py38
+
+[testenv:docs]
+whitelist_externals =
+ make
+commands =
+ make -C docs html BUILDDIR={envdir} "SPHINXOPTS=-W -E -D suppress_warnings=ref.term"
+extras =
+ docs
[testenv:lint]
skip_install = True
commands =
- black --check --diff .
isort --check-only --df src/waitress tests
+ black --check --diff .
check-manifest
# flake8 src/waitress/ tests
# build sdist/wheel
- python -m pep517.build .
+ python -m build .
twine check dist/*
deps =
black
+ build
check-manifest
flake8
flake8-bugbear
isort
- pep517
readme_renderer
twine
-[testenv:docs]
-whitelist_externals =
- make
-commands =
- make -C docs html BUILDDIR={envdir} SPHINXOPTS="-W -E"
-extras =
- docs
-
-[testenv:run-flake8]
-skip_install = True
-commands =
- flake8 src/waitress/ tests
-deps =
- flake8
- flake8-bugbear
-
-[testenv:run-format]
-skip_install = True
+[testenv:format]
+skip_install = true
commands =
isort src/waitress tests
black .
@@ -80,12 +73,12 @@ commands =
# Make sure we aren't forgetting anything
check-manifest
# build sdist/wheel
- python -m pep517.build .
+ python -m build .
# Verify all is well
twine check dist/*
deps =
- readme_renderer
+ build
check-manifest
- pep517
+ readme_renderer
twine