v8.9.1
-----
* #1537: Restore dependency on pywin32 for Python 3.6.
v8.9.0
-----
* #1547: Replaced ``cherryd`` distutils script with a setuptools
console entry point.
When running CherryPy in daemon mode, the forked process no
longer changes directory to ``/``. If that behavior is something
on which your application relied and should rely, please file
a ticket with the project.
v8.8.0
-----
* #1528: Allow a timeout of 0 to server.
v8.7.0
-----
* #645: Setting a bind port of 0 will bind to an ephemeral port.
v8.6.0
-----
* #1538 and #1090: Removed cruft from the setup script and
instead rely on `include_package_data
<http://setuptools.readthedocs.io/en/latest/setuptools.html?highlight=include_package_data#new-and-changed-setup-keywords>`_
to ensure the relevant files are included in the package.
Note, this change does cause LICENSE.md no longer to
be included in the installed package.
v8.5.0
-----
* The pyOpenSSL support is now included on Python 3 builds,
removing the last disparity between Python 2 and Python 3
in the CherryPy package. This change is one small step
in consideration of #1399. This change also fixes RPM
builds, as reported in #1149.
v8.4.0
-----
* #1532: Also release wheels for Python 2, enabling
offline installation.
v8.3.1
-----
* #1537: Disable dependency on pypiwin32 on Python 3.6
until a viable build of pypiwin32 can be made on that
Python version.
v8.3.0
-----
* Consolidated some documentation and include the more
concise readme in the package long description, as found
on PyPI.
v8.2.0
-----
* #1463: CherryPy tests are now run under pytest and
invoked using tox.
v8.1.3
-----
* #1530: Fix the issue with TypeError being swallowed by
decorated handlers.
v8.1.2
-----
* #1508
v8.1.1
-----
* #1497: Handle errors thrown by ``ssl_module: 'builtin'``
when client opens connection to HTTPS port using HTTP.
* #1350: Fix regression introduced in v6.1.0 where environment
construction for WSGIGateway_u0 was passing one parameter
and not two.
* Other miscellaneous fixes.
v8.1.0
-----
* #1473: ``HTTPError`` now also works as a context manager.
* #1487: The sessions tool now accepts a ``storage_class``
parameter, which supersedes the new deprecated
``storage_type`` parameter. The ``storage_class`` should
be the actual Session subclass to be used.
* Releases now use ``setuptools_scm`` to track the release
versions. Therefore, releases can be cut by simply tagging
a commit in the repo. Versions numbers are now stored in
exactly one place.
v8.0.1
-----
* #1489 via #1493: Additionally reject anything else that's
not bytes.
* #1492: systemd socket activation.
v8.0.0
-----
* #1483: Remove Deprecated constructs:
- ``cherrypy.lib.http`` module.
- ``unrepr``, ``modules``, and ``attributes`` in
``cherrypy.lib``.
* #1476: Drop support for python-memcached<1.58
* #1401: Handle NoSSLErrors.
* #1489: In ``wsgiserver.WSGIGateway.respond``, the application
must now yield bytes and not text, as the spec requires.
If text is received, it will now raise a ValueError instead
of silently encoding using ISO-8859-1.
* Removed unicode filename from the package, working around
pip #3894 and setuptools #704.
7.1.0
-----
# 1458: Implement systemd's socket activation mechanism for
CherryPy servers, based on work sponsored by Endless Computers.
Socket Activation allows one to setup a system so that
systemd will sit on a port and start services
'on demand' (a little bit like inetd and xinetd
used to do).
7.0.0
-----
Removed the long-deprecated backward compatibility for
legacy config keys in the engine. Use the config for the
namespaced-plugins instead:
- autoreload_on -> autoreload.on
- autoreload_frequency -> autoreload.frequency
- autoreload_match -> autoreload.match
- reload_files -> autoreload.files
- deadlock_poll_frequency -> timeout_monitor.frequency
6.2.1
-----
# 1460: Fix KeyError in Bus.publish when signal handlers
set in config.
6.2.0
-----
* #1441: Added tool to automatically convert request
params based on type annotations (primarily in
Python 3). For example:
@cherrypy.tools.params()
def resource(self, limit: int):
assert isinstance(limit, int)
6.1.1
-----
* Issue #1411: Fix issue where autoreload fails when
the host interpreter for CherryPy was launched using
``python -m``.
6.1.0
-----
* Combined wsgiserver2 and wsgiserver3 modules into a
single module, ``cherrypy.wsgiserver``.
6.0.2
-----
* Issue #1445: Correct additional typos.
6.0.1
-----
* Issue #1444: Correct typos in ``@cherrypy.expose``
decorators.
6.0.0
-----
* Setuptools is now required to build CherryPy. Pure
distutils installs are no longer supported. This change
allows CherryPy to depend on other packages and re-use
code from them. It's still possible to install
pre-built CherryPy packages (wheels) using pip without
Setuptools.
* `six <https://pypi.io/project/six>`_ is now a
requirement and subsequent requirements will be
declared in the project metadata.
* #1440: Back out changes from #1432 attempting to
fix redirects with Unicode URLs, as it also had the
unintended consequence of causing the 'Location'
to be ``bytes`` on Python 3.
* ``cherrypy.expose`` now works on classes.
* ``cherrypy.config`` decorator is now used throughout
the code internally.
5.6.0
-----
* ``@cherrypy.expose`` now will also set the exposed
attribute on a class.
* Rewrote all tutorials and internal usage to prefer
the decorator usage of ``expose`` rather than setting
the attribute explicitly.
* Removed test-specific code from tutorials.
5.5.0
-----
* #1397: Fix for filenames with semicolons and quote
characters in filenames found in headers.
* #1311: Added decorator for registering tools.
* #1194: Use simpler encoding rules for SCRIPT_NAME
and PATH_INFO environment variables in CherryPy Tree
allowing non-latin characters to pass even when
``wsgi.version`` is not ``u.0``.
* #1352: Ensure that multipart fields are decoded even
when cached in a file.
5.4.0
-----
* ``cherrypy.test.webtest.WebCase`` now honors a
'WEBTEST_INTERACTIVE' environment variable to disable
interactive tests (still enabled by default). Set to '0'
or 'false' or 'False' to disable interactive tests.
* #1408: Fix AttributeError when listiterator was accessed
using the ``next`` attribute.
* #748: Removed ``cherrypy.lib.sessions.PostgresqlSession``.
* #1432: Fix errors with redirects to Unicode URLs.
5.3.0
-----
* #1202: Add support for specifying a certificate authority when
serving SSL using the built-in SSL support.
* Use ssl.create_default_context when available.
* #1392: Catch platform-specific socket errors on OS X.
* #1386: Fix parsing of URIs containing ``://`` in the path part.
5.2.0
-----
* #1410: Moved hosting to Github (
`cherrypy/cherrypy <https://github.com/cherrypy/cherrypy>`_.
5.1.0
-----
* Bugfix issue #1315 for ``test_HTTP11_pipelining`` test in Python 3.5
* Bugfix issue #1382 regarding the keyword arguments support for Python 3
on the config file.
* Bugfix issue #1406 for ``test_2_KeyboardInterrupt`` test in Python 3.5.
by monkey patching the HTTPRequest given a bug on CPython
that is affecting the testsuite (https://bugs.python.org/issue23377).
* Add additional parameter ``raise_subcls`` to the tests helpers
`openURL` and ``CPWebCase.getPage`` to have finer control on
which exceptions can be raised.
* Add support for direct keywords on the calls (e.g. ``foo=bar``) on
the config file under Python 3.
* Add additional validation to determine if the process is running
as a daemon on ``cherrypy.process.plugins.SignalHandler`` to allow
the execution of the testsuite under CI tools.
5.0.1
-----
* Bugfix for NameError following #94.
5.0.0
-----
* Removed deprecated support for ``ssl_certificate`` and
``ssl_private_key`` attributes and implicit construction
of SSL adapter on Python 2 WSGI servers.
* Default SSL Adapter on Python 2 is the builtin SSL adapter,
matching Python 3 behavior.
* Pull request #94: In proxy tool, defer to Host header for
resolving the base if no base is supplied.
4.0.0
-----
* Drop support for Python 2.5 and earlier.
* No longer build Windows installers by default.
3.8.2
-----
* Pull Request #116: Correct InternalServerError when null bytes in
static file path. Now responds with 404 instead.
3.8.0
-----
* Pull Request #96: Pass ``exc_info`` to logger as keyword rather than
formatting the error and injecting into the message.
3.7.0
-----
* CherryPy daemon may now be invoked with ``python -m cherrypy`` in
addition to the ``cherryd`` script.
* Issue #1298: Fix SSL handling on CPython 2.7 with builtin SSL module
and pyOpenSSL 0.14. This change will break PyPy for now.
* Several documentation fixes.
3.6.0
-----
* Fixed HTTP range headers for negative length larger than content size.
* Disabled universal wheel generation as wsgiserver has Python duality.
* Pull Request #42: Correct TypeError in ``check_auth`` when encrypt is used.
* Pull Request #59: Correct signature of HandlerWrapperTool.
* Pull Request #60: Fix error in SessionAuth where login_screen was
incorrectly used.
* Issue #1077: Support keyword-only arguments in dispatchers (Python 3).
* Issue #1019: Allow logging host name in the access log.
* Pull Request #50: Fixed race condition in session cleanup.
3.5.0
-----
* Issue #1301: When the incoming queue is full, now reject additional
connections. This functionality was added to CherryPy 3.0, but
unintentionally lost in 3.1.
3.4.0
-----
* Miscellaneous quality improvements.
3.3.0
-----
CherryPy adopts semver.