Metadata-Version: 2.0 Name: multidict Version: 3.1.3 Summary: multidict implementation Home-page: https://github.com/aio-libs/multidict/ Author: Andrew Svetlov Author-email: andrew.svetlov@gmail.com License: Apache 2 Platform: UNKNOWN Classifier: License :: OSI Approved :: Apache Software License Classifier: Intended Audience :: Developers Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Development Status :: 5 - Production/Stable ========= multidict ========= .. image:: https://travis-ci.org/aio-libs/multidict.svg?branch=master :target: https://travis-ci.org/aio-libs/multidict :align: right .. image:: https://codecov.io/gh/aio-libs/multidict/branch/master/graph/badge.svg :target: https://codecov.io/gh/aio-libs/multidict .. image:: https://badges.gitter.im/Join%20Chat.svg :target: https://gitter.im/aio-libs/Lobby :alt: Chat on Gitter Multidicts are useful for working with HTTP headers, URL query args etc. The code was extracted from aiohttp_ library. Introduction ------------ *HTTP Headers* and *URL query string* require specific data structure: *multidict*. It behaves mostly like a regular ``dict`` but it may have several *values* for the same *key* and *preserves insertion ordering*. The *key* is ``str`` (or ``istr`` for case-insensitive dictionaries). ``multidict`` has four multidict classes: ``MultiDict``, ``MultiDictProxy``, ``CIMultiDict`` and ``CIMultiDictProxy``. Immutable proxies (``MultiDictProxy`` and ``CIMultiDictProxy``) provide a dynamic view for the proxied multidict, the view reflects underlying collection changes. They implement the ``collections.abc.Mapping`` interface. Regular mutable (``MultiDict`` and ``CIMultiDict``) classes implement ``collections.abc.MutableMapping`` and allows to change their own content. *Case insensitive* (``CIMultiDict`` and ``CIMultiDictProxy``) ones assume the *keys* are case insensitive, e.g.:: >>> dct = CIMultiDict(key='val') >>> 'Key' in dct True >>> dct['Key'] 'val' *Keys* should be ``str`` or ``istr`` instances. The library has optional Cython_ optimization for sake of speed. License ------- Apache 2 .. _aiohttp: https://github.com/KeepSafe/aiohttp .. _Cython: http://cython.org/ 3.1.3 (2017-07-14) ------------------ * Fix build 3.1.2 (2017-07-14) ------------------ * Fix type annotations 3.1.1 (2017-07-09) ------------------ * Fix #105: Remove memory leak in `istr` implementation 3.1.0 (2017-06-25) ------------------ * Fix #99: raise `RuntimeError` on dict iterations if the dict was changed * Update `__init__.pyi` signatures 3.0.0 (2017-06-21) ------------------ * Refactor internal data structures: main dict operations are about 100% faster now. * Preserve order on multidict updates #68 Updates are `md[key] = val` and `md.update(...)` calls. Now **the last** entry is replaced with new key/value pair, all previous occurrences are removed. If key is not present in dictionary the pair is added to the end * Force keys to `str` instances #88 * Implement `.popall(key[, default])` #84 * `.pop()` removes only first occurence, `.popone()` added #92 * Implement dict's version #86 * Proxies are not pickable anymore #77 2.1.7 (2017-05-29) ------------------ * Fix import warning on Python 3.6 #79 2.1.6 (2017-05-27) ------------------ * Rebuild the library for fixning missing `__spec__` attribute #79 2.1.5 (2017-05-13) ------------------ * Build Python 3.6 binary wheels 2.1.4 (2016-12-1) ------------------ * Remove LICENSE filename extension @ MANIFEST.in file #31 2.1.3 (2016-11-26) ------------------ * Add a fastpath for multidict extending by multidict 2.1.2 (2016-09-25) ------------------ * Fix `CIMultiDict.update()` for case of accepting `istr` 2.1.1 (2016-09-22) ------------------ * Fix `CIMultiDict` constructor for case of accepting `istr` #11 2.1.0 (2016-09-18) ------------------ * Allow to create proxy from proxy * Add type hints (PEP-484) 2.0.1 (2016-08-02) ------------------ * Don't crash on `{} - MultiDict().keys()` and similar operations #6 2.0.0 (2016-07-28) ------------------ * Switch from uppercase approach for case-insensitive string to `str.title()` #5 * Deprecase `upstr` class in favor of `istr` alias. 1.2.2 (2016-08-02) ------------------ * Don't crash on `{} - MultiDict().keys()` and similar operations #6 1.2.1 (2016-07-21) ------------------ * Don't expose `multidict.__version__` 1.2.0 (2016-07-16) ------------------ * Make `upstr(upstr('abc'))` much faster 1.1.0 (2016-07-06) ------------------ * Don't double-iterate during MultiDict initialization #3 * Fix CIMultiDict.pop: it is case insensitive now #1 * Provide manylinux wheels as well as Windows ones 1.0.3 (2016-03-24) ------------------ * Add missing MANIFEST.in 1.0.2 (2016-03-24) ------------------ * Fix setup build 1.0.0 (2016-02-19) ------------------ * Initial implementation