Bug fixes
-
Fixed
in
checks throwing an exception instead of returning :data:False
when testing non-strings.Related issues and pull requests on GitHub:
#1045. -
Fix a leak when the last accessed module in
PyInit__multidict
init is not released.Related issues and pull requests on GitHub:
#1061.
Features
-
Implemented support for the free-threaded build of CPython 3.13 -- by :user:
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 :user:
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 anNLnet
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 :user:skinnyBat
.Related issues and pull requests on GitHub:
#928.
Features
-
Added support for Python 3.13 -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1002.
Removals and backward incompatible breaking changes
-
Removed Python 3.7 support -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#997.
Contributor-facing changes
-
Added tests to have full code coverage of the
multidict._multidict_base._viewbaseset_richcmp()
function
-- by :user:skinnyBat
.Related issues and pull requests on GitHub:
#928. -
The deprecated <https://hynek.me/til/set-output-deprecation-github-actions/>
_
::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 <https://github.com/codecov/codecov-action>
_
has been temporarily downgraded tov3
in the GitHub Actions CI/CD workflow definitions
in order to fix uploading coverage to
Codecov <https://app.codecov.io/gh/aio-libs/multidict>
.
Seethis issue <https://github.com/codecov/codecov-action/issues/1252>
for more details.Related issues and pull requests on GitHub:
#941. -
In the GitHub Actions CI/CD workflow definition,
theGet pip cache dir
step has been fixed for
Windows runners by addingshell: bash
.
Seeactions/runner#2224 <https://github.com/actions/runner/issues/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 :user:iemelyanov
.Related issues and pull requests on GitHub:
#862, #864, #868, #898. -
Reverted to using the public argument parsing API
:c:func:PyArg_ParseTupleAndKeywords
under Python 3.12
-- by :user:charles-dyfis-net
and :user: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 :py:meth:MultiDict.getall() <multidict.MultiDict.getall>
discovered by :user:jonaslb
and :user: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 <https://github.com/aio-libs/multidict/blob/master/CHANGES/README.rst>
_ page,
a link to theTowncrier 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 :user:webknjaz
.This change helps
setuptools
understand that C-headers are
not to be installed under :file:lib/python3.{x}/site-packages/
.Related commits on GitHub:
:commit:31e1170
. -
Started publishing pure-python wheels to be installed
as a fallback -- by :user:webknjaz
.Related commits on GitHub:
:commit: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 in :file:pyproject.toml
-- by :user:Jackenmen
.Related issues and pull requests on GitHub:
#802. -
Declared Python 3.12 supported officially in the
distribution package metadata -- by :user: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 :user:
webknjaz
.Related issues and pull requests on GitHub:
#98, #837, #915. -
Updated the test pins lockfile used in the
cibuildwheel
test stage -- by :user: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:.. code-block:: console
warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
-- by :user:
hoodmane
Related issues and pull requests on GitHub:
#828. -
An experimental Python 3.13 job now runs in the CI
-- :user:webknjaz
.Related issues and pull requests on GitHub:
#920. -
Added test coverage for the :ref:
and <python:and>
, :ref:or <python:or>
, :py:obj:sub <python:object.__sub__>
, and
:py:obj:xor <python:object.__xor__>
operators in the
:file:multidict/_multidict_base.py
module. It also covers
:py:data:NotImplemented
and
":py:class:~typing.Iterable
-but-not-:py:class:~typing.Set
"
cases there.-- by :user:
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
- Declared the official support for Python 3.11 — by :user:
mlegner
. (#872)
6.0.2 (2022-01-24)
Bugfixes
6.0.1 (2022-01-23)
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)
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
- 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
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
- Provided wheels for
aarch64
,i686
,ppc64le
,s390x
architectures on Linux
as well asx86_64
.
#500 - Provided wheels for Python 3.9.
#534
Removal
- Dropped Python 3.5 support; Python 3.6 is the minimal supported Python version.