Skip to content

Commit

Permalink
Merge pull request #362 from Pylons/garden/update-supported-python-ve…
Browse files Browse the repository at this point in the history
…rsions

Garden: update supported python versions
  • Loading branch information
mmerickel committed Jan 17, 2022
2 parents 640c9af + 9db3506 commit 88d5e7b
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 42 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/ci-tests.yml
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
7 changes: 7 additions & 0 deletions 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
~~~~~~

Expand Down
6 changes: 3 additions & 3 deletions README.rst
Expand Up @@ -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/
4 changes: 2 additions & 2 deletions docs/index.rst
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions setup.cfg
Expand Up @@ -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
Expand All @@ -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 =
Expand Down
14 changes: 13 additions & 1 deletion tests/test_functional.py
Expand Up @@ -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()
Expand Down Expand Up @@ -97,9 +98,20 @@ def stop_subprocess(self):
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))
Expand Down
51 changes: 22 additions & 29 deletions 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 =
Expand All @@ -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 .
Expand All @@ -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

0 comments on commit 88d5e7b

Please sign in to comment.