Changelog¶
To be included in v6.2.0 (if present)¶
Released versions¶
6.2.0¶
(2025-03-17)
Bug fixes¶
Features¶
Implemented support for the free-threaded build of CPython 3.13 – by @lysnikolaou.
Related issues and pull requests on GitHub: #1015.
Packaging updates and notes for downstreams¶
Started publishing wheels made for the free-threaded build of CPython 3.13 – by @lysnikolaou.
Related issues and pull requests on GitHub: #1015.
Miscellaneous internal changes¶
Used stricter typing across the code base, resulting in improved typing accuracy across multidict classes. Funded by an
NLnet
grant.Related issues and pull requests on GitHub: #1046.
6.1.0 (2024-09-09)¶
Bug fixes¶
Covered the unreachable code path in
multidict._multidict_base._abc_itemsview_register()
with typing – by @skinnyBat.Related issues and pull requests on GitHub: #928.
Features¶
Removals and backward incompatible breaking changes¶
Contributor-facing changes¶
Added tests to have full code coverage of the
multidict._multidict_base._viewbaseset_richcmp()
function – by @skinnyBat.Related issues and pull requests on GitHub: #928.
The deprecated
::set-output
workflow command has been replaced by the$GITHUB_OUTPUT
environment variable in the GitHub Actions CI/CD workflow definition.Related issues and pull requests on GitHub: #940.
codecov-action has been temporarily downgraded to
v3
in the GitHub Actions CI/CD workflow definitions in order to fix uploading coverage to Codecov. See this issue for more details.Related issues and pull requests on GitHub: #941.
In the GitHub Actions CI/CD workflow definition, the
Get pip cache dir
step has been fixed for Windows runners by addingshell: bash
. See actions/runner#2224 for more details.Related issues and pull requests on GitHub: #942.
Interpolation of the
pip
cache keys has been fixed by adding missing$
syntax in the GitHub Actions CI/CD workflow definition.Related issues and pull requests on GitHub: #943.
6.0.5 (2024-02-01)¶
Bug fixes¶
Upgraded the C-API macros that have been deprecated in Python 3.9 and later removed in 3.13 – by @iemelyanov.
Related issues and pull requests on GitHub: #862, #864, #868, #898.
Reverted to using the public argument parsing API
PyArg_ParseTupleAndKeywords()
under Python 3.12 – by @charles-dyfis-net and @webknjaz.The effect is that this change prevents build failures with clang 16.9.6 and gcc-14 reported in #926. It also fixes a segmentation fault crash caused by passing keyword arguments to
MultiDict.getall()
discovered by @jonaslb and @hroncok while examining the problem.Related issues and pull requests on GitHub: #862, #909, #926, #929.
Fixed a
SystemError: null argument to internal routine
error on aMultiDict.items().isdisjoint()
call when using C Extensions.Related issues and pull requests on GitHub: #927.
Improved documentation¶
On the Contributing docs page, a link to the
Towncrier philosophy
has been fixed.Related issues and pull requests on GitHub: #911.
Packaging updates and notes for downstreams¶
Stopped marking all files as installable package data – by @webknjaz.
This change helps
setuptools
understand that C-headers are not to be installed underlib/python3.x/site-packages/
.Related commits on GitHub: 31e1170.
Started publishing pure-python wheels to be installed as a fallback – by @webknjaz.
Related commits on GitHub: 7ba0e72.
Switched from
setuptools
’ legacy backend (setuptools.build_meta:__legacy__
) to the modern one (setuptools.build_meta
) by actually specifying the the[build-system] build-backend
option inpyproject.toml
– by @Jackenmen.Related issues and pull requests on GitHub: #802.
Declared Python 3.12 supported officially in the distribution package metadata – by @hugovk.
Related issues and pull requests on GitHub: #877.
Contributor-facing changes¶
The test framework has been refactored. In the previous state, the circular imports reported in #837 caused the C-extension tests to be skipped.
Now, there is a set of the
pytest
fixtures that is set up in a parametrized manner allowing to have a consistent way of accessing mirroredmultidict
implementations across all the tests.This change also implemented a pair of CLI flags (
--c-extensions
/--no-c-extensions
) that allow to explicitly request deselecting the tests running against the C-extension.– by @webknjaz.
Related issues and pull requests on GitHub: #98, #837, #915.
Updated the test pins lockfile used in the
cibuildwheel
test stage – by @hoodmane.Related issues and pull requests on GitHub: #827.
Added an explicit
void
for arguments in C-function signatures which addresses the following compiler warning:warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
– by @hoodmane
Related issues and pull requests on GitHub: #828.
An experimental Python 3.13 job now runs in the CI – @webknjaz.
Related issues and pull requests on GitHub: #920.
Added test coverage for the and, or,
sub
, andxor
operators in themultidict/_multidict_base.py
module. It also coversNotImplemented
and “Iterable
-but-not-Set
” cases there.– by @a5r0n
Related issues and pull requests on GitHub: #936.
The version of pytest is now capped below 8, when running MyPy against Python 3.7. This pytest release dropped support for said runtime.
Related issues and pull requests on GitHub: #937.
6.0.4 (2022-12-24)¶
Bugfixes¶
Fixed a type annotations regression introduced in v6.0.2 under Python versions <3.10. It was caused by importing certain types only available in newer versions. (#798)
6.0.3 (2022-12-03)¶
Features¶
6.0.2 (2022-01-24)¶
Bugfixes¶
6.0.1 (2022-01-23)¶
Bugfixes¶
Restored back
MultiDict
,CIMultiDict
,MultiDictProxy
, andCIMutiDictProxy
generic type arguments; they are parameterized by value type, but the key type is fixed by container class.MultiDict[int]
meansMutableMultiMapping[str, int]
. The key type ofMultiDict
is alwaysstr
, while all str-like keys are accepted by API and converted tostr
internally.The same is true for
CIMultiDict[int]
which meansMutableMultiMapping[istr, int]
. str-like keys are accepted but converted toistr
internally. (#682)
6.0.0 (2022-01-22)¶
Features¶
Use
METH_FASTCALL
where it makes sense.MultiDict.add()
is 2.2 times faster now,CIMultiDict.add()
is 1.5 times faster. The same boost is applied toget*()
,setdefault()
, andpop*()
methods. (#681)
Bugfixes¶
Deprecations and Removals¶
Dropped Python 3.6 support (#680)
Misc¶
5.2.0 (2021-10-03)¶
Features¶
Added support Python 3.10
Started shipping platform-specific wheels with the
musl
tag targeting typical Alpine Linux runtimes.Started shipping platform-specific arm64 wheels for Apple Silicon. (#629)
Bugfixes¶
Fixed pure-python implementation that used to raise “Dictionary changed during iteration” error when iterated view (
.keys()
,.values()
or.items()
) was created before the dictionary’s content change. (#620)
5.1.0 (2020-12-03)¶
Features¶
Supported
GenericAliases
(MultiDict[str]
) for Python 3.9+ #553
Bugfixes¶
Synchronized the declared supported Python versions in
setup.py
with actually supported and tested ones. #552
5.0.1 (2020-11-14)¶
Bugfixes¶
Provided x86 Windows wheels #550
5.0.0 (2020-10-12)¶
Features¶
Removal¶
Dropped Python 3.5 support; Python 3.6 is the minimal supported Python version.