1"""
2Multidict implementation.
3
4HTTP Headers and URL query string require specific data structure:
5multidict. It behaves mostly like a dict but it can have
6several values for the same key.
7"""
8
9from typing import TYPE_CHECKING
10
11from ._abc import MultiMapping, MutableMultiMapping
12from ._compat import USE_EXTENSIONS
13
14__all__ = (
15 "CIMultiDict",
16 "CIMultiDictProxy",
17 "MultiDict",
18 "MultiDictProxy",
19 "MultiMapping",
20 "MutableMultiMapping",
21 "getversion",
22 "istr",
23 "upstr",
24)
25
26__version__ = "6.7.0"
27
28
29if TYPE_CHECKING or not USE_EXTENSIONS:
30 from ._multidict_py import (
31 CIMultiDict,
32 CIMultiDictProxy,
33 MultiDict,
34 MultiDictProxy,
35 getversion,
36 istr,
37 )
38else:
39 from collections.abc import ItemsView, KeysView, ValuesView
40
41 from ._multidict import (
42 CIMultiDict,
43 CIMultiDictProxy,
44 MultiDict,
45 MultiDictProxy,
46 _ItemsView,
47 _KeysView,
48 _ValuesView,
49 getversion,
50 istr,
51 )
52
53 MultiMapping.register(MultiDictProxy)
54 MutableMultiMapping.register(MultiDict)
55 KeysView.register(_KeysView)
56 ItemsView.register(_ItemsView)
57 ValuesView.register(_ValuesView)
58
59
60upstr = istr