Releases: aio-libs/multidict
6.0.5
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 age, 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.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]
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 bitwise
and
, bitwiseor
,sub
, andxor
operators in themultidict/_multidict_base.py
module. It also coversNotImplemented
and "Iterable
-but-not-Set
" cases there.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.
Release timing context:
6.0.4
6.0.3
v6.0.2
v6.0.1
Bugfixes
-
Restored back
MultiDict
,CIMultiDict
,MultiDictProxy
, and
CIMutiDictProxy
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 of
MultiDict
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))
v6.0.0
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
- Fixed type annotations for keys of multidict mapping classes. ((#644))
- Support Multidict[int] for pure-python version.
__class_getitem__
is already provided by C Extension, making it work with the pure-extension too. ((#678))
Deprecations and Removals
- Dropped Python 3.6 support ((#680))
Misc
- (#659)
v5.2.0a25
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)_)
v5.2.0
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)_)
multidict 5.2.0a15
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)_)
multidict 5.1.0 release
Changes
Features
- Support
GenericAliases
(MultiDict[str]
) for Python 3.9+
#553 <https://github.com/aio-libs/multidict/issues/553>
_
Bugfixes
- Synchronize the declared supported Python versions in
setup.py
with actually supported and tested ones.
#552 <https://github.com/aio-libs/multidict/issues/552>
_