chore(deps): update dependency multidict to v6.6.3 #28

Open
renovate-bot wants to merge 1 commit from renovate/multidict-6.x into main
Collaborator

This PR contains the following updates:

Package Update Change
multidict minor ==6.1.0 -> ==6.6.3

Release Notes

aio-libs/multidict (multidict)

v6.6.3

Compare Source

=====

(2025-06-30)

Bug fixes

  • Fixed inconsistencies generated by the C implementation of _md_shrink() which might later lead to assertion failures and crash -- by :user:Romain-Geissler-1A.

    Related issues and pull requests on GitHub:
    :issue:1229.


v6.6.2

Compare Source

=====

(2025-06-28)

Bug fixes

  • Fixed a memory corruption issue in the C implementation of _md_shrink() that could lead to segmentation faults and data loss when items were deleted from a :class:~multidict.MultiDict. The issue was an edge case in the pointer arithmetic during the compaction phase -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1221, :issue:1222.

  • Fixed format string compilation errors in debug builds on 32-bit platforms by using portable %zd format specifiers for Py_ssize_t values instead of %ld -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1225, :issue:1226.

Packaging updates and notes for downstreams

  • Re-enabled 32-bit Linux wheel builds that were disabled by default in cibuildwheel 3.0.0 -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1225, :issue:1227.


v6.6.1

Compare Source

=====

(2025-06-28)

Bug fixes

  • If :meth:multidict.MultiDict.extend, :meth:multidict.MultiDict.merge, or :meth:multidict.MultiDict.update raises an exception, now the multidict internal state is correctly restored.
    Patch by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1215.

Contributor-facing changes

  • Fixed setuptools deprecation warning about the license specification -- by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1216.

  • Fix compiler warnings and convert them to errors -- by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1217.


v6.6.0

Compare Source

=====

(2025-06-27)

Features

  • Added :meth:multidict.MultiDict.merge which copies all items from arguments if its key
    not exist in the dictionary -- by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:292.

  • Stopped reallocating memory for the internal htkeys_t structure when inserting new items if the
    multidict has deleted items and it could be collapsed in-place. Removal of
    malloc()/free() improves the performance slightly.

    The change affects C implementation only, pure Python code is not changed.

    Patch by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1200.

  • C implementation of :class:multidict.MultiDict.getall now is slightly faster if it returns nothing -- by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1212.

Improved documentation

  • Replaced docstring for :meth:multidict.MultiDict.update to don't use RST/markdown markup.

    Related issues and pull requests on GitHub:
    :issue:1203.

  • Improved documentation for :meth:multidict.MultiDict.extend and :meth:multidict.MultiDict.update -- by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1205.

Contributor-facing changes

  • When building wheels, the source distribution is now passed directly
    to the cibuildwheel invocation -- by :user:webknjaz.

    Related issues and pull requests on GitHub:
    :issue:1199.

  • Set up PYTHONHASHSEED for benchmarks execution to make measured times stable -- by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1202.


v6.5.1

Compare Source

=====

(2025-06-24)

Bug fixes

  • Fixed a bug in C implementation when multidict is resized and it has deleted slots.

    The bug was introduced by multidict 6.5.0 release.

    Patch by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1195.

Contributor-facing changes

  • A pair of code formatters for Python and C have been configured in the pre-commit tool.

    Related issues and pull requests on GitHub:
    :issue:1123.

  • Shorted fixture parametrization ids.

    For example, test_keys_view_xor[case-insensitive-pure-python-module] becomes test_keys_view_xor[ci-py] -- by :user:asvetlov.

    Related issues and pull requests on GitHub:
    :issue:1192.

  • The :file:reusable-cibuildwheel.yml workflow has been refactored to
    be more generic and :file:ci-cd.yml now holds all the configuration
    toggles -- by :user:webknjaz.

    Related issues and pull requests on GitHub:
    :issue:1193.


v6.5.0

Compare Source

=====

(2025-06-17)

.. note::

The release was yanked because of :issue:1195, multidict 6.5.1 should be used
instead.

