pypi multidict 6.2.0

21 hours ago

Bug fixes

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

    Related issues and pull requests on GitHub:
    #1045.

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

    Related issues and pull requests on GitHub:
    #1061.

Features

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

    Related issues and pull requests on GitHub:
    #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:
    #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:
    #1046.


6.1.0 (2024-09-09)

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:
    #928.

Features

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

    Related issues and pull requests on GitHub:
    #1002.

Removals and backward incompatible breaking changes

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

    Related issues and pull requests on GitHub:
    #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:
    #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:
    #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:
    #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/runner#2224 <https://github.com/actions/runner/issues/2224>_
    for more details.

    Related issues and pull requests on GitHub:
    #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:
    #943.


6.0.5 (2024-02-01)

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:
    #862, #864, #868, #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 #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:
    #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.rst>_ 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 :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:
    #802.

  • Declared Python 3.12 supported officially in the
    distribution package metadata -- by :user: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 :user:webknjaz.

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

  • Updated the test pins lockfile used in the
    cibuildwheel test stage -- by :user: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:

    .. 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:
    #828.

  • An experimental Python 3.13 job now runs in the CI
    -- :user:webknjaz.

    Related issues and pull requests on GitHub:
    #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:
    #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 (2022-12-24)

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 (2022-12-03)

Features

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

6.0.2 (2022-01-24)

Bugfixes

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

6.0.1 (2022-01-23)

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 (2022-01-22)

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

5.2.0 (2021-10-03)

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. (#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. (#620)

5.1.0 (2020-12-03)

Features

  • Supported GenericAliases (MultiDict[str]) for Python 3.9+
    #553

Bugfixes

  • Synchronized the declared supported Python versions in setup.py with actually supported and tested ones.
    #552

5.0.1 (2020-11-14)

Bugfixes

  • Provided x86 Windows wheels
    #550

5.0.0 (2020-10-12)

Features

  • Provided wheels for aarch64, i686, ppc64le, s390x architectures on Linux
    as well as x86_64.
    #500
  • Provided wheels for Python 3.9.
    #534

Removal

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

Misc


Don't miss a new multidict release

NewReleases is sending notifications on new releases.