Multidict

Latest version: v6.0.5

Safety actively analyzes 621269 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 8

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[💰](https://github.com/sponsors/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[💰](https://github.com/sponsors/charles-dyfis-net) and webknjaz[💰](https://github.com/sponsors/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[💰](https://github.com/sponsors/jonaslb)
and hroncok[💰](https://github.com/sponsors/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
a `MultiDict.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)
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[💰](https://github.com/sponsors/webknjaz).


This change helps `setuptools` understand that C-headers are
not to be installed under `lib/python3.{x}/site-packages/`.



*Related commits on GitHub:*
31e1170.


- Started publishing pure-python wheels to be installed as a fallback
-- by webknjaz[💰](https://github.com/sponsors/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 in `pyproject.toml`
-- by Jackenmen[💰](https://github.com/sponsors/Jackenmen).


*Related issues and pull requests on GitHub:*
802.



- Declared Python 3.12 supported officially in the
distribution package metadata -- by hugovk[💰](https://github.com/sponsors/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 mirrored `multidict`
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[💰](https://github.com/sponsors/webknjaz).


*Related issues and pull requests on GitHub:*
98, 837, 915.



- Updated the test pins lockfile used in the
`cibuildwheel` test stage -- by hoodmane[💰](https://github.com/sponsors/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:

console
warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]


-- by hoodmane[💰](https://github.com/sponsors/hoodmane)


*Related issues and pull requests on GitHub:*
828.



- An experimental Python 3.13 job now runs in the CI
-- webknjaz[💰](https://github.com/sponsors/webknjaz).


*Related issues and pull requests on GitHub:*
920.



- Added test coverage for the bitwise `and`, bitwise `or`, `sub`, and `xor`
operators in the `multidict/_multidict_base.py` module. It also covers
`NotImplemented` and "`Iterable`-but-not-`Set`" cases there.

-- by a5r0n[💰](https://github.com/sponsors/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

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

Features
--------

- Declared the official support for Python 3.11 — by :user:`mlegner`. ((872))

6.0.2

Bugfixes
--------

- Revert (644), restore type annotations to as-of 5.2.0 version. ((688))

6.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]`` means ``MutableMultiMapping[str, int]``. The key type of
``MultiDict`` is always ``str``, while all str-like keys are accepted by API and
converted to ``str`` internally.

The same is true for ``CIMultiDict[int]`` which means ``MutableMultiMapping[istr,
int]``. str-like keys are accepted but converted to ``istr`` internally. ((682))

6.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 to ``get*()``, ``setdefault()``, and ``pop*()`` 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)

Page 1 of 8

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.