1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815
|
v18.10.0
--------
* Removed the use of :mod:`cgi` deprecated in Python 3.11
-- by :user:`radez`.
* Various `changes <https://github.com/cherrypy/cherrypy/compare/7104cfb3cfc6e6582f0773529142d777b1aff1bd...v18.10.0>`_.
v18.9.0
-------
* Various
`changes <https://github.com/cherrypy/cherrypy/compare/v18.8.0...v18.9.0>`_.
v18.8.0
-------
* :issue:`1974`: Dangerous characters received in a host header
encoded using RFC 2047 are now elided by default. Currently,
dangerous characters are defined as CR and LF. The original
value is still available as ``cherrypy.request.headers['Host'].raw``
if needed.
v18.7.0
-------
* :pr:`1923`: Drop support for Python 3.5.
* :pr:`1945`: Fixed compatibility on Python 3.11.
v18.6.1
-------
* :issue:`1849` via :pr:`1879`: Fixed XLF flag in gzip header
emitted by gzip compression tool per
:rfc:`1952#section-2.3.1` -- by :user:`webknjaz`.
* :issue:`1874`: Restricted depending on pywin32 only under
CPython so that it won't get pulled-in under PyPy
-- by :user:`webknjaz`.
* :issue:`1920`: Bumped minimum version of PyWin32 to 227.
Block pywin32 install on Python 3.10 and later.
v18.6.0
-------
* :issue:`1776` via :pr:`1851`: Add support for UTF-8 encoded attachment
file names in ``Content-Disposition`` header via :rfc:`6266#appendix-D`.
v18.5.0
-------
* :issue:`1827`: Fixed issue where bytes values in a ``HeaderMap``
would be converted to strings.
* :pr:`1826`: Rely on
`jaraco.collections <https://pypi.org/project/jaraco.collections>`_
for its case-insensitive dictionary support.
v18.4.0
-------
* :pr:`1715`: Fixed issue in cpstats where the ``data/`` endpoint
would fail with encoding errors on Python 3.
* :pr:`1821`: Simplify the passthrough of parameters to
``CPWebCase.getPage`` to cheroot. CherryPy now requires
cheroot 8.2.1 or later.
v18.3.0
-------
* :pr:`1806`: Support handling multiple exceptions when processing hooks as
reported in :issue:`1770`.
v18.2.0
-------
* File-based sessions no longer attempt to remove the lock files
when releasing locks, instead deferring to the default behavior
of zc.lockfile. Fixes :issue:`1391` and :issue:`1779`.
* :pr:`1794`: Add native support for ``308 Permanent Redirect``
usable via ``raise cherrypy.HTTPRedirect('/new_uri', 308)``.
v18.1.2
-------
* Fixed :issue:`1377` via :pr:`1785`: Restore a native WSGI-less
HTTP server support.
* :pr:`1769`: Reduce log level for non-error events in win32.py
v18.1.1
-------
* :pr:`1774` reverts :pr:`1759` as new evidence emerged that
the original behavior was intentional. Re-opens :issue:`1758`.
v18.1.0
-------
* :issue:`1758` via :pr:`1759`: In the bus, when awaiting a
state change, only publish after the state has changed.
v18.0.1
-------
* :issue:`1738` via :pr:`1736`: Restore support for 'bytes'
in response headers.
* Substantial removal of Python 2 compatibility code.
v18.0.0
-------
* :issue:`1730`: Drop support for Python 2.7. CherryPy 17 will
remain an LTS release for bug and security fixes.
* Drop support for Python 3.4.
v17.4.2
-------
* Fixed :issue:`1377` by backporting :pr:`1785` via :pr:`1786`:
Restore a native WSGI-less HTTP server support.
v17.4.1
-------
* :issue:`1738` via :pr:`1755`: Restore support for 'bytes'
in response headers (backport from v18.0.1).
v17.4.0
-------
* :commit:`a95e619f`: When setting Response Body, reject Unicode
values, making behavior on Python 2 same as on Python 3.
* Other inconsequential refactorings.
v17.3.0
-------
* :issue:`1193` via :pr:`1729`: Rely on zc.lockfile for
session concurrency support.
v17.2.0
-------
* :issue:`1690` via :pr:`1692`: Prevent orphaned Event object in cached
304 response.
v17.1.0
-------
* :issue:`1694` via :pr:`1695`: Add support for accepting uploaded files
with non-ascii filenames per RFC 5987.
v17.0.0
-------
* :issue:`1673`: CherryPy now allows namespace packages for
its dependencies. Environments that cannot handle namespace
packgaes like py2exe will need to add such support or pin to
older CherryPy versions.
v16.0.3
-------
* :issue:`1722`: Pinned the ``tempora`` dependency against
version 1.13 to avoid pulling in namespace packages.
v16.0.2
-------
* :issue:`1716` via :pr:`1717`: Fixed handling of url-encoded parameters
in digest authentication handling, correcting regression in v14.2.0.
* :issue:`1719` via :commit:`1d41828`: Digest-auth tool will now return
a status code of 401 for when a scheme other than 'digest' is
indicated.
v16.0.0
-------
* :issue:`1688` via :commit:`38ad1da`: Removed ``basic_auth`` and
``digest_auth`` tools and the ``httpauth`` module, which have been
officially deprecated earlier in v14.0.0.
* Removed deprecated properties:
- ``cherrypy._cpreqbody.Entity.type`` deprecated in favor of
:py:attr:`cherrypy._cpreqbody.Entity.content_type`
- ``cherrypy._cprequest.Request.body_params`` deprecated in favor of
:py:attr:`cherrypy._cprequest.RequestBody.params`
* :issue:`1377`: In _cp_native server, set ``req.status`` using bytes
(fixed in :pr:`1712`).
* :issue:`1697` via :commit:`841f795`: Fixed error on Python 3.7 with
AutoReloader when ``__file__`` is ``None``.
* :issue:`1713` via :commit:`15aa80d`: Fix warning emitted during
test run.
* :issue:`1370` via :commit:`38f199c`: Fail with HTTP 400 for invalid
headers.
v15.0.0
-------
* :issue:`1708`: Removed components from webtest that were
removed in the refactoring of cheroot.test.webtest for
cheroot 6.1.0.
v14.2.0
-------
* :issue:`1680` via :pr:`1683`: Basic Auth and Digest Auth
tools now support :rfc:`7617` UTF-8 charset decoding where
possible, using latin-1 as a fallback.
v14.1.0
-------
* :cr-pr:`37`: Add support for peercreds lookup over UNIX domain socket.
This enables app to automatically identify "who's on the other
end of the wire".
This is how you enable it::
server.peercreds: True
server.peercreds_resolve: True
The first option will put remote numeric data to WSGI env vars:
app's PID, user's id and group.
Second option will resolve that into user and group names.
To prevent expensive syscalls, data is cached on per connection
basis.
v14.0.1
-------
* :issue:`1700`: Improve windows pywin32 dependency declaration via
conditional extras.
v14.0.0
-------
* :issue:`1688`: Officially deprecated ``basic_auth`` and ``digest_auth``
tools and the ``httpauth`` module, triggering DeprecationWarnings
if they're used. Applications should instead adapt to use the
more recent ``auth_basic`` and ``auth_digest`` tools.
This deprecated functionality will be removed in a subsequent
release soon.
* Removed ``DeprecatedTool`` and the long-deprecated and disabled
``tidy`` and ``nsgmls`` tools. See `the rationale
<https://github.com/cherrypy/cherrypy/pull/1689#issuecomment-362924962>`_
for this change.
v13.1.0
-------
* :issue:`1231` via :pr:`1654`: CaseInsensitiveDict now re-uses the
generalized functionality from ``jaraco.collections`` to
provide a more complete interface for a CaseInsensitiveDict
and HeaderMap.
Users are encouraged to use the implementation from
`jaraco.collections <https://pypi.org/project/jaraco.collections>`_
except when dealing with headers in CherryPy.
v13.0.1
-------
* :pr:`1671`: Restore support for installing CherryPy into
environments hostile to namespace packages, broken since
the 11.1.0 release.
v13.0.0
-------
* :issue:`1666`: Drop support for Python 3.3.
v12.0.2
-------
* :issue:`1665`: In request processing, when an invalid cookie is
received, render the actual error message reported rather
than guessing (sometimes incorrectly) what error occurred.
v12.0.1
-------
* Fixed issues importing :py:mod:`cherrypy.test.webtest` (by creating
a module and importing classes from :py:mod:`cheroot`) and added a
corresponding :py:class:`DeprecationWarning`.
v12.0.0
-------
* Drop support for Python 3.1 and 3.2.
* :issue:`1625`: Removed response timeout and timeout monitor and
related exceptions, as it not possible to interrupt a request.
Servers that wish to exit a request prematurely are
recommended to monitor ``response.time`` and raise an
exception or otherwise act accordingly.
Servers that previously disabled timeouts by invoking
``cherrypy.engine.timeout_monitor.unsubscribe()`` will now
crash. For forward-compatibility with this release on older
versions of CherryPy, disable
timeouts using the config option::
'engine.timeout_monitor.on': False,
Or test for the presence of the timeout_monitor attribute::
with contextlib2.suppress(AttributeError):
cherrypy.engine.timeout_monitor.unsubscribe()
Additionally, the ``TimeoutError`` exception has been removed,
as it's no longer called anywhere. If your application
benefits from this Exception, please comment in the linked
ticket describing the use case, and we'll help devise a
solution or bring the exception back.
v11.3.0
-------
* Bump to cheroot 5.9.0.
* ``cherrypy.test.webtest`` module is now merged with the
``cheroot.test.webtest`` module. The CherryPy name is retained
for now for compatibility and will be removed eventually.
v11.2.0
-------
* ``cherrypy.engine.subscribe`` now may be called without a
callback, in which case it returns a decorator expecting the
callback.
* :pr:`1656`: Images are now compressed using lossless compression
and consume less space.
v11.1.0
-------
* :pr:`1611`: Expose default status logic for a redirect as
``HTTPRedirect.default_status``.
* :pr:`1615`: ``HTTPRedirect.status`` is now an instance property and
derived from the value in ``args``. Although it was previously
possible to set the property on an instance, and this change
prevents that possibilty, CherryPy never relied on that behavior
and we presume no applications depend on that interface.
* :issue:`1627`: Fixed issue in proxy tool where more than one port would
appear in the ``request.base`` and thus in ``cherrypy.url``.
* :pr:`1645`: Added new log format markers:
- ``i`` holds a per-request UUID4
- ``z`` outputs UTC time in format of RFC 3339
- ``cherrypy._cprequest.Request.unique_id.uuid4`` now has lazily
invocable UUID4
* :issue:`1646`: Improve http status conversion helper.
* :pr:`1638`: Always use backslash for path separator when processing
paths in staticdir.
* :issue:`1190`: Fix gzip, caching, and staticdir tools integration. Makes
cache of gzipped content valid.
* Requires cheroot 5.8.3 or later.
* Also, many improvements around continuous integration and code
quality checks.
This release contained an unintentional regression in environments that
are hostile to namespace packages, such as Pex, Celery, and py2exe.
See :pr:`1671` for details.
v11.0.0
-------
* :issue:`1607`: Dropped support for Python 2.6.
v10.2.2
-------
* :issue:`1595`: Fixed over-eager normalization of paths in cherrypy.url.
v10.2.1
-------
* Remove unintended dependency on ``graphviz`` in Python
2.6.
v10.2.0
-------
* :pr:`1580`: ``CPWSGIServer.version`` now reported as
``CherryPy/x.y.z Cheroot/x.y.z``. Bump to cheroot 5.2.0.
* The codebase is now :pep:`8` complaint, flake8 linter is `enabled in TravisCI by
default <https://github.com/cherrypy/cherrypy/commit/b6e752b>`_.
* Max line restriction is now set to 120 for flake8 linter.
* :pep:`257` linter runs as separate allowed failure job in Travis CI.
* A few bugs related to undeclared variables have been fixed.
* ``pre-commit`` testing goes faster due to enabled caching.
v10.1.1
-------
* :issue:`1342`: Fix AssertionError on shutdown.
v10.1.0
-------
* Bump to cheroot 5.1.0.
* :issue:`794`: Prefer setting max-age for session cookie
expiration, moving MSIE hack into a function
documenting its purpose.
v10.0.0
-------
* :issue:`1332`: CherryPy now uses `portend
<https://pypi.org/project/portend>`_ for checking and
waiting on ports for startup and teardown checks. The
following names are no longer present:
- cherrypy._cpserver.client_host
- cherrypy._cpserver.check_port
- cherrypy._cpserver.wait_for_free_port
- cherrypy._cpserver.wait_for_occupied_port
- cherrypy.process.servers.check_port
- cherrypy.process.servers.wait_for_free_port
- cherrypy.process.servers.wait_for_occupied_port
Use this functionality from the portend package directly.
v9.0.0
------
* :issue:`1481`: Move functionality from cherrypy.wsgiserver to
the `cheroot 5.0 <https://pypi.org/project/Cheroot/5.0.1/>`_
project.
v8.9.1
------
* :issue:`1537`: Restore dependency on pywin32 for Python 3.6.
v8.9.0
------
* :pr:`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
------
* :pr:`1528`: Allow a timeout of 0 to server.
v8.7.0
------
* :issue:`645`: Setting a bind port of 0 will bind to an ephemeral port.
v8.6.0
------
* :issue:`1538` and :issue:`1090`: Removed cruft from the setup script and
instead rely on `include_package_data
<https://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 :issue:`1399`. This change also fixes RPM
builds, as reported in :issue:`1149`.
v8.4.0
------
* :issue:`1532`: Also release wheels for Python 2, enabling
offline installation.
v8.3.1
------
* :issue:`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
------
* :issue:`1463`: CherryPy tests are now run under pytest and
invoked using tox.
v8.1.3
------
* :issue:`1530`: Fix the issue with TypeError being swallowed by
decorated handlers.
v8.1.2
------
* :issue:`1508`
v8.1.1
------
* :issue:`1497`: Handle errors thrown by ``ssl_module: 'builtin'``
when client opens connection to HTTPS port using HTTP.
* :issue:`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
------
* :issue:`1473`: ``HTTPError`` now also works as a context manager.
* :issue:`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
------
* :issue:`1489` via :pr:`1493`: Additionally reject anything else that's
not bytes.
* :issue:`1492`: systemd socket activation.
v8.0.0
------
* :issue:`1483`: Remove Deprecated constructs:
- ``cherrypy.lib.http`` module.
- ``unrepr``, ``modules``, and ``attributes`` in
``cherrypy.lib``.
* :pr:`1476`: Drop support for python-memcached<1.58
* :issue:`1401`: Handle NoSSLErrors.
* :issue:`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
:gh:`pypa/pip#3894 <pypa/pip/issues/3894>` and :gh:`pypa/setuptools#704
<pypa/setuptools/issues/704>`.
v7.1.0
------
* :pr:`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).
v7.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
v6.2.1
------
* :issue:`1460`: Fix KeyError in Bus.publish when signal handlers
set in config.
v6.2.0
------
* :issue:`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)
v6.1.1
------
* Issue :issue:`1411`: Fix issue where autoreload fails when
the host interpreter for CherryPy was launched using
``python -m``.
v6.1.0
------
* Combined wsgiserver2 and wsgiserver3 modules into a
single module, ``cherrypy.wsgiserver``.
v6.0.2
------
* Issue :pr:`1445`: Correct additional typos.
v6.0.1
------
* Issue :issue:`1444`: Correct typos in ``@cherrypy.expose``
decorators.
v6.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.
* :issue:`1440`: Back out changes from :pr:`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.
v5.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.
v5.5.0
------
* :issue:`1397`: Fix for filenames with semicolons and quote
characters in filenames found in headers.
* :issue:`1311`: Added decorator for registering tools.
* :issue:`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``.
* :issue:`1352`: Ensure that multipart fields are decoded even
when cached in a file.
v5.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.
* :issue:`1408`: Fix AttributeError when listiterator was accessed
using the ``next`` attribute.
* :issue:`748`: Removed ``cherrypy.lib.sessions.PostgresqlSession``.
* :pr:`1432`: Fix errors with redirects to Unicode URLs.
v5.3.0
------
* :issue:`1202`: Add support for specifying a certificate authority when
serving SSL using the built-in SSL support.
* Use ssl.create_default_context when available.
* :issue:`1392`: Catch platform-specific socket errors on OS X.
* :issue:`1386`: Fix parsing of URIs containing ``://`` in the path part.
v5.2.0
------
* :issue:`1410`: Moved hosting to Github
(`cherrypy/cherrypy <https://github.com/cherrypy/cherrypy>`_).
v5.1.0
------
* Bugfix issue :issue:`1315` for ``test_HTTP11_pipelining`` test in Python 3.5
* Bugfix issue :issue:`1382` regarding the keyword arguments support for Python 3
on the config file.
* Bugfix issue :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.
v5.0.1
------
* Bugfix for NameError following :issue:`94`.
v5.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 :issue:`94`: In proxy tool, defer to Host header for
resolving the base if no base is supplied.
v4.0.0
------
* Drop support for Python 2.5 and earlier.
* No longer build Windows installers by default.
v3.8.2
------
* Pull Request :issue:`116`: Correct InternalServerError when null bytes in
static file path. Now responds with 404 instead.
v3.8.0
------
* Pull Request :issue:`96`: Pass ``exc_info`` to logger as keyword rather than
formatting the error and injecting into the message.
v3.7.0
------
* CherryPy daemon may now be invoked with ``python -m cherrypy`` in
addition to the ``cherryd`` script.
* Issue :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.
v3.6.0
------
* Fixed HTTP range headers for negative length larger than content size.
* Disabled universal wheel generation as wsgiserver has Python duality.
* Pull Request :issue:`42`: Correct TypeError in ``check_auth`` when encrypt is used.
* Pull Request :issue:`59`: Correct signature of HandlerWrapperTool.
* Pull Request :issue:`60`: Fix error in SessionAuth where login_screen was
incorrectly used.
* Issue :issue:`1077`: Support keyword-only arguments in dispatchers (Python 3).
* Issue :issue:`1019`: Allow logging host name in the access log.
* Pull Request :issue:`50`: Fixed race condition in session cleanup.
v3.5.0
------
* Issue :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.
v3.4.0
------
* Miscellaneous quality improvements.
v3.3.0
------
CherryPy adopts semver.
|