Releases: pallets/werkzeug
3.1.3
This is the Werkzeug 3.1.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.
PyPI: https://pypi.org/project/Werkzeug/3.1.3/
Changes: https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3
Milestone: https://github.com/pallets/werkzeug/milestone/41?closed=1
- Initial data passed to
MultiDictand similar interfaces only acceptslist,tuple, orsetwhen passing multiple values. It had been changed to accept anyCollection, but this matched types that should be treated as single values, such asbytes. #2994 - When the
Hostheader is not set andRequest.hostfalls back to the WSGISERVER_NAMEvalue, if that value is an IPv6 address it is wrapped in[]to match theHostheader. #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.
PyPI: https://pypi.org/project/Werkzeug/3.1.2/
Changes: https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2
Milestone: https://github.com/pallets/werkzeug/milestone/40?closed=1
3.1.1
This is the Werkzeug 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.
PyPI: https://pypi.org/project/Werkzeug/3.1.1/
Changes: https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-1
Milestone: https://github.com/pallets/werkzeug/milestone/38?closed=1
- 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.
PyPI: https://pypi.org/project/Werkzeug/3.1.0/
Changes: https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-0
Milestone: https://github.com/pallets/werkzeug/milestone/34?closed=1
- Drop support for Python 3.8. #2966
- Remove previously deprecated code. #2967
Request.max_form_memory_sizedefaults to 500kB instead of unlimited. Non-file form fields over this size will cause aRequestEntityTooLargeerror. #2964OrderedMultiDictandImmutableOrderedMultiDictare deprecated. UseMultiDictandImmutableMultiDictinstead. #2968- Behavior of properties on
request.cache_controlandresponse.cache_controlhas been significantly adjusted.- Dict values are always
str | None. Setting properties will convert the value to a string. Setting a property toFalseis equivalent to setting it toNone. Getting typed properties will returnNoneif conversion raisesValueError, rather than the string. #2980 max_ageisNoneif present without a value, rather than-1. #2980no_cacheis a boolean for requests, it isTrueinstead of"*"when present. It remains a string for responses. #2980max_staleisTrueif present without a value, rather than"*". #2980no_transformis a boolean. Previously it was mistakenly alwaysNone. #2881min_freshisNoneif present without a value, rather than"*". #2881privateisTrueif present without a value, rather than"*". #2980- Added the
must_understandproperty. #2881 - Added the
stale_while_revalidate, andstale_if_errorproperties. #2948 - Type annotations more accurately reflect the values. #2881
- Dict values are always
- Support Cookie CHIPS (Partitioned Cookies). #2797
- Add 421
MisdirectedRequestHTTP exception. #2850 - Increase default work factor for PBKDF2 to 1,000,000 iterations. #2969
- Inline annotations for
datastructures, removing stub files. #2970 MultiDict.getlistcatchesTypeErrorin addition toValueErrorwhen doing type conversion. #2976- Implement
|and|=operators forMultiDict,Headers, andCallbackDict, and disallow|=on immutable types. #2977
3.0.6
This is the Werkzeug 3.0.6 security fix release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/Werkzeug/3.0.6/
Changes: https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-0-6
- Fix how
max_form_memory_sizeis applied when parsing large non-file fields. GHSA-q34m-jh98-gwm2 safe_joincatches certain paths on Windows that were not caught byntpath.isabson Python < 3.11. GHSA-f9vj-2wh5-fj8j
3.0.5
This is the Werkzeug 3.0.5 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/Werkzeug/3.0.5/
Changes: https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-0-5
Milestone: https://github.com/pallets/werkzeug/milestone/37?closed=1
- The Watchdog reloader ignores file closed no write events. #2945
- Logging works with client addresses containing an IPv6 scope. #2952
- Ignore invalid authorization parameters. #2955
- Improve type annotation fore
SharedDataMiddleware. #2958 - Compatibility with Python 3.13 when generating debugger pin and the current UID does not have an associated name. #2957
3.0.4
This is the Werkzeug 3.0.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/Werkzeug/3.0.4/
Changes: https://werkzeug.palletsprojects.com/en/3.0.x/changes/#version-3-0-4
Milestone: https://github.com/pallets/werkzeug/milestone/36?closed=1
- Restore behavior where parsing
multipart/x-www-form-urlencodeddata with
invalid UTF-8 bytes in the body results in no form data parsed rather than a
413 error. #2930 - Improve
parse_options_headerperformance when parsing unterminated
quoted string values. #2904 - Debugger pin auth is synchronized across threads/processes when tracking
failed entries. #2916 - Dev server handles unexpected
SSLEOFErrordue to issue in Python < 3.13.
#2926 - Debugger pin auth works when the URL already contains a query string.
#2918
3.0.3
This is the Werkzeug 3.0.3 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/Werkzeug/3.0.3/
Changes: https://werkzeug.palletsprojects.com/en/3.0.x/changes/#version-3-0-3
Milestone: https://github.com/pallets/werkzeug/milestone/35?closed=1
- Only allow
localhost,.localhost,127.0.0.1, or the specified hostname when running the dev server, to make debugger requests. Additional hosts can be added by using the debugger middleware directly. The debugger UI makes requests using the full URL rather than only the path. GHSA-2g68-c3qc-8985 - Make reloader more robust when
""is insys.path. #2823 - Better TLS cert format with
adhocdev certs. #2891 - Inform Python < 3.12 how to handle
itms-servicesURIs correctly, rather than using an overly-broad workaround in Werkzeug that caused some redirect URIs to be passed on without encoding. #2828 - Type annotation for
Rule.endpointand other uses ofendpointisAny. #2836
3.0.2
This is a fix release for the 3.0.x feature branch.
2.3.8
This is a security release for the 2.3.x feature branch.