Cheroot is the high-performance, pure-Python HTTP server used by CherryPy. Docs -->
📦 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
(2024-04-22)
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.
Started signing the package distribution artifacts in CI/CD with Sigstore and uploading them to GitHub Releases -- by @webknjaz.
Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/27a3c944, https://github.com/cherrypy/cheroot/commit/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.
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: https://github.com/cherrypy/cheroot/commit/4fa1e663, https://github.com/cherrypy/cheroot/commit/676edc4e, https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/5980a3fb, https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/a7149e0c.
Documented the upgraded :stdrelease process <contributing/release_guide>
-- by @webknjaz.
Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/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.
📦 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
(2024-04-17)
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.
Started signing the package distribution artifacts in CI/CD with Sigstore and uploading them to GitHub Releases -- by @webknjaz.
Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/27a3c944, https://github.com/cherrypy/cheroot/commit/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.
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: https://github.com/cherrypy/cheroot/commit/4fa1e663, https://github.com/cherrypy/cheroot/commit/676edc4e, https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/5980a3fb, https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/a7149e0c.
Documented the upgraded :stdrelease process <contributing/release_guide>
-- by @webknjaz.
Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/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.
📦 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
(2024-04-16)
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.
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.
Started signing the package distribution artifacts in CI/CD with Sigstore and uploading them to GitHub Releases -- by @webknjaz.
Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/27a3c944, https://github.com/cherrypy/cheroot/commit/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.
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: https://github.com/cherrypy/cheroot/commit/4fa1e663, https://github.com/cherrypy/cheroot/commit/676edc4e, https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/5980a3fb, https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/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: https://github.com/cherrypy/cheroot/commit/a7149e0c.
Documented the upgraded :stdrelease process <contributing/release_guide>
-- by @webknjaz.
Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/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.
📦 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
(2024-04-09)
Cheroot requires Python 3.8 or later.
Related issues and pull requests on GitHub: #565.
📦 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
(2024-04-09)
Cheroot requires Python 3.8 or later.
Related issues and pull requests on GitHub: #565.
📦 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
(2024-04-08)
Cheroot requires Python 3.8 or later.
Related issues and pull requests on GitHub: #565.
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.
str
by @jarus in https://github.com/cherrypy/cheroot/pull/503
_compat.py
by @kasium in https://github.com/cherrypy/cheroot/pull/491
Full Diff: https://github.com/cherrypy/cheroot/compare/v8.6.0...v9.0.0
#384 via PR #385, PR #406: Exposed type stubs with annotations for public API -- by @kasium.
PR #401 (related to the PR #352 effort): Started reusing the
the expriration_interval
setting in the low-level
select.select()
invocation,
effectively reducing the system
load under the Windows OS when idle, that is noticeable on low-end
hardware systems -- by :user:MichaIng
.
cheroot.connections.ConnectionManager.get_conn
to ensure more stability — by @cyraxjoe.