History¶
v8.2.1¶
17 Oct 2019
CherryPy #1818: Restore support for
None
default argument toWebCase.getPage()
.
v8.2.0¶
14 Oct 2019
Deprecated use of negative timeouts as alias for infinite timeouts in
ThreadPool.stop
.CherryPy #1662 via PR #74: For OPTION requests, bypass URI as path if it does not appear absolute.
v8.1.0¶
09 Oct 2019
Workers are now request-based, addressing the long-standing issue with keep-alive connections (#91 via PR #199).
v8.0.0¶
09 Oct 2019
#231 via PR #232: Remove custom
setup.cfg
parser handling, allowing the project (includingsdist
) to build/run on setuptools 41.4. Now building cheroot requires setuptools 30.3 or later (for declarative config support) and preferably 34.4 or later (as indicated inpyproject.toml
).
v7.0.0¶
26 Sep 2019
PR #224: Refactored “open URL” behavior in
webtest
to rely on retry_call. Callers can no longer passraise_subcls
orssl_context
positionally, but must pass them as keyword arguments.
v6.6.0¶
25 Sep 2019
Revisit PR #85 under PR #221. Now
backports.functools_lru_cache
is only required on Python 3.2 and earlier.CherryPy #1206 via PR #204: Fix race condition in threadpool shrink code.
v6.5.8¶
05 Sep 2019
v6.5.7¶
03 Sep 2019
#198 via 9f7affe: Fix race condition when toggling stats counting in the middle of request processing.
Improve post Python 3.9 compatibility checks.
Fix support of abstract namespace sockets.
v6.5.6¶
19 Aug 2019
v6.5.5¶
25 Apr 2019
#99 via PR #186: Sockets now collect statistics (bytes read and written) on Python 3 same as Python 2.
CherryPy #1618 via PR #180: Ignore OpenSSL’s 1.1+ Error 0 under any Python while wrapping a socket.
v6.5.4¶
01 Jan 2019
#113: Fix
cheroot.ssl.pyopenssl
under Python 3.#154 via PR #159: Remove custom license field from dist metadata.
#95: Fully integrate
trustme
into all TLS tests. Also remove all hardcoded TLS certificates.Fix invalid input processing in
cheroot._compat.extract_bytes()
.Fix returning error explanation over plain HTTP for PyOpenSSL.
Add a fallback for
os.lchmod()
where it’s missing.Avoid traceback for invalid client cert with builtin
ssl
adapter.Avoid deprecation warning with
OpenSSL.SSL.Connection
.Fix socket wrapper in PyOpenSSL adapter.
Improve tests coverage:
Client TLS certificate tests
PEERCREDS
lookup
v6.5.3¶
20 Dec 2018
PR #149: Make
SCRIPT_NAME
optional per PEP 333.
v6.5.2¶
03 Sep 2018
#6 via PR #109: Fix import of
cheroot.ssl.pyopenssl
by refactoring and separatingcheroot.makefile
’s stream wrappers.#95 via PR #109: Add initial tests for SSL layer with use of
trustme
v6.5.1¶
02 Sep 2018
#93 via PR #110: Improve UNIX socket FS access mode in
cheroot.server.HTTPServer.prepare()
on a file socket when starting to listen to it.
v6.5.0¶
29 Aug 2018
CherryPy #1001 via PR #52 and PR #108: Add support for validating client certificates.
v6.4.0¶
01 Aug 2018
#68 via PR #98: Factor out parts of
cheroot.server.HTTPServer.start()
intoprepare()
andserve()
v6.3.3¶
10 Jul 2018
Fix bug with returning empty result in
cheroot.ssl.builtin.BuiltinSSLAdapter.wrap()
v6.3.2¶
16 Jun 2018
v6.3.1¶
21 May 2018
CherryPy #1618: Ignore OpenSSL’s 1.1+ Error 0 under Python 2 while wrapping a socket.
v6.3.0¶
17 May 2018
PR #87: Add
cheroot
command and runpy launcher to launch a WSGI app from the command-line.
v6.2.4¶
19 Apr 2018
Fix missing
resolve_peer_creds
argument incheroot.wsgi.Server
being bypassed intocheroot.server.HTTPServer
.PR #85: Revert conditional dependencies. System packagers should honor the dependencies as declared by cheroot, which are defined intentionally.
v6.2.3¶
14 Apr 2018
PR #85: Skip installing dependencies from backports namespace under Python 3.
v6.2.2¶
14 Apr 2018
#84 (CherryPy #1704): Fix regression, causing
ModuleNotFoundError
undercygwin
.
v6.2.1¶
10 Apr 2018
PR #83: Fix regression, caused by inverted check for Windows OS.
Add more URLs to distribution metadata
v6.2.0¶
10 Apr 2018
PR #37: Implement PEERCRED lookup over UNIX-socket HTTP connection.
Discover connected process’ PID/UID/GID
Respect server switches:
peercreds_enabled
andpeercreds_resolve_enabled
get_peer_creds
andresolve_peer_creds
methods on connectionpeer_pid
,peer_uid
,peer_gid
,peer_user
andpeer_group
properties on connectionX_REMOTE_PID
,X_REMOTE_UID
,X_REMOTE_GID
,X_REMOTE_USER
(REMOTE_USER
) andX_REMOTE_GROUP
WSGI environment variables when enabled and supportedPer-connection caching to reduce lookup cost
v6.1.2¶
08 Apr 2018
#81: Fix regression introduced by PR #80.
Restore
storing bound socket
in Windows broken by use ofsocket.AF_UNIX
v6.1.1¶
07 Apr 2018
PR #80: Fix regression introduced by 68a5769.
Get back support for
socket.AF_UNIX
in stored bound address incheroot.server.HTTPServer.bind_addr
v6.1.0¶
05 Apr 2018
PR #67: Refactor test suite to completely rely on pytest.
Integrate
pytest-testmon
andpytest-watch
Stabilize testing
CherryPy #1664 via PR #66: Implement input termination flag support as suggested by @mitsuhiko in his wsgi.input_terminated Proposal.
#73: Fix SSL error bypassing.
#77 via PR #78: Fix WSGI documentation example to support Python 3.
PR #76: Send correct conditional HTTP error in helper function.
CherryPy #1404 via PR #75: Fix headers being unsent before request closed. Now we double check that they’ve been sent.
Minor docs improvements.
Minor refactoring.
v6.0.0¶
04 Dec 2017
Drop support for Python 2.6, 3.1, 3.2, and 3.3.
Also drop built-in SSL support for Python 2.7 earlier than 2.7.9.
v5.11.0¶
04 Dec 2017
CherryPy #1621: To support
webtest
applications that feed absolute URIs togetPage()
but expect the scheme/host/port to be ignored (as cheroot 5.8 and earlier did), provide astrip_netloc
helper and recipe for calling it in a subclass.
v5.10.0¶
23 Nov 2017
Minor refactorings of
cheroot/server.py
to reduce redundancy of behavior.Delinting with fewer exceptions.
Restored license to BSD.
v5.9.2¶
23 Nov 2017
#61: Re-release without spurious files in the distribution.
v5.9.1¶
17 Nov 2017
#58: Reverted encoding behavior in wsgi module to correct regression in CherryPy tests.
v5.9.0¶
16 Nov 2017
CherryPy #1088 and PR #53: Avoid using SO_REUSEADDR on Windows where it has different semantics.
cheroot.tests.webtest
adopts the one method that was unique in CherryPy, now superseding the implementation there.Substantial cleanup around compatibility functions (
_compat
module).License unintentionally changed to MIT. BSD still declared and intended.
v5.8.3¶
11 Aug 2017
Improve HTTP request line validation:
Improve HTTP version parsing
Fix HTTP CONNECT method processing:
Respond with
405 Method Not Allowed
ifproxy_mode is False
Validate that request-target is in authority-form
Improve tests in
test.test_core
PR #44: Fix EPROTOTYPE @ Mac OS
v5.8.2¶
07 Aug 2017
Fix PR #39 regression. Add HTTP request line check: absolute URI path must start with a forward slash (“/”).
v5.8.1¶
05 Aug 2017
CI improvements:
Add basic working Circle CI v2 config
Fix URI encoding bug introduced in PR #39
Improve
cheroot.test.helper.Controller
to properly match Unicode
v5.8.0¶
01 Aug 2017
CI improvements:
Switch to native PyPy support in Travis CI
Take into account PEP 257 compliant modules
Build wheel in AppVeyor and store it as an artifact
Improve urllib support in
cheroot._compat
v5.7.0¶
24 Jun 2017
CI improvements:
Don’t run tests during deploy stage
Use VM based build job environments only for
pyenv
environmentsOpt-in for beta trusty image @ Travis CI
Be verbose when running tests (show test names)
Show
xfail
/skip details during test run
#34: Fix
_handle_no_ssl
error handler calls#21: Fix
test_conn
tests:Improve setup_server def in HTTP connection tests
Fix HTTP streaming tests
Fix HTTP/1.1 pipelining test under Python 3
Fix
test_readall_or_close
testFix
test_No_Message_Body
Clarify
test_598
fail reason
#36: Add GitHub templates for PR, issue && contributing
#27: Default HTTP Server header to Cheroot version str
Cleanup
_compat
functions from server module
v5.6.0¶
20 Jun 2017
Fix all PEP 257 related errors in all non-test modules.
cheroot/test/*
folder is only one left allowed to fail with this linter.CherryPy #1602 and PR #30: Optimize chunked body reader loop by returning empty data is the size is 0.
CherryPy #1486: Reset buffer if the body size is unknown
CherryPy #1131: Add missing size hint to SizeCheckWrapper
v5.5.2¶
18 Jun 2017
PR #32: Ignore
"unknown error"
and"https proxy request"
SSL errors.Ref: sabnzbd/sabnzbd#820
Ref: sabnzbd/sabnzbd#860
v5.5.1¶
18 Jun 2017
Make AppVeyor list separate tests in corresponding tab.
PR #29: Configure Travis CI build stages.
Prioritize tests by stages.
Move deploy stage to be run very last after all other stages finish.
PR #31: Ignore “Protocol wrong type for socket” (EPROTOTYPE) @ OSX for non-blocking sockets.
This was originally fixed for regular sockets in CherryPy #1392.
Ref: https://forums.sabnzbd.org/viewtopic.php?f=2&t=22728&p=112251
v5.5.0¶
02 May 2017
#17 via PR #25: Instead of a read_headers function, cheroot now supplies a
HeaderReader
class to perform the same function.Any
HTTPRequest
object may override the header_reader attribute to customize the handling of incoming headers.The server module also presents a provisional implementation of a
DropUnderscoreHeaderReader
that will exclude any headers containing an underscore. It remains an exercise for the implementer to demonstrate how this functionality might be employed in a server such as CherryPy.PR #26: Configured TravisCI to run tests under OS X.
v5.4.0¶
19 Mar 2017
PR #22: Add “ciphers” parameter to SSLAdapter.
v5.3.0¶
12 Mar 2017
PR #8: Updated style to better conform to PEP 8.
Refreshed project with jaraco skeleton.
Docs now built and deployed at RTD.
v5.2.0¶
02 Mar 2017
#5: Set
Server.version
to Cheroot version instead of CherryPy version.PR #4: Prevent tracebacks and drop bad HTTPS connections in the
BuiltinSSLAdapter
, similar topyOpenSSLAdapter
.#3: Test suite now runs and many tests pass. Some are still failing.
v5.1.0¶
22 Jan 2017
Removed the WSGI prefix from classes in
cheroot.wsgi
. Kept aliases for compatibility.#1: Corrected docstrings in
cheroot.server
andcheroot.wsgi
.PR #2: Fixed
ImportError
when pkg_resources cannot find the cheroot distribution.
v5.0.1¶
14 Jan 2017
Fix error in
parse_request_uri
created in 68a5769.
v5.0.0¶
14 Jan 2017
Initial release based on cherrypy.cherrypy.wsgiserver 8.8.0.