Features

  • Replace internal implementation from an array of items to hash table.
    algorithmic complexity for lookups is switched from O(N) to O(1).

    The hash table is very similar to :class:dict from CPython but it allows keys duplication.

    The benchmark shows 25-50% boost for single lookups, x2-x3 for bulk updates, and x20 for
    some multidict view operations. The gain is not for free:
    :class:~multidict.MultiDict.add and :class:~multidict.MultiDict.extend are 25-50%
    slower now. We consider it as acceptable because the lookup is much more common
    operation that addition for the library domain.

    Related issues and pull requests on GitHub:
    :issue:1128.

Contributor-facing changes

  • Builds have been added for arm64 Windows
    wheels and the reusable-build-wheel.yml
    template has been modified to allow for
    an os value (windows-11-arm) which
    does not end with the -latest postfix.

    Related issues and pull requests on GitHub:
    :issue:1167.


v6.4.4

Compare Source

=====

(2025-05-19)

Bug fixes

  • Fixed a segmentation fault when calling :py:meth:multidict.MultiDict.setdefault with a single argument -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1160.

  • Fixed a segmentation fault when attempting to directly instantiate view objects
    (multidict._ItemsView, multidict._KeysView, multidict._ValuesView) -- by :user:bdraco.

    View objects now raise a proper :exc:TypeError with the message "cannot create '...' instances directly"
    when direct instantiation is attempted.

    View objects should only be created through the proper methods: :py:meth:multidict.MultiDict.items,
    :py:meth:multidict.MultiDict.keys, and :py:meth:multidict.MultiDict.values.

    Related issues and pull requests on GitHub:
    :issue:1164.

Miscellaneous internal changes

  • :class:multidict.MultiDictProxy was refactored to rely only on
    :class:multidict.MultiDict public interface and don't touch any implementation
    details.

    Related issues and pull requests on GitHub:
    :issue:1150.

  • Multidict views were refactored to rely only on
    :class:multidict.MultiDict API and don't touch any implementation
    details.

    Related issues and pull requests on GitHub:
    :issue:1152.

  • Dropped internal _Impl class from pure Python implementation, both pure Python and C
    Extension follows the same design internally now.

    Related issues and pull requests on GitHub:
    :issue:1153.


v6.4.3

Compare Source

=====

(2025-04-10)

Bug fixes

  • Fixed building the library in debug mode.

    Related issues and pull requests on GitHub:
    :issue:1144.

  • Fixed custom PyType_GetModuleByDef() when non-heap type object was passed.

    Related issues and pull requests on GitHub:
    :issue:1147.

Packaging updates and notes for downstreams

  • Added the ability to build in debug mode by setting :envvar:MULTIDICT_DEBUG_BUILD in the environment -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1145.


v6.4.2

Compare Source

=====

(2025-04-09)

Bug fixes

  • Fixed a segmentation fault when creating subclassed :py:class:~multidict.MultiDict objects on Python < 3.11 -- by :user:bdraco.

    The problem first appeared in 6.4.0

    Related issues and pull requests on GitHub:
    :issue:1141.


v6.4.1

Compare Source

=====

(2025-04-09)

No significant changes.


v6.4.0

Compare Source

=====

(2025-04-09)

Bug fixes

  • Fixed a memory leak creating new :class:~multidict.istr objects -- by :user:bdraco.

    The leak was introduced in 6.3.0

    Related issues and pull requests on GitHub:
    :issue:1133.

  • Fixed reference counting when calling :py:meth:multidict.MultiDict.update -- by :user:bdraco.

    The leak was introduced in 4.4.0

    Related issues and pull requests on GitHub:
    :issue:1135.

Features

  • Switched C Extension to use heap types and the module state.

    Related issues and pull requests on GitHub:
    :issue:1125.

  • Started building armv7l wheels -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1127.


v6.3.2

Compare Source

=====

(2025-04-03)

Bug fixes

  • Resolved a memory leak by ensuring proper reference count decrementation -- by :user:asvetlov and :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1121.


v6.3.1

Compare Source

=====

(2025-04-01)

