-
-
Notifications
You must be signed in to change notification settings - Fork 95
/
test_mypy.py
51 lines (40 loc) · 1.57 KB
/
test_mypy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import sys
import types
import pytest
import multidict
def test_classes_not_abstract() -> None:
d1 = multidict.MultiDict({"a": "b"}) # type: multidict.MultiDict[str]
d2 = multidict.CIMultiDict({"a": "b"}) # type: multidict.CIMultiDict[str]
d3 = multidict.MultiDictProxy(d1)
d4 = multidict.CIMultiDictProxy(d2)
d1.getone("a")
d2.getall("a")
d3.getone("a")
d4.getall("a")
@pytest.mark.skipif(
sys.version_info >= (3, 9),
reason="Python 3.9 GenericAlias cannot be used in isinstance()/issubclass() checks",
)
@pytest.mark.skipif(
sys.version_info < (3, 7),
reason="Python 3.5 and 3.6 has no __class_getitem__ method",
)
def test_class_getitem(_multidict) -> None:
assert issubclass(_multidict.MultiDict[str], _multidict.MultiDict)
assert issubclass(_multidict.MultiDictProxy[str], _multidict.MultiDictProxy)
assert issubclass(_multidict.CIMultiDict[str], _multidict.CIMultiDict)
assert issubclass(_multidict.CIMultiDictProxy[str], _multidict.CIMultiDictProxy)
@pytest.mark.skipif(
sys.version_info < (3, 9), reason="Python 3.9 is required for GenericAlias"
)
def test_generic_alias(_multidict) -> None:
assert _multidict.MultiDict[int] == types.GenericAlias(_multidict.MultiDict, (int,))
assert _multidict.MultiDictProxy[int] == types.GenericAlias(
_multidict.MultiDictProxy, (int,)
)
assert _multidict.CIMultiDict[int] == types.GenericAlias(
_multidict.CIMultiDict, (int,)
)
assert _multidict.CIMultiDictProxy[int] == types.GenericAlias(
_multidict.CIMultiDictProxy, (int,)
)