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 :c
PyArg_ParseTupleAndKeywords
under Python 3.12 -- bycharles-dyfis-net
andwebknjaz
.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 :pyMultiDict.getall() <multidict.MultiDict.getall>
discovered byjonaslb
andhroncok
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
.
On the Contributing docs page, a link to the
Towncrier philosophy
has been fixed.Related issues and pull requests on GitHub:
911
.
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
-- byJackenmen
.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
.
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 -- byhoodmane
.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 <python:and>
,or <python:or>
, :pysub <python:object.__sub__>
, and :pyxor <python:object.__xor__>
operators in themultidict/_multidict_base.py
module. It also covers :pyNotImplemented
and ":py~typing.Iterable
-but-not-:py~typing.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
.
- 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
)
- Declared the official support for Python 3.11 — by
mlegner
. (872
)
- Revert
644
, restore type annotations to as-of 5.2.0 version. (688
)
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
)
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
)
- 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
)
- Dropped Python 3.6 support (
680
)
659
- 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
)
- 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
)
- Supported
GenericAliases
(MultiDict[str]
) for Python 3.9+553
- Synchronized the declared supported Python versions in
setup.py
with actually supported and tested ones.552
- Provided x86 Windows wheels
550
- Provided wheels for
aarch64
,i686
,ppc64le
,s390x
architectures on Linux as well asx86_64
.500
- Provided wheels for Python 3.9.
534
- Dropped Python 3.5 support; Python 3.6 is the minimal supported Python version.
503