Bug fixes

  • Fixed keys not becoming case-insensitive when :class:multidict.CIMultiDict is created by passing in a :class:multidict.MultiDict -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1112.

  • Fixed the pure Python version mutating the original :class:multidict.MultiDict when creating a new :class:multidict.CIMultiDict from an existing one when keyword arguments are also passed -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1113.

  • Prevented crashing with a segfault when :func:repr is called for recursive multidicts and their proxies and views.

    Related issues and pull requests on GitHub:
    :issue:1115.


v6.3.0

Compare Source

=====

(2025-03-31)

Bug fixes

  • Set operations for KeysView and ItemsView of case-insensitive multidicts and their proxies are processed in case-insensitive manner.

    Related issues and pull requests on GitHub:
    :issue:965.

  • Rewrote :class:multidict.CIMultiDict and it proxy to always return
    :class:multidict.istr keys. istr is derived from :class:str,
    thus the change is backward compatible.

    The performance boost is about 15% for some operations for C Extension,
    pure Python implementation have got a visible (15% - 230%) speedup as well.

    Related issues and pull requests on GitHub:
    :issue:1097.

  • Fixed a crash when extending a multidict from multidict proxy if C Extensions were used.

    Related issues and pull requests on GitHub:
    :issue:1100.

Features

  • Implemented a custom parser for METH_FASTCALL | METH_KEYWORDS protocol
    -- by :user:asvetlov.

    The patch re-enables fast call protocol in the :py:mod:multidict C Extension.

    Speedup is about 25%-30% for the library benchmarks for Python 3.12+.

    Related issues and pull requests on GitHub:
    :issue:1070.

  • The C-extension no longer pre-allocates a Python exception object in
    lookup-related methods of :py:class:~multidict.MultiDict when the
    passed-in key is not found but default value is provided.

    Namely, this affects :py:meth:MultiDict.getone() <multidict.MultiDict.getone>, :py:meth:MultiDict.getall() <multidict.MultiDict.getall>, :py:meth:MultiDict.get() <multidict.MultiDict.get>, :py:meth:MultiDict.pop() <multidict.MultiDict.pop>, :py:meth:MultiDict.popone() <multidict.MultiDict.popone>, and :py:meth:MultiDict.popall() <multidict.MultiDict.popall>.

    Additionally, the :py:class:~multidict.MultiDict comparison with
    regular :py:class:dict\ ionaries is now about 60% faster
    on Python 3.13+ in the fallback-to-default case.

    Related issues and pull requests on GitHub:
    :issue:1078.

  • Implemented __repr__() for C Extension classes in C.

    The speedup is about 2.5 times.

    Related issues and pull requests on GitHub:
    :issue:1081.

  • Made C version of :class:multidict.istr pickleable.

    Related issues and pull requests on GitHub:
    :issue:1098.

  • Optimized multidict creation and extending / updating if C Extensions are used.

    The speedup is between 25% and 70% depending on the usage scenario.

    Related issues and pull requests on GitHub:
    :issue:1101.

  • :meth:multidict.MultiDict.popitem is changed to remove
    the latest entry instead of the first.

    It gives O(1) amortized complexity.

    The standard :meth:dict.popitem removes the last entry also.

    Related issues and pull requests on GitHub:
    :issue:1105.

Contributor-facing changes

  • Started running benchmarks for the pure Python implementation in addition to the C implementation -- by :user:bdraco.

    Related issues and pull requests on GitHub:
    :issue:1092.

  • The the project-wide Codecov_ metric is no longer reported
    via GitHub Checks API. The combined value is not very useful
    because one of the sources (MyPy) cannot reach 100% with the
    current state of the ecosystem. We may want to reconsider in
    the future. Instead, we now have two separate
    “runtime coverage” metrics for library code and tests.
    They are to be kept at 100% at all times.
    And the “type coverage” metric will remain advisory, at a
    lower threshold.

    The default patch metric check is renamed to “runtime”
    to better reflect its semantics. This one will also require
    100% coverage.
    Another “typing” patch coverage metric is now reported
    alongside it. It's considered advisory, just like its
    project counterpart.

    When looking at Codecov_, one will likely want to look at
    MyPy and pytest flags separately. It is usually best to
    avoid looking at the PR pages that sometimes display
    combined coverage incorrectly.

    The change additionally disables the deprecated GitHub
    Annotations integration in Codecov_.

    Finally, the badge coloring range now starts at 100%.

    .. image:: https://codecov.io/gh/aio-libs/multidict/branch/master/graph/badge.svg?flag=pytest
    :target: https://codecov.io/gh/aio-libs/multidict?flags[]=pytest
    :alt: Coverage metrics

    -- by :user:webknjaz

    Related issues and pull requests on GitHub:
    :issue:1093.

