NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2968 most downloaded on PyPI
Highly-optimized, pure-python HTTP server
Last release 10 months ago
07 Nov 2025
Release timing varies
gaps range from 8 days to 1.4 years
Nearly every release is documented
notes for 60 of the last 60 stable releases
4 versions withdrawn
withdrawn after publishing
13 years old
82 releases · first in 2014
Minor refactorings of cheroot/server.py to reduce redundancy of behavior.
(2017-11-23)
Minor refactorings of cheroot/server.py to reduce redundancy of behavior.
Delinting with fewer exceptions.
Restored license to BSD.
- #61: Re-release without spurious files in the distribution.
One column per quarter.
(2017-11-23)
61: Re-release without spurious files in the distribution.
- #58: Reverted encoding behavior in wsgi module to correct regression in CherryPy tests.
(2017-11-17)
58: Reverted encoding behavior in wsgi module to correct regression in CherryPy tests.
CherryPy #1088 and #53: Avoid using SO_REUSEADDR on Windows where it has different semantics.
CherryPy #1088 and #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.
(2017-11-16)
cherrypy/cherrypy#1088 and 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 (~cheroot._compat module).
License unintentionally changed to MIT. BSD still declared and intended.
Improve HTTP request line validation:
Improve HTTP request line validation:
Fix HTTP CONNECT method processing:
405 Method Not Allowed if proxy_mode is FalseImprove tests in test.test_core
#44: Fix EPROTOTYPE @ Mac OS
Fix #39 regression. Add HTTP request line check: absolute URI path must start with a forward slash ("/").
(2017-08-07)
Fix 39 regression. Add HTTP request line check: absolute URI path must start with a forward slash ("/").
Add basic working Circle CI v2 config
CI improvements:
Fix URI encoding bug introduced in #39
(2017-08-05)
CI improvements:
Add basic working Circle CI v2 config
Fix URI encoding bug introduced in 39
Improve cheroot.test.helper.Controller to properly match Unicode
Switch to native PyPy support in Travis CI
_compat moduleenviron['QUERY_STRING'] in WSGIproxy_mode and strict_mode argument in server.HTTPRequest(2017-08-01)
CI improvements:
Switch to native PyPy support in Travis CI
Take into account 257 compliant modules
Build wheel in AppVeyor and store it as an artifact
Improve urllib support in cheroot._compat
38 via 39: Improve URI parsing:
Make it compliant with 7230, 7231 and 2616
Fix setting of environ['QUERY_STRING'] in WSGI
Introduce proxy_mode and strict_mode argument in server.HTTPRequest
Fix decoding of Unicode URIs in WSGI 1.0 gateway
Don't run tests during deploy stage
CI improvements:
#34: Fix _handle_no_ssl error handler calls
#21: Fix test_conn tests:
test_readall_or_close testtest_No_Message_Bodytest_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
(2017-06-24)
CI improvements:
Don't run tests during deploy stage
Use VM based build job environments only for pyenv environments
Opt-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 test
Fix 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 ~cheroot._compat functions from server module
Fix all PEP 257 related errors in all non-test modules. cheroot/test/* folder is only one left allowed to fail with this linter.
Fix all PEP 257 related errors in all non-test modules.
cheroot/test/* folder is only one left allowed to fail with this linter.
#30: Optimize chunked body reader loop by returning empty data is the size is 0.
Ref: cherrypy/cherrypy#1602
Reset buffer if the body size is unknown
Ref: cherrypy/cherrypy#1486
Add missing size hint to SizeCheckWrapper
Ref: cherrypy/cherrypy#1131
(2017-06-20)
Fix all 257 related errors in all non-test modules.
cheroot/test/* folder is only one left allowed to fail with this linter.
cherrypy/cherrypy#1602 and 30: Optimize chunked body reader loop by returning empty data is the size is 0.
cherrypy/cherrypy#1486: Reset buffer if the body size is unknown.
cherrypy/cherrypy#1131: Add missing size hint to SizeCheckWrapper.
(2017-06-20)
Fix all 257 related errors in all non-test modules.
cheroot/test/* folder is only one left allowed to fail with this linter.
1602 and 30: Optimize chunked body reader loop by returning empty data is the size is 0.
1486: Reset buffer if the body size is unknown
1131: Add missing size hint to SizeCheckWrapper
- #32: Ignore "unknown error" and "https proxy request" SSL errors Ref: sabnzbd/sabnzbd#820 Ref: sabnzbd/sabnzbd#860
#32: Ignore "unknown error" and "https proxy request" SSL errors
Ref: sabnzbd/sabnzbd#820
Ref: sabnzbd/sabnzbd#860
(2017-06-18)
32: Ignore "unknown error" and "https proxy request" SSL errors.
Ref: sabnzbd/sabnzbd#820
Ref: sabnzbd/sabnzbd#860
This was originally fixed for regular sockets in cherrypy/cherrypy#1392
#31: Ignore "Protocol wrong type for socket" (EPROTOTYPE) @ OSX for non-blocking sockets
This was originally fixed for regular sockets in cherrypy/cherrypy#1392
Ref: https://forums.sabnzbd.org/viewtopic.php?f=2&t=22728&p=112251
(2017-06-18)
Make AppVeyor list separate tests in corresponding tab.
29: Configure Travis CI build stages.
Prioritize tests by stages.
Move deploy stage to be run very last after all other stages finish.
31: Ignore "Protocol wrong type for socket" (EPROTOTYPE) @ OSX for non-blocking sockets.
This was originally fixed for regular sockets in cherrypy/cherrypy#1392.
Ref: https://forums.sabnzbd.org/viewtopic.php?f=2&t=22728&p=112251
Any HTTPRequest object may override the header_reader attribute to customize the handling of incoming headers.
#17 via #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.
#26: Configured TravisCI to run tests under OS X.
- #22: Add "ciphers" parameter to SSLAdapter
(2017-03-19)
22: Add "ciphers" parameter to SSLAdapter.
Refreshed project with jaraco/skeleton.
#8: Updated style to better conform to PEP 8.
Refreshed project with jaraco/skeleton.
Docs now built and deployed at RTD.
(2017-03-12)
8: Updated style to better conform to 8.
Refreshed project with jaraco skeleton.
Docs now built and deployed at RTD.
(2017-03-12)
#8 : Updated style to better conform to PEP 8 .
Refreshed project with jaraco skeleton .
Docs now built and deployed at RTD .
- #5: Set Server.version to Cheroot version instead of CherryPy version. - #4: Prevent tracebacks and drop bad HTTPS connections in the BuiltinSSLAdap
#5: Set Server.version to Cheroot version instead of CherryPy version.
#4: Prevent tracebacks and drop bad HTTPS connections in the
BuiltinSSLAdapter, similar to pyOpenSSLAdapter.
#3: Test suite now runs and many tests pass. Some are still failing.
Removed the WSGI prefix from classes in cheroot.wsgi. Kept aliases for compatibility.
Removed the WSGI prefix from classes in :module:cheroot.wsgi.
Kept aliases for compatibility.
#1: Corrected docstrings in :module:cheroot.server
and :module:cheroot.wsgi.
#2: Fixed ImportError when pkg_resources cannot find the cheroot distribution.
Fix error in parse_request_uri created in 68a5769.
parse_request_uri created in 68a5769.(2017-01-14)
Fix error in parse_request_uri created in 68a5769.
Initial release based on cherrypy.cherrypy.wsgiserver 8.8.0.
(2017-01-14)
Initial release based on cherrypy.cherrypy.wsgiserver 8.8.0.
(2017-01-14)
Initial release based on cherrypy.cherrypy.wsgiserver 8.8.0 .
On this page
Change log
To be included in the next release
Released versions
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →