Releases: cherrypy/cheroot
v11.1.2
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/11.1.2
🌱 v11.1.2 is marked as a stable release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/19175006509
v11.1.2
(2025-11-07)
Bug fixes
-
The "service unavailable" thread is now turn down properly when the
server is shut down -- by @itamarst.This fixes a regression in Cheroot originally introduced in v11.0.0
that would manifest itself under Python 3.12 and older. In certain
conditions like under CherryPy, it would also lead to hangs on
tear-down.
v11.1.1
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/11.1.1
🌱 v11.1.1 is marked as a stable release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/19050434787
v11.1.1
(2025-11-03)
Packaging updates and notes for downstreams
-
The packaging configuration has been fixed to ensure that only
cherootpackage will be installed intosite-packages/-- by
@webknjaz.This fixes a regression introduced in version 11.1.0.
Related issues and pull requests on GitHub: #790.
Related commits on GitHub:
d286d1a.
v11.1.0
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/11.1.0
🌱 v11.1.0 is marked as a stable release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/19020536310
v11.1.0
(2025-11-03)
Features
-
Added optional private key password argument to SSL adapters to
support password-protected private keys -- by @jatalahd.Related issues and pull requests on GitHub: #752.
Contributor-facing changes
-
Added missing
__all__andIS_WINDOWSdefinitions to.pyistub
files for mypy.-- by @julianz-
Related issues and pull requests on GitHub: #774.
-
Made
test_http_over_https_errorcompatible with Solaris -- by
@mtelka.Related issues and pull requests on GitHub: #776.
-
Increased timeout values
test_client.server_instance.timeoutand
http_request_timeoutto make related tests more stable.Related issues and pull requests on GitHub: #777.
v11.0.0
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/11.0.0
🌱 v11.0.0 is marked as a stable release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/17894178348
v11.0.0
(2025-09-21)
Features
-
When load is too high, Cheroot now responds with a 503 Service
Unavailable HTTP error. Previously it silently closed the connection.-- by @itamarst
Related issues and pull requests on GitHub: #745.
Removals and backward incompatible breaking changes
-
Cheroot dropped support for Python 3.6 and 3.7. It now requires Python
3.8 or later.-- by @jaraco
Related issues and pull requests on GitHub: #565, #633.
Related commits on GitHub:
437863ee.
Packaging updates and notes for downstreams
-
Declared Python 3.12 and Python 3.13 as supported officially -- by
@webknjaz.Related issues and pull requests on GitHub: #696.
Related commits on GitHub:
5db4f634. -
The minimum version of the
setuptools-scmbuild dependency has been
set to 7. The Git archives are now produced by it natively, instead of
relying on a third party plugin which is no longer being used.-- by @serhii73
Related issues and pull requests on GitHub: #628.
-
The packaging metadata has been migrated to the
pyproject.toml-based
621declaration -- by @jaraco and @webknjaz.As a part of this update, the minimum version of the
setuptools
build backend was bumped to 61.2. Moreover, any compatibility shims
that existed insetup.cfgandsetup.pyhave been removed for good.Related issues and pull requests on GitHub: #690.
Contributor-facing changes
-
The test infrastructure has been updated to stop using the
pytest-forkedplugin -- by @jaraco and @webknjaz.This plugin was causing problems with upgrading to modern versions of
Pytest and it is not going to be fixed anytime soon.It was used in a test that interacts with the system resource limits
under *NIX environments in hopes to isolate the side effects caused
by the preparatory code.It is possible that this will have an effect on the test sessions and
we may have to look for alternative solutions for test process
isolation.Related issues and pull requests on GitHub: #502, #511, #680,
#681, #703. -
The test infrastructure has been updated to start using the upstream
reusable workflowreusable-tox.ymlfromtox-dev/workflow-- by
@webknjaz.This chance allows us to de-duplicate the commonly used CI shape.
Related issues and pull requests on GitHub: #743.
v11.0.0rc1
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/11.0.0rc1
🚧 v11.0.0rc1 is marked as a pre-release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/17892222955
v11.0.0rc1
(2025-09-21)
Features
-
When load is too high, Cheroot now responds with a 503 Service
Unavailable HTTP error. Previously it silently closed the connection.-- by @itamarst
Related issues and pull requests on GitHub: #745.
Removals and backward incompatible breaking changes
-
Cheroot dropped support for Python 3.6 and 3.7. It now requires Python
3.8 or later.-- by @jaraco
Related issues and pull requests on GitHub: #565, #633.
Related commits on GitHub:
437863ee.
Packaging updates and notes for downstreams
-
Declared Python 3.12 and Python 3.13 as supported officially -- by
@webknjaz.Related issues and pull requests on GitHub: #696.
Related commits on GitHub:
5db4f634. -
The minimum version of the
setuptools-scmbuild dependency has been
set to 7. The Git archives are now produced by it natively, instead of
relying on a third party plugin which is no longer being used.-- by @serhii73
Related issues and pull requests on GitHub: #628.
-
The packaging metadata has been migrated to the
pyproject.toml-based
621declaration -- by @jaraco and @webknjaz.As a part of this update, the minimum version of the
setuptools
build backend was bumped to 61.2. Moreover, any compatibility shims
that existed insetup.cfgandsetup.pyhave been removed for good.Related issues and pull requests on GitHub: #690.
Contributor-facing changes
-
The test infrastructure has been updated to stop using the
pytest-forkedplugin -- by @jaraco and @webknjaz.This plugin was causing problems with upgrading to modern versions of
Pytest and it is not going to be fixed anytime soon.It was used in a test that interacts with the system resource limits
under *NIX environments in hopes to isolate the side effects caused
by the preparatory code.It is possible that this will have an effect on the test sessions and
we may have to look for alternative solutions for test process
isolation.Related issues and pull requests on GitHub: #502, #511, #680,
#681, #703. -
The test infrastructure has been updated to start using the upstream
reusable workflowreusable-tox.ymlfromtox-dev/workflow-- by
@webknjaz.This chance allows us to de-duplicate the commonly used CI shape.
Related issues and pull requests on GitHub: #743.
v10.0.1
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/10.0.1
🌱 v10.0.1 is marked as a stable release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8786461123
v10.0.1
(2024-04-22)
Bug fixes
-
Fixed a flaw where internally unhandled exceptions could crash the
worker threads and eventually starve the server of its processing
resources. It is no longer and issue and the unhandled errors are
now logged and suppressed except for a few expected exceptions that
are used for normal interruption requests.-- by @cameronbrunner and @webknjaz
Related issues and pull requests on GitHub: #310, #346, #354,
#358, #365, #375, #599, #641, #649. -
Fixed compatibility with Python 3.8 in the built-in TLS adapter that
relies on :pypython:ssl.Modern Python versions communicate specialized exceptions
:pyssl.SSLEOFErrorand :pyssl.SSLZeroReturnErrorwhere the older
versions errored out in a very generic way.
Packaging updates and notes for downstreams
-
Started signing the package distribution artifacts in CI/CD with
Sigstore and uploading them to GitHub Releases -- by @webknjaz. -
The changelog management is now implemented through the
:stdTowncrier <towncrier:index>tool -- by @webknjaz.The contributors are now expected to :std
include change log fragment files in their pull requests <adding change notes with your prs>.These news snippets can link one or more issues or pull requests,
and be of one or more of the following categories:bugfix: A bug fix for something we deemed an improper
undesired behavior that got corrected in the release to match
pre-agreed expectations.feature: A new behavior, public APIs. That sort of stuff.deprecation: A declaration of future API removals and breaking
changes in behavior.breaking: When something public gets removed in a breaking
way. Could be deprecated in an earlier release.doc: Notable updates to the documentation structure or build
process.packaging: Notes for downstreams about unobvious side effects
and tooling. Changes in the test invocation considerations and
runtime assumptions.contrib: Stuff that affects the contributor experience. e.g.
Running tests, building the docs, setting up the development
environment.misc: Changes that are hard to assign to any of the above
categories.
Related issues and pull requests on GitHub: #654.
Contributor-facing changes
-
Started type-checking the project with MyPy against a range of
versions instead of just one — Python 3.8–3.12 -- by @webknjaz. -
The project how has a
.git-blame-ignore-revsletting GitHub know
which auto-formatting revisions to ignore. It is also possible to
integrate it locally, if one wants to do so.-- by @webknjaz
-
The project adopted the
autopep8tool to assist with automatic
code formatting. It is chosen overblackbecause it is less
intrusive which is important to the maintainer as it promotes
inclusivity.autopep8is integrated into thepre-commitcheck
runner and is configured to only correct8violations, avoiding
changes to compliant snippets.-- by @webknjaz
Related commits on GitHub:
65ba7e69. -
The continuous integration and pull request merges have been set up
to only merge pull requests through merge queues -- by @webknjaz.Related commits on GitHub:
a7149e0c. -
Documented the upgraded :std
release process <contributing/release_guide>-- by @webknjaz.Related commits on GitHub:
df0d1a08. -
The changelog management is now implemented through the
:stdTowncrier <towncrier:index>tool -- by @webknjaz.The contributors are now expected to :std
include change log fragment files in their pull requests <adding change notes with your prs>.These news snippets can link one or more issues or pull requests,
and be of one or more of the following categories:bugfix: A bug fix for something we deemed an improper
undesired behavior that got corrected in the release to match
pre-agreed expectations.feature: A new behavior, public APIs. That sort of stuff.deprecation: A declaration of future API removals and breaking
changes in behavior.breaking: When something public gets removed in a breaking
way. Could be deprecated in an earlier release.doc: Notable updates to the documentation structure or build
process.packaging: Notes for downstreams about unobvious side effects
and tooling. Changes in the test invocation considerations and
runtime assumptions.contrib: Stuff that affects the contributor experience. e.g.
Running tests, building the docs, setting up the development
environment.misc: Changes that are hard to assign to any of the above
categories.
Related issues and pull requests on GitHub: #654.
v10.0.1rc0
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/10.0.1rc0
🚧 v10.0.1rc0 is marked as a pre-release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8725529391
v10.0.1rc0
(2024-04-17)
Bug fixes
-
Fixed a flaw where internally unhandled exceptions could crash the
worker threads and eventually starve the server of its processing
resources. It is no longer and issue and the unhandled errors are
now logged and suppressed except for a few expected exceptions that
are used for normal interruption requests.-- by @cameronbrunner and @webknjaz
Related issues and pull requests on GitHub: #310, #346, #354,
#358, #365, #375, #599, #641, #649. -
Fixed compatibility with Python 3.8 in the built-in TLS adapter that
relies on :pypython:ssl.Modern Python versions communicate specialized exceptions
:pyssl.SSLEOFErrorand :pyssl.SSLZeroReturnErrorwhere the older
versions errored out in a very generic way.
Packaging updates and notes for downstreams
-
Started signing the package distribution artifacts in CI/CD with
Sigstore and uploading them to GitHub Releases -- by @webknjaz. -
The changelog management is now implemented through the
:stdTowncrier <towncrier:index>tool -- by @webknjaz.The contributors are now expected to :std
include change log fragment files in their pull requests <adding change notes with your prs>.These news snippets can link one or more issues or pull requests,
and be of one or more of the following categories:bugfix: A bug fix for something we deemed an improper
undesired behavior that got corrected in the release to match
pre-agreed expectations.feature: A new behavior, public APIs. That sort of stuff.deprecation: A declaration of future API removals and breaking
changes in behavior.breaking: When something public gets removed in a breaking
way. Could be deprecated in an earlier release.doc: Notable updates to the documentation structure or build
process.packaging: Notes for downstreams about unobvious side effects
and tooling. Changes in the test invocation considerations and
runtime assumptions.contrib: Stuff that affects the contributor experience. e.g.
Running tests, building the docs, setting up the development
environment.misc: Changes that are hard to assign to any of the above
categories.
Related issues and pull requests on GitHub: #654.
Contributor-facing changes
-
Started type-checking the project with MyPy against a range of
versions instead of just one — Python 3.8–3.12 -- by @webknjaz. -
The project how has a
.git-blame-ignore-revsletting GitHub know
which auto-formatting revisions to ignore. It is also possible to
integrate it locally, if one wants to do so.-- by @webknjaz
-
The project adopted the
autopep8tool to assist with automatic
code formatting. It is chosen overblackbecause it is less
intrusive which is important to the maintainer as it promotes
inclusivity.autopep8is integrated into thepre-commitcheck
runner and is configured to only correct8violations, avoiding
changes to compliant snippets.-- by @webknjaz
Related commits on GitHub:
65ba7e69. -
The continuous integration and pull request merges have been set up
to only merge pull requests through merge queues -- by @webknjaz.Related commits on GitHub:
a7149e0c. -
Documented the upgraded :std
release process <contributing/release_guide>-- by @webknjaz.Related commits on GitHub:
df0d1a08. -
The changelog management is now implemented through the
:stdTowncrier <towncrier:index>tool -- by @webknjaz.The contributors are now expected to :std
include change log fragment files in their pull requests <adding change notes with your prs>.These news snippets can link one or more issues or pull requests,
and be of one or more of the following categories:bugfix: A bug fix for something we deemed an improper
undesired behavior that got corrected in the release to match
pre-agreed expectations.feature: A new behavior, public APIs. That sort of stuff.deprecation: A declaration of future API removals and breaking
changes in behavior.breaking: When something public gets removed in a breaking
way. Could be deprecated in an earlier release.doc: Notable updates to the documentation structure or build
process.packaging: Notes for downstreams about unobvious side effects
and tooling. Changes in the test invocation considerations and
runtime assumptions.contrib: Stuff that affects the contributor experience. e.g.
Running tests, building the docs, setting up the development
environment.misc: Changes that are hard to assign to any of the above
categories.
Related issues and pull requests on GitHub: #654.
v11.0.0rc0
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/11.0.0rc0
🚧 v11.0.0rc0 is marked as a pre-release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8713203309
v11.0.0rc0
(2024-04-16)
Bug fixes
-
Fixed a flaw where internally unhandled exceptions could crash the
worker threads and eventually starve the server of its processing
resources. It is no longer and issue and the unhandled errors are
now logged and suppressed except for a few expected exceptions that
are used for normal interruption requests.-- by @cameronbrunner and @webknjaz
Related issues and pull requests on GitHub: #310, #346, #354,
#358, #365, #375, #599, #641, #649. -
Fixed compatibility with Python 3.8 in the built-in TLS adapter that
relies on :pypython:ssl.Modern Python versions communicate specialized exceptions
:pyssl.SSLEOFErrorand :pyssl.SSLZeroReturnErrorwhere the older
versions errored out in a very generic way.
Removals and backward incompatible breaking changes
-
Cheroot dropped support for Python 3.6 and 3.7. It now requires
Python 3.8 or later.-- by @jaraco
Packaging updates and notes for downstreams
-
Started signing the package distribution artifacts in CI/CD with
Sigstore and uploading them to GitHub Releases -- by @webknjaz. -
The minimum version of the
setuptools-scmbuild dependency has
been set to 7. The Git archives are now produced by it natively,
instead of relying on a third party plugin which is no longer being
used.-- by @serhii73
Related issues and pull requests on GitHub: #628.
-
The changelog management is now implemented through the
:stdTowncrier <towncrier:index>tool -- by @webknjaz.The contributors are now expected to :std
include change log fragment files in their pull requests <adding change notes with your prs>.These news snippets can link one or more issues or pull requests,
and be of one or more of the following categories:bugfix: A bug fix for something we deemed an improper
undesired behavior that got corrected in the release to match
pre-agreed expectations.feature: A new behavior, public APIs. That sort of stuff.deprecation: A declaration of future API removals and breaking
changes in behavior.breaking: When something public gets removed in a breaking
way. Could be deprecated in an earlier release.doc: Notable updates to the documentation structure or build
process.packaging: Notes for downstreams about unobvious side effects
and tooling. Changes in the test invocation considerations and
runtime assumptions.contrib: Stuff that affects the contributor experience. e.g.
Running tests, building the docs, setting up the development
environment.misc: Changes that are hard to assign to any of the above
categories.
Related issues and pull requests on GitHub: #654.
Contributor-facing changes
-
Started type-checking the project with MyPy against a range of
versions instead of just one — Python 3.8–3.12 -- by @webknjaz. -
The project how has a
.git-blame-ignore-revsletting GitHub know
which auto-formatting revisions to ignore. It is also possible to
integrate it locally, if one wants to do so.-- by @webknjaz
-
The project adopted the
autopep8tool to assist with automatic
code formatting. It is chosen overblackbecause it is less
intrusive which is important to the maintainer as it promotes
inclusivity.autopep8is integrated into thepre-commitcheck
runner and is configured to only correct8violations, avoiding
changes to compliant snippets.-- by @webknjaz
Related commits on GitHub:
65ba7e69. -
The continuous integration and pull request merges have been set up
to only merge pull requests through merge queues -- by @webknjaz.Related commits on GitHub:
a7149e0c. -
Documented the upgraded :std
release process <contributing/release_guide>-- by @webknjaz.Related commits on GitHub:
df0d1a08. -
The changelog management is now implemented through the
:stdTowncrier <towncrier:index>tool -- by @webknjaz.The contributors are now expected to :std
include change log fragment files in their pull requests <adding change notes with your prs>.These news snippets can link one or more issues or pull requests,
and be of one or more of the following categories:bugfix: A bug fix for something we deemed an improper
undesired behavior that got corrected in the release to match
pre-agreed expectations.feature: A new behavior, public APIs. That sort of stuff.deprecation: A declaration of future API removals and breaking
changes in behavior.breaking: When something public gets removed in a breaking
way. Could be deprecated in an earlier release.doc: Notable updates to the documentation structure or build
process.packaging: Notes for downstreams about unobvious side effects
and tooling. Changes in the test invocation considerations and
runtime assumptions.contrib: Stuff that affects the contributor experience. e.g.
Running tests, building the docs, setting up the development
environment.misc: Changes that are hard to assign to any of the above
categories.
Related issues and pull requests on GitHub: #654.
v11.0.0b3
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/11.0.0b3
🚧 v11.0.0b3 is marked as a pre-release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8623097213
v11.0.0b3
(2024-04-09)
Removals and backward incompatible breaking changes
-
Cheroot requires Python 3.8 or later.
Related issues and pull requests on GitHub: #565.
v11.0.0b1
📝 Release notes
📦 PyPI page: https://pypi.org/project/cheroot/11.0.0b1
🚧 v11.0.0b1 is marked as a pre-release.
🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8615981862
v11.0.0b1
(2024-04-09)
Removals and backward incompatible breaking changes
-
Cheroot requires Python 3.8 or later.
Related issues and pull requests on GitHub: #565.