Miscellaneous internal changes

  • Synchronized :file:pythoncapi_compat.h with the latest available version.

    Related issues and pull requests on GitHub:
    :issue:1063.

  • Moved registering ABCs for C Extension classes from C to Python.

    Related issues and pull requests on GitHub:
    :issue:1083.

  • Refactored the internal pair_list implementation.

    Related issues and pull requests on GitHub:
    :issue:1084.

  • Implemented views comparison and disjoints in C instead of Python helpers.

    The performance boost is about 40%.

    Related issues and pull requests on GitHub:
    :issue:1096.


v6.2.0

Compare Source

======

(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.

  • Fixed 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.



Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [multidict](https://github.com/aio-libs/multidict) | minor | `==6.1.0` -> `==6.6.3` | --- ### Release Notes <details> <summary>aio-libs/multidict (multidict)</summary> ### [`v6.6.3`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#663) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.6.2...v6.6.3) \===== *(2025-06-30)* ## Bug fixes - Fixed inconsistencies generated by the C implementation of `_md_shrink()` which might later lead to assertion failures and crash -- by :user:`Romain-Geissler-1A`. *Related issues and pull requests on GitHub:* :issue:`1229`. *** ### [`v6.6.2`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#662) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.6.1...v6.6.2) \===== *(2025-06-28)* ## Bug fixes - Fixed a memory corruption issue in the C implementation of `_md_shrink()` that could lead to segmentation faults and data loss when items were deleted from a :class:`~multidict.MultiDict`. The issue was an edge case in the pointer arithmetic during the compaction phase -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1221`, :issue:`1222`. - Fixed format string compilation errors in debug builds on 32-bit platforms by using portable `%zd` format specifiers for `Py_ssize_t` values instead of `%ld` -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1225`, :issue:`1226`. ## Packaging updates and notes for downstreams - Re-enabled 32-bit Linux wheel builds that were disabled by default in cibuildwheel 3.0.0 -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1225`, :issue:`1227`. *** ### [`v6.6.1`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#661) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.6.0...v6.6.1) \===== *(2025-06-28)* ## Bug fixes - If :meth:`multidict.MultiDict.extend`, :meth:`multidict.MultiDict.merge`, or :meth:`multidict.MultiDict.update` raises an exception, now the multidict internal state is correctly restored. Patch by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1215`. ## Contributor-facing changes - Fixed `setuptools` deprecation warning about the license specification -- by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1216`. - Fix compiler warnings and convert them to errors -- by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1217`. *** ### [`v6.6.0`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#660) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.5.1...v6.6.0) \===== *(2025-06-27)* ## Features - Added :meth:`multidict.MultiDict.merge` which copies all items from arguments if its key not exist in the dictionary -- by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`292`. - Stopped reallocating memory for the internal `htkeys_t` structure when inserting new items if the multidict has deleted items and it could be collapsed in-place. Removal of `malloc()`/`free()` improves the performance slightly. The change affects C implementation only, pure Python code is not changed. Patch by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1200`. - C implementation of :class:`multidict.MultiDict.getall` now is slightly faster if it returns nothing -- by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1212`. ## Improved documentation - Replaced docstring for :meth:`multidict.MultiDict.update` to don't use RST/markdown markup. *Related issues and pull requests on GitHub:* :issue:`1203`. - Improved documentation for :meth:`multidict.MultiDict.extend` and :meth:`multidict.MultiDict.update` -- by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1205`. ## Contributor-facing changes - When building wheels, the source distribution is now passed directly to the `cibuildwheel` invocation -- by :user:`webknjaz`. *Related issues and pull requests on GitHub:* :issue:`1199`. - Set up `PYTHONHASHSEED` for benchmarks execution to make measured times stable -- by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1202`. *** ### [`v6.5.1`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#651) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.5.0...v6.5.1) \===== *(2025-06-24)* ## Bug fixes - Fixed a bug in C implementation when multidict is resized and it has deleted slots. The bug was introduced by multidict 6.5.0 release. Patch by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1195`. ## Contributor-facing changes - A pair of code formatters for Python and C have been configured in the pre-commit tool. *Related issues and pull requests on GitHub:* :issue:`1123`. - Shorted fixture parametrization ids. For example, `test_keys_view_xor[case-insensitive-pure-python-module]` becomes `test_keys_view_xor[ci-py]` -- by :user:`asvetlov`. *Related issues and pull requests on GitHub:* :issue:`1192`. - The :file:`reusable-cibuildwheel.yml` workflow has been refactored to be more generic and :file:`ci-cd.yml` now holds all the configuration toggles -- by :user:`webknjaz`. *Related issues and pull requests on GitHub:* :issue:`1193`. *** ### [`v6.5.0`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#650) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.4.4...v6.5.0) \===== *(2025-06-17)* .. note:: The release was yanked because of :issue:`1195`, multidict 6.5.1 should be used instead. ## Features - Replace internal implementation from an array of items to hash table. algorithmic complexity for lookups is switched from O(N) to O(1). The hash table is very similar to :class:`dict` from CPython but it allows keys duplication. The benchmark shows 25-50% boost for single lookups, x2-x3 for bulk updates, and x20 for some multidict view operations. The gain is not for free: :class:`~multidict.MultiDict.add` and :class:`~multidict.MultiDict.extend` are 25-50% slower now. We consider it as acceptable because the lookup is much more common operation that addition for the library domain. *Related issues and pull requests on GitHub:* :issue:`1128`. ## Contributor-facing changes - Builds have been added for arm64 Windows wheels and the `reusable-build-wheel.yml` template has been modified to allow for an os value (`windows-11-arm`) which does not end with the `-latest` postfix. *Related issues and pull requests on GitHub:* :issue:`1167`. *** ### [`v6.4.4`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#644) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.4.3...v6.4.4) \===== *(2025-05-19)* ## Bug fixes - Fixed a segmentation fault when calling :py:meth:`multidict.MultiDict.setdefault` with a single argument -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1160`. - Fixed a segmentation fault when attempting to directly instantiate view objects (`multidict._ItemsView`, `multidict._KeysView`, `multidict._ValuesView`) -- by :user:`bdraco`. View objects now raise a proper :exc:`TypeError` with the message "cannot create '...' instances directly" when direct instantiation is attempted. View objects should only be created through the proper methods: :py:meth:`multidict.MultiDict.items`, :py:meth:`multidict.MultiDict.keys`, and :py:meth:`multidict.MultiDict.values`. *Related issues and pull requests on GitHub:* :issue:`1164`. ## Miscellaneous internal changes - :class:`multidict.MultiDictProxy` was refactored to rely only on :class:`multidict.MultiDict` public interface and don't touch any implementation details. *Related issues and pull requests on GitHub:* :issue:`1150`. - Multidict views were refactored to rely only on :class:`multidict.MultiDict` API and don't touch any implementation details. *Related issues and pull requests on GitHub:* :issue:`1152`. - Dropped internal `_Impl` class from pure Python implementation, both pure Python and C Extension follows the same design internally now. *Related issues and pull requests on GitHub:* :issue:`1153`. *** ### [`v6.4.3`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#643) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.4.2...v6.4.3) \===== *(2025-04-10)* ## Bug fixes - Fixed building the library in debug mode. *Related issues and pull requests on GitHub:* :issue:`1144`. - Fixed custom `PyType_GetModuleByDef()` when non-heap type object was passed. *Related issues and pull requests on GitHub:* :issue:`1147`. ## Packaging updates and notes for downstreams - Added the ability to build in debug mode by setting :envvar:`MULTIDICT_DEBUG_BUILD` in the environment -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1145`. *** ### [`v6.4.2`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#642) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.4.1...v6.4.2) \===== *(2025-04-09)* ## Bug fixes - Fixed a segmentation fault when creating subclassed :py:class:`~multidict.MultiDict` objects on Python < 3.11 -- by :user:`bdraco`. The problem first appeared in 6.4.0 *Related issues and pull requests on GitHub:* :issue:`1141`. *** ### [`v6.4.1`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#641) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.4.0...v6.4.1) \===== *(2025-04-09)* No significant changes. *** ### [`v6.4.0`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#640) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.3.2...v6.4.0) \===== *(2025-04-09)* ## Bug fixes - Fixed a memory leak creating new :class:`~multidict.istr` objects -- by :user:`bdraco`. The leak was introduced in 6.3.0 *Related issues and pull requests on GitHub:* :issue:`1133`. - Fixed reference counting when calling :py:meth:`multidict.MultiDict.update` -- by :user:`bdraco`. The leak was introduced in 4.4.0 *Related issues and pull requests on GitHub:* :issue:`1135`. ## Features - Switched C Extension to use heap types and the module state. *Related issues and pull requests on GitHub:* :issue:`1125`. - Started building armv7l wheels -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1127`. *** ### [`v6.3.2`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#632) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.3.1...v6.3.2) \===== *(2025-04-03)* ## Bug fixes - Resolved a memory leak by ensuring proper reference count decrementation -- by :user:`asvetlov` and :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1121`. *** ### [`v6.3.1`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#631) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.3.0...v6.3.1) \===== *(2025-04-01)* ## Bug fixes - Fixed keys not becoming case-insensitive when :class:`multidict.CIMultiDict` is created by passing in a :class:`multidict.MultiDict` -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1112`. - Fixed the pure Python version mutating the original :class:`multidict.MultiDict` when creating a new :class:`multidict.CIMultiDict` from an existing one when keyword arguments are also passed -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1113`. - Prevented crashing with a segfault when :func:`repr` is called for recursive multidicts and their proxies and views. *Related issues and pull requests on GitHub:* :issue:`1115`. *** ### [`v6.3.0`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#630) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.2.0...v6.3.0) \===== *(2025-03-31)* ## Bug fixes - Set operations for `KeysView` and `ItemsView` of case-insensitive multidicts and their proxies are processed in case-insensitive manner. *Related issues and pull requests on GitHub:* :issue:`965`. - Rewrote :class:`multidict.CIMultiDict` and it proxy to always return :class:`multidict.istr` keys. `istr` is derived from :class:`str`, thus the change is backward compatible. The performance boost is about 15% for some operations for C Extension, pure Python implementation have got a visible (15% - 230%) speedup as well. *Related issues and pull requests on GitHub:* :issue:`1097`. - Fixed a crash when extending a multidict from multidict proxy if C Extensions were used. *Related issues and pull requests on GitHub:* :issue:`1100`. ## Features - Implemented a custom parser for `METH_FASTCALL | METH_KEYWORDS` protocol \-- by :user:`asvetlov`. The patch re-enables fast call protocol in the :py:mod:`multidict` C Extension. Speedup is about 25%-30% for the library benchmarks for Python 3.12+. *Related issues and pull requests on GitHub:* :issue:`1070`. - The C-extension no longer pre-allocates a Python exception object in lookup-related methods of :py:class:`~multidict.MultiDict` when the passed-in *key* is not found but *default* value is provided. Namely, this affects :py:meth:`MultiDict.getone() <multidict.MultiDict.getone>`, :py:meth:`MultiDict.getall() <multidict.MultiDict.getall>`, :py:meth:`MultiDict.get() <multidict.MultiDict.get>`, :py:meth:`MultiDict.pop() <multidict.MultiDict.pop>`, :py:meth:`MultiDict.popone() <multidict.MultiDict.popone>`, and :py:meth:`MultiDict.popall() <multidict.MultiDict.popall>`. Additionally, the :py:class:`~multidict.MultiDict` comparison with regular :py:class:`dict`\ ionaries is now about 60% faster on Python 3.13+ in the fallback-to-default case. *Related issues and pull requests on GitHub:* :issue:`1078`. - Implemented `__repr__()` for C Extension classes in C. The speedup is about 2.5 times. *Related issues and pull requests on GitHub:* :issue:`1081`. - Made C version of :class:`multidict.istr` pickleable. *Related issues and pull requests on GitHub:* :issue:`1098`. - Optimized multidict creation and extending / updating if C Extensions are used. The speedup is between 25% and 70% depending on the usage scenario. *Related issues and pull requests on GitHub:* :issue:`1101`. - :meth:`multidict.MultiDict.popitem` is changed to remove the latest entry instead of the first. It gives O(1) amortized complexity. The standard :meth:`dict.popitem` removes the last entry also. *Related issues and pull requests on GitHub:* :issue:`1105`. ## Contributor-facing changes - Started running benchmarks for the pure Python implementation in addition to the C implementation -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`1092`. - The the project-wide Codecov\_ metric is no longer reported via GitHub Checks API. The combined value is not very useful because one of the sources (MyPy) cannot reach 100% with the current state of the ecosystem. We may want to reconsider in the future. Instead, we now have two separate “runtime coverage” metrics for library code and tests. They are to be kept at 100% at all times. And the “type coverage” metric will remain advisory, at a lower threshold. The default patch metric check is renamed to “runtime” to better reflect its semantics. This one will also require 100% coverage. Another “typing” patch coverage metric is now reported alongside it. It's considered advisory, just like its project counterpart. When looking at Codecov\_, one will likely want to look at MyPy and pytest flags separately. It is usually best to avoid looking at the PR pages that sometimes display combined coverage incorrectly. The change additionally disables the deprecated GitHub Annotations integration in Codecov\_. Finally, the badge coloring range now starts at 100%. .. image:: https://codecov.io/gh/aio-libs/multidict/branch/master/graph/badge.svg?flag=pytest :target: https://codecov.io/gh/aio-libs/multidict?flags\[]=pytest :alt: Coverage metrics \-- by :user:`webknjaz` *Related issues and pull requests on GitHub:* :issue:`1093`. ## Miscellaneous internal changes - Synchronized :file:`pythoncapi_compat.h` with the latest available version. *Related issues and pull requests on GitHub:* :issue:`1063`. - Moved registering ABCs for C Extension classes from C to Python. *Related issues and pull requests on GitHub:* :issue:`1083`. - Refactored the internal `pair_list` implementation. *Related issues and pull requests on GitHub:* :issue:`1084`. - Implemented views comparison and disjoints in C instead of Python helpers. The performance boost is about 40%. *Related issues and pull requests on GitHub:* :issue:`1096`. *** ### [`v6.2.0`](https://github.com/aio-libs/multidict/blob/HEAD/CHANGES.rst#620) [Compare Source](https://github.com/aio-libs/multidict/compare/v6.1.0...v6.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`. - Fixed 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`. *** </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODUuOCIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
chore(deps): update dependency multidict to v6.2.0
Some checks failed
Docker / build (pull_request) Has been cancelled
8d5768bf73
renovate-bot force-pushed renovate/multidict-6.x from 8d5768bf73 to e3a0c23191 2025-03-31 21:33:57 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.2.0 to chore(deps): update dependency multidict to v6.3.0 2025-03-31 21:33:57 +00:00
renovate-bot force-pushed renovate/multidict-6.x from e3a0c23191 to 3ed8853bcc 2025-04-01 22:34:49 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.3.0 to chore(deps): update dependency multidict to v6.3.1 2025-04-01 22:34:51 +00:00
renovate-bot force-pushed renovate/multidict-6.x from 3ed8853bcc to b5e7a99d06 2025-04-02 17:40:14 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.3.1 to chore(deps): update dependency multidict to v6.2.0 2025-04-02 17:40:14 +00:00
renovate-bot force-pushed renovate/multidict-6.x from b5e7a99d06 to d5ee05c8f8 2025-04-03 20:34:31 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.2.0 to chore(deps): update dependency multidict to v6.3.2 2025-04-03 20:34:31 +00:00
renovate-bot force-pushed renovate/multidict-6.x from d5ee05c8f8 to b63746bafa 2025-04-08 20:37:47 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.3.2 to chore(deps): update dependency multidict to v6.2.0 2025-04-08 20:37:47 +00:00
renovate-bot force-pushed renovate/multidict-6.x from b63746bafa to 13cdeacb4a 2025-04-09 18:46:04 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.2.0 to chore(deps): update dependency multidict to v6.4.0 2025-04-09 18:46:06 +00:00
renovate-bot force-pushed renovate/multidict-6.x from 13cdeacb4a to ef63966fd2 2025-04-09 20:36:26 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.4.0 to chore(deps): update dependency multidict to v6.4.1 2025-04-09 20:36:29 +00:00
renovate-bot force-pushed renovate/multidict-6.x from ef63966fd2 to c76fb874d4 2025-04-09 21:31:42 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.4.1 to chore(deps): update dependency multidict to v6.2.0 2025-04-09 21:31:42 +00:00
renovate-bot force-pushed renovate/multidict-6.x from c76fb874d4 to f19184146c 2025-04-09 23:32:33 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.2.0 to chore(deps): update dependency multidict to v6.4.2 2025-04-09 23:32:36 +00:00
renovate-bot force-pushed renovate/multidict-6.x from f19184146c to cd8004a324 2025-04-11 02:31:51 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.4.2 to chore(deps): update dependency multidict to v6.4.3 2025-04-11 02:31:52 +00:00
renovate-bot force-pushed renovate/multidict-6.x from cd8004a324 to 0340289b91 2025-05-19 15:10:50 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.4.3 to chore(deps): update dependency multidict to v6.4.4 2025-05-19 15:10:52 +00:00
renovate-bot changed title from chore(deps): update dependency multidict to v6.4.4 to chore(deps): update dependency multidict to v6.5.0 2025-06-17 14:19:47 +00:00
renovate-bot force-pushed renovate/multidict-6.x from 0340289b91 to cb43379294 2025-06-17 14:19:48 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.5.0 to chore(deps): update dependency multidict to v6.4.4 2025-06-24 18:19:42 +00:00
renovate-bot force-pushed renovate/multidict-6.x from cb43379294 to e26b79066b 2025-06-24 18:19:42 +00:00 Compare
renovate-bot force-pushed renovate/multidict-6.x from e26b79066b to b2ad434d8d 2025-06-24 22:15:35 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.4.4 to chore(deps): update dependency multidict to v6.5.1 2025-06-24 22:15:37 +00:00
renovate-bot force-pushed renovate/multidict-6.x from b2ad434d8d to 0e4cb482d0 2025-06-27 10:21:19 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.5.1 to chore(deps): update dependency multidict to v6.6.0 2025-06-27 10:21:20 +00:00
renovate-bot force-pushed renovate/multidict-6.x from 0e4cb482d0 to fcf1263068 2025-06-28 10:14:28 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.6.0 to chore(deps): update dependency multidict to v6.6.1 2025-06-28 10:14:28 +00:00
renovate-bot force-pushed renovate/multidict-6.x from fcf1263068 to 638b3ac7a9 2025-06-28 13:14:58 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.6.1 to chore(deps): update dependency multidict to v6.5.1 2025-06-28 13:14:58 +00:00
renovate-bot force-pushed renovate/multidict-6.x from 638b3ac7a9 to 3d7109fb10 2025-06-28 15:17:43 +00:00 Compare
renovate-bot changed title from chore(deps): update dependency multidict to v6.5.1 to chore(deps): update dependency multidict to v6.6.2 2025-06-28 15:17:43 +00:00
renovate-bot changed title from chore(deps): update dependency multidict to v6.6.2 to chore(deps): update dependency multidict to v6.6.3 2025-07-01 16:33:10 +00:00
renovate-bot force-pushed renovate/multidict-6.x from 3d7109fb10 to 18781a8e04 2025-07-01 16:33:11 +00:00 Compare
Some checks failed
Docker / build (pull_request) Has been cancelled
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/multidict-6.x:renovate/multidict-6.x
git switch renovate/multidict-6.x

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff renovate/multidict-6.x
git switch renovate/multidict-6.x
git rebase main
git switch main
git merge --ff-only renovate/multidict-6.x
git switch renovate/multidict-6.x
git rebase main
git switch main
git merge --no-ff renovate/multidict-6.x
git switch main
git merge --squash renovate/multidict-6.x
git switch main
git merge --ff-only renovate/multidict-6.x
git switch main
git merge renovate/multidict-6.x
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: kumi/moneropro#28
No description provided.