-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
/
Copy pathtyping_checks.py
61 lines (42 loc) · 1.48 KB
/
typing_checks.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
52
53
54
55
56
57
58
59
60
61
# mypy: allow-untyped-defs
"""File for checking typing issues.
This file is not executed, it is only checked by mypy to ensure that
none of the code triggers any mypy errors.
"""
from __future__ import annotations
import contextlib
from typing import Literal
from typing import Optional
from typing_extensions import assert_type
import pytest
from pytest import MonkeyPatch
from pytest import TestReport
# Issue #7488.
@pytest.mark.xfail(raises=RuntimeError)
def check_mark_xfail_raises() -> None:
pass
# Issue #7494.
@pytest.fixture(params=[(0, 0), (1, 1)], ids=lambda x: str(x[0]))
def check_fixture_ids_callable() -> None:
pass
# Issue #7494.
@pytest.mark.parametrize("func", [str, int], ids=lambda x: str(x.__name__))
def check_parametrize_ids_callable(func) -> None:
pass
# Issue #10999.
def check_monkeypatch_typeddict(monkeypatch: MonkeyPatch) -> None:
from typing import TypedDict
class Foo(TypedDict):
x: int
y: float
a: Foo = {"x": 1, "y": 3.14}
monkeypatch.setitem(a, "x", 2)
monkeypatch.delitem(a, "y")
def check_raises_is_a_context_manager(val: bool) -> None:
with pytest.raises(RuntimeError) if val else contextlib.nullcontext() as excinfo:
pass
assert_type(excinfo, Optional[pytest.ExceptionInfo[RuntimeError]])
# Issue #12941.
def check_testreport_attributes(report: TestReport) -> None:
assert_type(report.when, Literal["setup", "call", "teardown"])
assert_type(report.location, tuple[str, Optional[int], str])