Skip to content

Update multidict to 6.2.0#576

Closed
pyup-bot wants to merge 1 commit into
masterfrom
pyup-update-multidict-4.1.0-to-6.2.0
Closed

Update multidict to 6.2.0#576
pyup-bot wants to merge 1 commit into
masterfrom
pyup-update-multidict-4.1.0-to-6.2.0

Conversation

@pyup-bot

Copy link
Copy Markdown
Collaborator

This PR updates multidict from 4.1.0 to 6.2.0.

Changelog

6.2.0

======

*(2025-03-17)*


Bug fixes
---------

- Fixed ``in`` checks throwing an exception instead of returning :data:`False` when testing non-strings.

*Related issues and pull requests on GitHub:*
:issue:`1045`.

- Fix a leak when the last accessed module in ``PyInit__multidict`` init is not released.

*Related issues and pull requests on GitHub:*
:issue:`1061`.


Features
--------

- Implemented support for the free-threaded build of CPython 3.13 -- by :user:`lysnikolaou`.

*Related issues and pull requests on GitHub:*
:issue:`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:*
:issue:`1015`.


Miscellaneous internal changes
------------------------------

- Used stricter typing across the code base, resulting in improved typing accuracy across multidict classes.
Funded by an ``NLnet`` grant.

*Related issues and pull requests on GitHub:*
:issue:`1046`.


----

6.1.0

==================

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:*
:issue:`928`.




Features
--------

- Added support for Python 3.13 -- by :user:`bdraco`.


*Related issues and pull requests on GitHub:*
:issue:`1002`.




Removals and backward incompatible breaking changes
---------------------------------------------------

- Removed Python 3.7 support -- by :user:`bdraco`.


*Related issues and pull requests on GitHub:*
:issue:`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:*
:issue:`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:*
:issue:`940`.



- `codecov-action <https://github.com/codecov/codecov-action>`_
has been temporarily downgraded to ``v3``
in the GitHub Actions CI/CD workflow definitions
in order to fix uploading coverage to
`Codecov <https://app.codecov.io/gh/aio-libs/multidict>`_.
See `this issue <https://github.com/codecov/codecov-action/issues/1252>`_
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 adding ``shell: bash``.
See `actions/runner2224 <https://github.com/actions/runner/issues/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`.




----

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 :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
a ``MultiDict.items().isdisjoint()`` call when using C Extensions.


*Related issues and pull requests on GitHub:*
:issue:`927`.




Improved documentation
----------------------

- On the `Contributing docs <https://github.com/aio-libs/multidict/blob/master/CHANGES/README.rst>`_ page,
a link to the ``Towncrier philosophy`` has been fixed.


*Related issues and pull requests on GitHub:*
:issue:`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:*
: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`.




Contributor-facing changes
--------------------------

- 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 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 :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:

.. 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:*
: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`.




----

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. (:issue:`798`)

6.0.3

==================

Features
--------

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

6.0.2

==================

Bugfixes
--------

- Revert :issue:`644`, restore type annotations to as-of 5.2.0 version. (:issue:`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. (:issue:`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. (:issue:`681`)


Bugfixes
--------

- 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`)


Deprecations and Removals
-------------------------

- Dropped Python 3.6 support (:issue:`680`)


Misc
----

- :issue:`659`

5.2.0

=====================

Features
--------

