mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
Merge pull request #3131 from pajod/patch-py12-rebased
CI: add CPython 3.12 and PyPy3.10, stop promising untested versions
This commit is contained in:
commit
88fc4a4315
14
.github/workflows/tox.yml
vendored
14
.github/workflows/tox.yml
vendored
@ -8,12 +8,24 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
tox:
|
tox:
|
||||||
name: ${{ matrix.os }} / ${{ matrix.python-version }}
|
name: ${{ matrix.os }} / ${{ matrix.python-version }}
|
||||||
|
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes
|
||||||
|
timeout-minutes: 20
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macos-latest] # All OSes pass except Windows because tests need Unix-only fcntl, grp, pwd, etc.
|
os: [ubuntu-latest, macos-latest] # All OSes pass except Windows because tests need Unix-only fcntl, grp, pwd, etc.
|
||||||
python-version: [ "3.7", "3.8", "3.9", "3.10", "3.11", "pypy-3.8" ]
|
python-version:
|
||||||
|
# CPython <= 3.7 is EoL since 2023-06-27
|
||||||
|
- "3.7"
|
||||||
|
- "3.8"
|
||||||
|
- "3.9"
|
||||||
|
- "3.10"
|
||||||
|
- "3.11"
|
||||||
|
- "3.12"
|
||||||
|
# PyPy <= 3.8 is EoL since 2023-06-16
|
||||||
|
- "pypy-3.9"
|
||||||
|
- "pypy-3.10"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Using Python ${{ matrix.python-version }}
|
- name: Using Python ${{ matrix.python-version }}
|
||||||
|
|||||||
@ -32,7 +32,7 @@ The documentation is hosted at https://docs.gunicorn.org.
|
|||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Gunicorn requires **Python 3.x >= 3.5**.
|
Gunicorn requires **Python 3.x >= 3.7**.
|
||||||
|
|
||||||
Install from PyPI::
|
Install from PyPI::
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,12 @@ environment:
|
|||||||
# PYTHON: "C:\\Python38-x64"
|
# PYTHON: "C:\\Python38-x64"
|
||||||
#- TOXENV: py39
|
#- TOXENV: py39
|
||||||
# PYTHON: "C:\\Python39-x64"
|
# PYTHON: "C:\\Python39-x64"
|
||||||
|
#- TOXENV: py310
|
||||||
|
# PYTHON: "C:\\Python310-x64"
|
||||||
|
#- TOXENV: py311
|
||||||
|
# PYTHON: "C:\\Python311-x64"
|
||||||
|
#- TOXENV: py312
|
||||||
|
# PYTHON: "C:\\Python312-x64"
|
||||||
matrix:
|
matrix:
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- TOXENV: py35
|
- TOXENV: py35
|
||||||
|
|||||||
@ -10,9 +10,11 @@ Changelog - 2023
|
|||||||
- on HTTP versions < 1.1 support for chunked transfer is refused (only used in exploits)
|
- on HTTP versions < 1.1 support for chunked transfer is refused (only used in exploits)
|
||||||
- requests conflicting configured or passed SCRIPT_NAME now produce a verbose error
|
- requests conflicting configured or passed SCRIPT_NAME now produce a verbose error
|
||||||
- Trailer fields are no longer inspected for headers indicating secure scheme
|
- Trailer fields are no longer inspected for headers indicating secure scheme
|
||||||
|
- support Python 3.12
|
||||||
|
|
||||||
** Breaking changes **
|
** Breaking changes **
|
||||||
|
|
||||||
|
- minimum version is Python 3.7
|
||||||
- the limitations on valid characters in the HTTP method have been bounded to Internet Standards
|
- the limitations on valid characters in the HTTP method have been bounded to Internet Standards
|
||||||
- requests specifying unsupported transfer coding (order) are refused by default (rare)
|
- requests specifying unsupported transfer coding (order) are refused by default (rare)
|
||||||
- HTTP methods are no longer casefolded by default (IANA method registry contains none affacted)
|
- HTTP methods are no longer casefolded by default (IANA method registry contains none affacted)
|
||||||
|
|||||||
@ -23,7 +23,7 @@ Features
|
|||||||
* Simple Python configuration
|
* Simple Python configuration
|
||||||
* Multiple worker configurations
|
* Multiple worker configurations
|
||||||
* Various server hooks for extensibility
|
* Various server hooks for extensibility
|
||||||
* Compatible with Python 3.x >= 3.5
|
* Compatible with Python 3.x >= 3.7
|
||||||
|
|
||||||
|
|
||||||
Contents
|
Contents
|
||||||
|
|||||||
@ -4,7 +4,7 @@ Installation
|
|||||||
|
|
||||||
.. highlight:: bash
|
.. highlight:: bash
|
||||||
|
|
||||||
:Requirements: **Python 3.x >= 3.5**
|
:Requirements: **Python 3.x >= 3.7**
|
||||||
|
|
||||||
To install the latest released version of Gunicorn::
|
To install the latest released version of Gunicorn::
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@ requires = ["setuptools>=61.2"]
|
|||||||
build-backend = "setuptools.build_meta"
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
|
# see https://packaging.python.org/en/latest/specifications/pyproject-toml/
|
||||||
name = "gunicorn"
|
name = "gunicorn"
|
||||||
authors = [{name = "Benoit Chesneau", email = "benoitc@gunicorn.org"}]
|
authors = [{name = "Benoit Chesneau", email = "benoitc@gunicorn.org"}]
|
||||||
license = {text = "MIT"}
|
license = {text = "MIT"}
|
||||||
@ -17,13 +18,12 @@ classifiers = [
|
|||||||
"Operating System :: POSIX",
|
"Operating System :: POSIX",
|
||||||
"Programming Language :: Python",
|
"Programming Language :: Python",
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"Programming Language :: Python :: 3.5",
|
|
||||||
"Programming Language :: Python :: 3.6",
|
|
||||||
"Programming Language :: Python :: 3.7",
|
"Programming Language :: Python :: 3.7",
|
||||||
"Programming Language :: Python :: 3.8",
|
"Programming Language :: Python :: 3.8",
|
||||||
"Programming Language :: Python :: 3.9",
|
"Programming Language :: Python :: 3.9",
|
||||||
"Programming Language :: Python :: 3.10",
|
"Programming Language :: Python :: 3.10",
|
||||||
"Programming Language :: Python :: 3.11",
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Programming Language :: Python :: 3.12",
|
||||||
"Programming Language :: Python :: 3 :: Only",
|
"Programming Language :: Python :: 3 :: Only",
|
||||||
"Programming Language :: Python :: Implementation :: CPython",
|
"Programming Language :: Python :: Implementation :: CPython",
|
||||||
"Programming Language :: Python :: Implementation :: PyPy",
|
"Programming Language :: Python :: Implementation :: PyPy",
|
||||||
@ -35,7 +35,7 @@ classifiers = [
|
|||||||
"Topic :: Internet :: WWW/HTTP :: WSGI :: Server",
|
"Topic :: Internet :: WWW/HTTP :: WSGI :: Server",
|
||||||
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
||||||
]
|
]
|
||||||
requires-python = ">=3.5"
|
requires-python = ">=3.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
'importlib_metadata; python_version<"3.8"',
|
'importlib_metadata; python_version<"3.8"',
|
||||||
"packaging",
|
"packaging",
|
||||||
@ -47,6 +47,7 @@ Homepage = "https://gunicorn.org"
|
|||||||
Documentation = "https://docs.gunicorn.org"
|
Documentation = "https://docs.gunicorn.org"
|
||||||
"Issue tracker" = "https://github.com/benoitc/gunicorn/issues"
|
"Issue tracker" = "https://github.com/benoitc/gunicorn/issues"
|
||||||
"Source code" = "https://github.com/benoitc/gunicorn"
|
"Source code" = "https://github.com/benoitc/gunicorn"
|
||||||
|
Changelog = "https://docs.gunicorn.org/en/stable/news.html"
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[project.optional-dependencies]
|
||||||
gevent = ["gevent>=1.4.0"]
|
gevent = ["gevent>=1.4.0"]
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
gevent
|
gevent
|
||||||
eventlet
|
eventlet
|
||||||
coverage
|
coverage
|
||||||
pytest
|
pytest>=7.2.0
|
||||||
pytest-cov
|
pytest-cov
|
||||||
|
|||||||
@ -1,4 +0,0 @@
|
|||||||
[tool:pytest]
|
|
||||||
norecursedirs = examples lib local src
|
|
||||||
testpaths = tests/
|
|
||||||
addopts = --assert=plain --cov=gunicorn --cov-report=xml
|
|
||||||
@ -3,5 +3,15 @@
|
|||||||
# This file is part of gunicorn released under the MIT license.
|
# This file is part of gunicorn released under the MIT license.
|
||||||
# See the NOTICE for more information.
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
import sys
|
||||||
|
|
||||||
def test_import():
|
def test_import():
|
||||||
|
|
||||||
|
try:
|
||||||
|
import eventlet
|
||||||
|
except AttributeError:
|
||||||
|
if (3,13) > sys.version_info >= (3, 12):
|
||||||
|
pytest.skip("Ignoring eventlet failures on Python 3.12")
|
||||||
|
raise
|
||||||
__import__('gunicorn.workers.geventlet')
|
__import__('gunicorn.workers.geventlet')
|
||||||
|
|||||||
8
tox.ini
8
tox.ini
@ -1,5 +1,11 @@
|
|||||||
[tox]
|
[tox]
|
||||||
envlist = py{37,38,39,310,311,py3}, lint, docs-lint, pycodestyle, run-entrypoint, run-module
|
envlist =
|
||||||
|
py{37,38,39,310,311,312,py3},
|
||||||
|
lint,
|
||||||
|
docs-lint,
|
||||||
|
pycodestyle,
|
||||||
|
run-entrypoint,
|
||||||
|
run-module,
|
||||||
skipsdist = false
|
skipsdist = false
|
||||||
; Can't set skipsdist and use_develop in tox v4 to true due to https://github.com/tox-dev/tox/issues/2730
|
; Can't set skipsdist and use_develop in tox v4 to true due to https://github.com/tox-dev/tox/issues/2730
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user