Skip to content

Releases: cherrypy/cheroot

v11.0.0

21 Sep 13:57

Choose a tag to compare

📝 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-scm build 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
    621 declaration -- 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 in setup.cfg and setup.py have 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-forked plugin -- 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 workflow reusable-tox.yml from tox-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

21 Sep 13:14

Choose a tag to compare

v11.0.0rc1 Pre-release
Pre-release

📝 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-scm build 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
    621 declaration -- 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 in setup.cfg and setup.py have 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-forked plugin -- 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 workflow reusable-tox.yml from tox-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

22 Apr 15:22

Choose a tag to compare

📝 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.SSLEOFError and :pyssl.SSLZeroReturnError where the older
    versions errored out in a very generic way.

    -- by @toppk and @webknjaz

    Related issues and pull requests on GitHub: #517, #518.

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.

    Related commits on GitHub:
    27a3c944,
    c45f184e.

  • The changelog management is now implemented through the
    :stdTowncrier <towncrier:index> tool -- by @webknjaz.

    The contributors are now expected to :stdinclude 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.

    Related commits on GitHub:
    4fa1e663,
    676edc4e,
    be9dbc41.

  • The project how has a .git-blame-ignore-revs letting GitHub know
    which auto-formatting revisions to ignore. It is also possible to
    integrate it locally, if one wants to do so.

    -- by @webknjaz

    Related commits on GitHub:
    5980a3fb,
    f8a1cc4d.

  • The project adopted the autopep8 tool to assist with automatic
    code formatting. It is chosen over black because it is less
    intrusive which is important to the maintainer as it promotes
    inclusivity. autopep8 is integrated into the pre-commit check
    runner and is configured to only correct 8 violations, 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 :stdrelease 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 :stdinclude 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

17 Apr 17:04

Choose a tag to compare

v10.0.1rc0 Pre-release
Pre-release

📝 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.SSLEOFError and :pyssl.SSLZeroReturnError where the older
    versions errored out in a very generic way.

    -- by @toppk and @webknjaz

    Related issues and pull requests on GitHub: #517, #518.

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.

    Related commits on GitHub:
    27a3c944,
    c45f184e.

  • The changelog management is now implemented through the
    :stdTowncrier <towncrier:index> tool -- by @webknjaz.

    The contributors are now expected to :stdinclude 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.

    Related commits on GitHub:
    4fa1e663,
    676edc4e,
    be9dbc41.

  • The project how has a .git-blame-ignore-revs letting GitHub know
    which auto-formatting revisions to ignore. It is also possible to
    integrate it locally, if one wants to do so.

    -- by @webknjaz

    Related commits on GitHub:
    5980a3fb,
    f8a1cc4d.

  • The project adopted the autopep8 tool to assist with automatic
    code formatting. It is chosen over black because it is less
    intrusive which is important to the maintainer as it promotes
    inclusivity. autopep8 is integrated into the pre-commit check
    runner and is configured to only correct 8 violations, 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 :stdrelease 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 :stdinclude 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

16 Apr 22:20

Choose a tag to compare

v11.0.0rc0 Pre-release
Pre-release

📝 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.SSLEOFError and :pyssl.SSLZeroReturnError where the older
    versions errored out in a very generic way.

    -- by @toppk and @webknjaz

    Related issues and pull requests on GitHub: #517, #518.

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.

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.

    Related commits on GitHub:
    27a3c944,
    c45f184e.

  • The minimum version of the setuptools-scm build 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 :stdinclude 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.

    Related commits on GitHub:
    4fa1e663,
    676edc4e,
    be9dbc41.

  • The project how has a .git-blame-ignore-revs letting GitHub know
    which auto-formatting revisions to ignore. It is also possible to
    integrate it locally, if one wants to do so.

    -- by @webknjaz

    Related commits on GitHub:
    5980a3fb,
    f8a1cc4d.

  • The project adopted the autopep8 tool to assist with automatic
    code formatting. It is chosen over black because it is less
    intrusive which is important to the maintainer as it promotes
    inclusivity. autopep8 is integrated into the pre-commit check
    runner and is configured to only correct 8 violations, 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 :stdrelease 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 :stdinclude 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

09 Apr 23:33

Choose a tag to compare

v11.0.0b3 Pre-release
Pre-release

📝 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

09 Apr 14:36

Choose a tag to compare

v11.0.0b1 Pre-release
Pre-release

📝 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.


v11.0.0b0

08 Apr 23:45
980cb39

Choose a tag to compare

v11.0.0b0 Pre-release
Pre-release

📝 Release notes

📦 PyPI page: https://pypi.org/project/cheroot/11.0.0b0

🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8608000378

v11.0.0b0

(2024-04-08)

Removals and backward incompatible breaking changes

  • Cheroot requires Python 3.8 or later.

    Related issues and pull requests on GitHub: #565.


v10.0.0

20 May 15:35
2b3b3eb

Choose a tag to compare

Release v10.0.0

This release is published to https://pypi.org/project/cheroot/10.0.0.

This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/5032474797.

v9.0.0

23 Nov 03:13
v9.0.0
ca63e92

Choose a tag to compare

Significant Changes

  • #252 via #339 and #510: Cheroot now requires Python 3.6 or later. Python 3.5 and Python 2.7 are still supported by the maint/8.x branch and stabilizing bugfixes will be accepted to that branch -- by @jaraco

Bugfixes

  • Set worker thread names as str by @jarus in #503

What Else Changed

Internal Changes

  • Configured stubtest hook for stub testing by @kasium in #415
  • Started running Python commands in tox in isolated and strict mode by @webknjaz in #562

New Contributors

Full Diff: v8.6.0...v9.0.0