- 1. Added support Python 3.10
2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
3. Started shipping platform-specific arm64 wheels for Apple Silicon. (:issue:`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. (:issue:`620`)

5.1.0

==================

Features
--------

- Supported ``GenericAliases`` (``MultiDict[str]``) for Python 3.9+
:issue:`553`


Bugfixes
--------

- Synchronized the declared supported Python versions in ``setup.py`` with actually supported and tested ones.
:issue:`552`


----

5.0.1

==================

Bugfixes
--------

- Provided x86 Windows wheels
:issue:`550`


----

5.0.0

==================

Features
--------

- Provided wheels for ``aarch64``, ``i686``, ``ppc64le``, ``s390x`` architectures on Linux
as well as ``x86_64``.
:issue:`500`
- Provided wheels for Python 3.9.
:issue:`534`

Removal
-------

- Dropped Python 3.5 support; Python 3.6 is the minimal supported Python version.

Misc
----

- :issue:`503`


----

4.7.6

------------------

Bugfixes
^^^^^^^^

- Fixed an issue with some versions of the ``wheel`` dist
failing because of being unable to detect the license file.
:issue:`481`

4.7.5

------------------

Bugfixes
^^^^^^^^

- Fixed creating and updating of :class:`~multidict.MultiDict`
from a sequence of pairs and keyword arguments. Previously passing
a list argument modified it inplace, and other sequences caused an
error.
:issue:`457`
- Fixed comparing with mapping: an exception raised in the
:py:meth:`~object.__len__` method caused raising a SyntaxError.
:issue:`459`
- Fixed comparing with mapping: all exceptions raised in the
:py:meth:`~object.__getitem__` method were silenced.
:issue:`460`

4.7.4

------------------

Bugfixes
^^^^^^^^

- ``MultiDict.iter`` fix memory leak when used iterator over
:py:class:`~multidict.MultiDict` instance.
:issue:`452`

4.7.3

----------------------------

Features
^^^^^^^^

- Implement ``__sizeof__`` function to correctly calculate all internal structures size.
:issue:`444`
- Expose ``getversion()`` function.
:issue:`451`


Bugfixes
^^^^^^^^

- Fix crashes in ``popone``/``popall`` when default is returned.
:issue:`450`


Improved Documentation
^^^^^^^^^^^^^^^^^^^^^^

- Corrected the documentation for ``MultiDict.extend()``
:issue:`446`

4.7.2

------------------

Bugfixes
^^^^^^^^

- Fixed crashing when multidict is used pyinstaller
:issue:`432`
- Fixed typing for :py:meth:`CIMultiDict.copy() <multidict.MultiDict.copy>`
:issue:`434`
- Fixed a memory leak in :py:meth:`MultiDict.copy() <multidict.MultiDict.copy>`
:issue:`443`

4.7.1

------------------

Bugfixes
^^^^^^^^

- :py:meth:`CIMultiDictProxy.copy() <multidict.MultiDictProxy.copy>` fixed to
return a case-insensitive :py:class:`multidict._multidict.CIMultiDict()
<multidict.MultiDict>` object.
:issue:`427`
- Made :py:class:`~multidict.CIMultiDict` subclassable again.
:issue:`416`
- Fixed a regression, :class:`multidict.MultiDict` can be constructed
from an arbitrary iterable of pairs again.
:issue:`418`
- :py:meth:`CIMultiDict.add() <multidict.MultiDict.add>` may be called
with keyword arguments now.
:issue:`421`


Improved Documentation
^^^^^^^^^^^^^^^^^^^^^^

- Mention ``MULTIDICT_NO_EXTENSIONS`` environment variable in docs.
:issue:`393`
- Document the fact that ``istr`` preserves the casing of argument untouched but uses internal lower-cased copy for keys comparison.
:issue:`419`

4.7.0

------------------

Features
^^^^^^^^

- Replace Cython optimization with pure C
:issue:`249`
- Implement ``__length_hint__()`` for iterators
:issue:`310`
- Support the MultiDict[str] generic specialization in the runtime.
:issue:`392`
- Embed pair_list_t structure into MultiDict Python object
:issue:`395`
- Embed multidict pairs for small dictionaries to amortize the memory usage.
:issue:`396`
- Support weak references to C Extension classes.
:issue:`399`
- Add docstrings to provided classes.
:issue:`400`
- Merge ``multidict._istr`` back with ``multidict._multidict``.
:issue:`409`


Bugfixes
^^^^^^^^

- Explicitly call ``tp_free`` slot on deallocation.
:issue:`407`
- Return class from __class_getitem__ to simplify subclassing
:issue:`413`

4.6.1

------------------

Bugfixes
^^^^^^^^

- Fix PyPI link for GitHub Issues badge.
:issue:`391`

4.6.0

------------------

Bugfixes
^^^^^^^^

- Fix GC object tracking.
:issue:`314`
- Preserve the case of `istr` strings.
:issue:`374`
- Generate binary wheels for Python 3.8.

4.5.2

------------------

* Fix another memory leak introduced by 4.5.0 release
:issue:`307`

4.5.1

------------------

* Fix a memory leak introduced by 4.5.0 release
:issue:`306`

4.5.0

------------------

* Multidict views ported from Cython to C extension
:issue:`275`

4.4.2

------------------

* Restore Python 3.4 support
:issue:`289`

4.4.1

------------------

* Fix type annotations
:issue:`283`)

* Allow to install the library on systems without compilation toolset
:issue:`281`

4.4.0

------------------

* Rewrite C implementation to use C pair list.

* Fix update order when both ``arg`` and ``kwargs`` are used.

4.3.1

------------------

* Fix a typo in multidict stub file.

4.3.0

------------------

* Polish type hints, make multidict type definitions generic.

4.2.0

------------------

* Publish ``py.typed`` flag for type hinting analyzers (``mypy`` etc).
Links

@pyup-bot

pyup-bot commented Apr 1, 2025

Copy link
Copy Markdown
Collaborator Author

Closing this in favor of #585

@pyup-bot pyup-bot closed this Apr 1, 2025
@iZonex iZonex deleted the pyup-update-multidict-4.1.0-to-6.2.0 branch April 1, 2025 07:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant