🚀 charset-normalizer is raising awareness around HTTP/2, and HTTP/3!
Did you know that Internet Explorer 11 shipped with an optional HTTP/2 support back in 2013? also libcurl did ship it in 2014[...]
All of this while our community is still struggling to make a firm advancement in HTTP clients. Now, many of you use Requests
as the defacto http client, now, and for many years now, Requests has been frozen. Being left in a vegetative state and not evolving,
this blocked millions of developers from using more advanced features.
We promptly invite Python developers to look at the drop-in replacement for Requests, namely Niquests.
It leverage charset-normalizer in a better way! Check it out, you will be positively surprised! Don't wait another decade.
We are thankful to @​microsoft and involved parties for funding our work through the Microsoft FOSS Fund program.
This is the MarkupSafe 3.0.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. The 3.0.x branch is now the supported fix branch, the 2.1.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.
Update signatures for Markup methods to match str signatures. Use positional-only arguments. #400
Some str methods on Markup no longer escape their argument: strip, lstrip, rstrip, removeprefix, removesuffix, partition, and rpartition; replace only escapes its new argument. These methods are conceptually linked to search methods such as in, find, and index, which already do not escape their argument. #401
The __version__ attribute is deprecated. Use feature detection, or importlib.metadata.version("markupsafe"), instead. #402
Fix compatibility when __str__ returns a str subclass. :issue:472
Build requires setuptools >= 70.1. :issue:475
Version 3.0.1
Released 2024-10-08
Address compiler warnings that became errors in GCC 14. :issue:466
Fix compatibility with proxy objects. :issue:467
Version 3.0.0
Released 2024-10-07
Support Python 3.13 and its experimental free-threaded build. :pr:461
Drop support for Python 3.7 and 3.8.
Use modern packaging metadata with pyproject.toml instead of setup.cfg.
:pr:348
Change distutils imports to setuptools. :pr:399
Use deferred evaluation of annotations. :pr:400
Update signatures for Markup methods to match str signatures. Use
positional-only arguments. :pr:400
Some str methods on Markup no longer escape their argument:
strip, lstrip, rstrip, removeprefix, removesuffix,
partition, and rpartition; replace only escapes its new
argument. These methods are conceptually linked to search methods such as
in, find, and index, which already do not escape their argument.
:issue:401
The __version__ attribute is deprecated. Use feature detection, or
importlib.metadata.version("markupsafe"), instead. :pr:402
* PEP 639: Implement License-Expression and License-File (:issue:`828`)
* Use ``!r`` formatter for error messages with filenames (:issue:`844`)
* Add support for PEP 730 iOS tags (:issue:`832`)
* Fix prerelease detection for ``>`` and ``<`` (:issue:`794`)
* Fix uninformative error message (:issue:`830`)
* Refactor ``canonicalize_version`` (:issue:`793`)
* Patch python_full_version unconditionally (:issue:`825`)
* Fix doc for ``canonicalize_version`` to mention ``strip_trailing_zero`` and a typo in a docstring (:issue:`801`)
* Fix typo in Version ``__str__`` (:issue:`817`)
* Support creating a ``SpecifierSet`` from an iterable of ``Specifier`` objects (:issue:`775`)
Discontinued support for Python 3.6, 3.7, and 3.8. Adopted new Python features from
Python versions 3.7-3.9:
Updated type annotations to use built-in container types instead of names
imported from the typing module (e.g., list[str] vs List[str]).
Reworked portions of the packrat cache to leverage insertion-preserving ordering
in dicts (including removal of uses of OrderedDict).
Changed pdb.set_trace() call in ParserElement.set_break() to breakpoint().
Converted typing.NamedTuple to dataclasses.dataclass in railroad diagramming
code.
Added from __future__ import annotations to clean up some type annotations.
(with assistance from ISyncWithFoo, issue #535, thanks for the help!)
POSSIBLE BREAKING CHANGES
The following bugfixes may result in subtle changes in the results returned or
exceptions raised by pyparsing.
Fixed code in ParseElementEnhance subclasses that
replaced detailed exception messages raised in contained expressions with a
less-specific and less-informative generic exception message and location.
If your code has conditional logic based on the message content in raised
ParseExceptions, this bugfix may require changes in your code.
Fixed bug in transform_string() where whitespace
in the input string was not properly preserved in the output string.
If your code uses transform_string, this bugfix may require changes in
your code.
Fixed bug where an IndexError raised in a parse action was
incorrectly handled as an IndexError raised as part of the ParserElement
parsing methods, and reraised as a ParseException. Now an IndexError
that raises inside a parse action will properly propagate out as an IndexError.
(Issue #573, reported by August Karlstedt, thanks!)
If your code raises IndexErrors in parse actions, this bugfix may require
changes in your code.
FIXES AND NEW FEATURES
Added type annotations to remainder of pyparsing package, and added mypy
run to tox.ini, so that type annotations are now run as part of pyparsing's CI.
Addresses Issue #373, raised by Iwan Aucamp, thanks!
Exception message format can now be customized, by overriding
ParseBaseException.format_message:
urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support for 2023. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.
Fixed the default encoding of chunked request bodies to be UTF-8 instead of ISO-8859-1. All other methods of supplying a request body already use UTF-8 starting in urllib3 v2.0. (#3053)
Added support for Python 3.13. ([#3473](https://github.com/urllib3/urllib3/issues/3473) <https://github.com/urllib3/urllib3/issues/3473>__)
Bugfixes
Fixed the default encoding of chunked request bodies to be UTF-8 instead of ISO-8859-1.
All other methods of supplying a request body already use UTF-8 starting in urllib3 v2.0. ([#3053](https://github.com/urllib3/urllib3/issues/3053) <https://github.com/urllib3/urllib3/issues/3053>__)
Fixed ResourceWarning on CONNECT with Python `__)
Adjust tolerance for floating-point comparison on Windows to avoid flakiness in CI ([#3413](https://github.com/urllib3/urllib3/issues/3413) <https://github.com/urllib3/urllib3/issues/3413>__)
Fixed a crash where certain standard library hash functions were absent in restricted environments. ([#3432](https://github.com/urllib3/urllib3/issues/3432) <https://github.com/urllib3/urllib3/issues/3432>__)
Fixed mypy error when adding to HTTPConnection.default_socket_options. ([#3448](https://github.com/urllib3/urllib3/issues/3448) <https://github.com/urllib3/urllib3/issues/3448>__)
HTTP/2 (experimental)
HTTP/2 support is still in early development.
Excluded Transfer-Encoding: chunked from HTTP/2 request body ([#3425](https://github.com/urllib3/urllib3/issues/3425) <https://github.com/urllib3/urllib3/issues/3425>__)
Now only accepting supported h2 major version 4.x.x. ([#3290](https://github.com/urllib3/urllib3/issues/3290) <https://github.com/urllib3/urllib3/issues/3290>__)
Added a probing mechanism for determining whether a given target origin
supports HTTP/2 via ALPN. ([#3301](https://github.com/urllib3/urllib3/issues/3301) <https://github.com/urllib3/urllib3/issues/3301>__)
Add support for sending a request body with HTTP/2 ([#3302](https://github.com/urllib3/urllib3/issues/3302) <https://github.com/urllib3/urllib3/issues/3302>__)
Deprecations and Removals
Note for downstream distributors: the _version.py file has been removed and is now created at build time by hatch-vcs. ([#3412](https://github.com/urllib3/urllib3/issues/3412) <https://github.com/urllib3/urllib3/issues/3412>__)
Drop support for end-of-life PyPy3.8 and PyPy3.9. ([#3475](https://github.com/urllib3/urllib3/issues/3475) <https://github.com/urllib3/urllib3/issues/3475>__)
Initial data passed to MultiDict and similar interfaces only accepts list, tuple, or set when passing multiple values. It had been changed to accept any Collection, but this matched types that should be treated as single values, such as bytes. #2994
When the Host header is not set and Request.host falls back to the WSGI SERVER_NAME value, if that value is an IPv6 address it is wrapped in [] to match the Host header. #2993
3.1.2
This is the Werkzeug 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.
Fix an issue that caused str(Request.headers) to always appear empty. #2985
3.1.0
This is the Werkzeug 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.
Request.max_form_memory_size defaults to 500kB instead of unlimited. Non-file form fields over this size will cause a RequestEntityTooLarge error. #2964
OrderedMultiDict and ImmutableOrderedMultiDict are deprecated. Use MultiDict and ImmutableMultiDict instead. #2968
Behavior of properties on request.cache_control and response.cache_control has been significantly adjusted.
Dict values are always str | None. Setting properties will convert the value to a string. Setting a property to False is equivalent to setting it to None. Getting typed properties will return None if conversion raises ValueError, rather than the string. #2980
max_age is None if present without a value, rather than -1. #2980
no_cache is a boolean for requests, it is True instead of "*" when present. It remains a string for responses. #2980
max_stale is True if present without a value, rather than "*". #2980
no_transform is a boolean. Previously it was mistakenly always None. #2881
min_fresh is None if present without a value, rather than "*". #2881
private is True if present without a value, rather than "*". #2980
Initial data passed to MultiDict and similar interfaces only accepts
list, tuple, or set when passing multiple values. It had been
changed to accept any Collection, but this matched types that should be
treated as single values, such as bytes. :issue:2994
When the Host header is not set and Request.host falls back to the
WSGI SERVER_NAME value, if that value is an IPv6 address it is wrapped
in [] to match the Host header. :issue:2993
Version 3.1.2
Released 2024-11-04
Improve type annotation for TypeConversionDict.get to allow the type
parameter to be a callable. :issue:2988
Headers does not inherit from MutableMapping, as it is does not
exactly match that interface. :issue:2989
Version 3.1.1
Released 2024-11-01
Fix an issue that caused str(Request.headers) to always appear empty.
:issue:2985
Version 3.1.0
Released 2024-10-31
Drop support for Python 3.8. :pr:2966
Remove previously deprecated code. :pr:2967
Request.max_form_memory_size defaults to 500kB instead of unlimited.
Non-file form fields over this size will cause a RequestEntityTooLarge
error. :issue:2964
OrderedMultiDict and ImmutableOrderedMultiDict are deprecated.
Use MultiDict and ImmutableMultiDict instead. :issue:2968
Behavior of properties on request.cache_control and
response.cache_control has been significantly adjusted.
Dict values are always str | None. Setting properties will convert
Bumps the python group with 20 updates in the / directory:
2024.7.4
2024.8.30
3.3.2
3.4.0
1.2.1
1.2.2
3.7
3.10
2.1.5
3.0.2
24.1
24.2
3.1.2
3.2.0
2.2.2
2.2.3
3.0.3
3.1.3
3.1.2
3.2.1
3.19.2
3.20.2
7.6.1
7.6.4
8.3.2
8.3.3
3.2.6
3.3.1
5.0.0
6.0.0
3.15.0
3.16.0
1.7.9
1.7.10
1.11.1
1.13.0
71.1.0.20240806
75.3.0.20241107
22.0.0
23.0.0
Updates
certifi
from 2024.7.4 to 2024.8.30Commits
325c2fd
2024.08.30 (#304)d66bf5f
Bump actions/upload-artifact from 4.3.5 to 4.3.6 (#302)2150f23
Bump actions/upload-artifact from 4.3.4 to 4.3.5 (#301)fc9b771
Bump actions/setup-python from 5.1.0 to 5.1.1 (#300)965b239
Bump actions/download-artifact from 4.1.7 to 4.1.8 (#297)c1f50cc
Bump actions/upload-artifact from 4.3.3 to 4.3.4 (#296)Updates
charset-normalizer
from 3.3.2 to 3.4.0Release notes
Sourced from charset-normalizer's releases.
Changelog
Sourced from charset-normalizer's changelog.
Commits
f3118e3
:wrench: change download/upload artifact version to last working version33e67e8
:wrench: set compile-generator in generator_generic_slsa3 action73dd24c
:wrench: add explicit build deps to setuptools78f1e9b
:wrench: attempt to fix cd.yml *356ae702
:wrench: attempt to fix cd.yml *29720055
:wrench: attempt to fix cd.yml (macos part)1e10d06
Update CHANGELOG.md36c103a
:bookmark: Release 3.4.0 (#545)7658dfc
:arrow_up: Bump github/codeql-action from 3.26.11 to 3.26.12 (#544)ca2535d
:arrow_up: Bump github/codeql-action from 3.26.9 to 3.26.11 (#542)Updates
flask-wtf
from 1.2.1 to 1.2.2Release notes
Sourced from flask-wtf's releases.
Changelog
Sourced from flask-wtf's changelog.
Commits
2e14295
chore: pre-commit autoupdate552b7a7
chore: bump to 1.2.232f1276
chore: install 'build' dependency for the release GHA workflowf712367
chore: dependencies updateb929162
chore: use Flask inspired GHA workflow07049e3
Merge pull request #604 from azmeuk/flask-pre-commit49a1380
chore: pre-commit configuration insipred from Flaskf2bbd1b
Merge pull request #603 from azmeuk/py313d3cd8bf
chore: stop support for python 3.8; start support for python 3.130b2e5e4
Merge pull request #602 from azmeuk/pallets-ecoUpdates
idna
from 3.7 to 3.10Release notes
Sourced from idna's releases.
Changelog
Sourced from idna's changelog.
Commits
729225d
Release v3.103eef168
Merge pull request #194 from kjd/revert-unicode-16ceca619
Revert Unicode 16.0.0 data updatesc43ac75
Merge pull request #191 from kjd/release-3.91b8800a
Release v3.9a1fd168
Merge pull request #190 from kjd/unicode-167732c61
Merge branch 'master' into unicode-164ed183d
Refactor membership test762216b
Format with ruff580ece9
Implement changes to UTS46 algorithmUpdates
markupsafe
from 2.1.5 to 3.0.2Release notes
Sourced from markupsafe's releases.
Changelog
Sourced from markupsafe's changelog.
Commits
28ace20
release version 3.0.26b51fd8
build requires at least setuptools 70.1 (#478)99dda9f
build requires at least setuptools 70.13d8fd8c
fix version1933c4b
fix versione85aff4
relax speedups str check (#477)8cb1691
relax speedups str check4dafb7c
start version 3.1.09c44ecf
update docs build275c769
Merge branch '2.1.x' into 3.0.xUpdates
packaging
from 24.1 to 24.2Release notes
Sourced from packaging's releases.
Changelog
Sourced from packaging's changelog.
Commits
d8e3b31
Bump for release2de393d
Update changelog for release9c66f5c
Remove extraneous quotes in f-strings by using!r
(#848)4dc334c
Upgrade to latest mypy (#853)d1a9f93
Bump the github-actions group with 4 updates (#852)029f415
PEP 639: Implement License-Expression and License-File (#828)6c338a8
Use !r formatter for error messages with filenames. (#844)28e7da7
Add a comment as to whyMetadata.name
isn't normalized (#842)ce0d79c
Mention updating changelog in release process (#841)ac5bdf3
Update the changelog to reflect 24.1 changes (#840)Updates
pyparsing
from 3.1.2 to 3.2.0Changelog
Sourced from pyparsing's changelog.
... (truncated)
Commits
36fc04b
Fix docstring with invalid esc sequencea46066d
Prep for 3.2.0 releasea0c219b
Docs cleanup; added new whats_new_* docs for 3.1 and 3.2d9b1f14
Rewrite _collapse_string_to_ranges to use _GroupConsecutive class instead of ...0d3c2d7
Fix minor internal bug in one_of building regex when all choices are single c...2165ab2
Cleanup ambiguous "contains" vs "in" usage in mongodb_query_expression.py25ddb02
Prep for dev before final release08846ae
Prep for release9ee042b
Remove deprecated utcnow()a2b2f25
Final cleanup on mongodb_query_expression.py and mongodb_query_expression_ste...Updates
urllib3
from 2.2.2 to 2.2.3Release notes
Sourced from urllib3's releases.
Changelog
Sourced from urllib3's changelog.
Commits
2458bfc
Release 2.2.39b25db6
Only attempt to publish for upstreamb9adeef
Drop support for EOL PyPy3.8 and PyPy3.9b1d4649
Add explicit support for Python 3.13cc42860
Bump cryptography from 42.0.4 to 43.0.1 (#3470)3dae2e9
Bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.1 (#3469)1e94feb
Revert "Add TLS settings for HTTP/2 (#3456)" (#3466)aa73abc
Bump actions/setup-python from 5.1.0 to 5.2.0 (#3468)abbfbcb
Add 1.26.20 to changelog and make the publish workflow the same (#3464)d480615
Add TLS settings for HTTP/2 (#3456)Updates
werkzeug
from 3.0.3 to 3.1.3Release notes
Sourced from werkzeug's releases.
... (truncated)
Changelog
Sourced from werkzeug's changelog.
... (truncated)
Commits
6389612
release version 3.1.3ba15683
wrap IPv6 SERVER_NAME in [] (#2997)d99f72d
wrap IPv6 SERVER_NAME in []ea93b54
restrict containers accepted by multi (#2995)598bb1d
restrict containers accepted by multi1a1728e
start version 3.1.34fd7073
release version 3.1.2 (#2992)4764684
release version 3.1.21803db6
Headers is not MutableMapping (#2991)ac87bf8
Headers is not MutableMappingUpdates
wtforms
from 3.1.2 to 3.2.1Release notes
Sourced from wtforms's releases.
Changelog
Sourced from wtforms's changelog.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
Additional details and impacted files
```diff @@ Coverage Diff @@ ## master #1185 +/- ## ======================================= Coverage 76.87% 76.87% ======================================= Files 20 20 Lines 1310 1310 ======================================= Hits 1007 1007 Misses 303 303 ```:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.