Covered the unreachable code path in
multidict._multidict_base._abc_itemsview_register()
with typing -- by :user:`skinnyBat`.Related issues and pull requests on GitHub: :issue:`928`.
Added support for Python 3.13 -- by :user:`bdraco`.
Related issues and pull requests on GitHub: :issue:`1002`.
Removed Python 3.7 support -- by :user:`bdraco`.
Related issues and pull requests on GitHub: :issue:`997`.
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: :issue:`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: :issue:`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: :issue:`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: :issue:`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: :issue:`943`.
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: :issue:`862`, :issue:`864`, :issue:`868`, :issue:`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 :issue:`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: :issue:`862`, :issue:`909`, :issue:`926`, :issue:`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: :issue:`927`.
On the Contributing docs page, a link to the
Towncrier philosophy
has been fixed.Related issues and pull requests on GitHub: :issue:`911`.
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: :issue:`802`.
Declared Python 3.12 supported officially in the distribution package metadata -- by :user:`hugovk`.
Related issues and pull requests on GitHub: :issue:`877`.
The test framework has been refactored. In the previous state, the circular imports reported in :issue:`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: :issue:`98`, :issue:`837`, :issue:`915`.
Updated the test pins lockfile used in the
cibuildwheel
test stage -- by :user:`hoodmane`.Related issues and pull requests on GitHub: :issue:`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 :user:`hoodmane`
Related issues and pull requests on GitHub: :issue:`828`.
An experimental Python 3.13 job now runs in the CI -- :user:`webknjaz`.
Related issues and pull requests on GitHub: :issue:`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: :issue:`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: :issue:`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. (:issue:`798`)
- Declared the official support for Python 3.11 — by :user:`mlegner`. (:issue:`872`)
- Revert :issue:`644`, restore type annotations to as-of 5.2.0 version. (:issue:`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. (:issue:`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. (:issue:`681`)
- Fixed type annotations for keys of multidict mapping classes. (:issue:`644`)
- Support Multidict[int] for pure-python version.
__class_getitem__
is already provided by C Extension, making it work with the pure-extension too. (:issue:`678`)
- Dropped Python 3.6 support (:issue:`680`)
- 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. (:issue:`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. (:issue:`620`)
- Supported
GenericAliases
(MultiDict[str]
) for Python 3.9+ :issue:`553`
- Synchronized the declared supported Python versions in
setup.py
with actually supported and tested ones. :issue:`552`
- Provided x86 Windows wheels :issue:`550`
- Provided wheels for
aarch64
,i686
,ppc64le
,s390x
architectures on Linux as well asx86_64
. :issue:`500` - Provided wheels for Python 3.9. :issue:`534`
- Dropped Python 3.5 support; Python 3.6 is the minimal supported Python version.