forked from pandas-dev/pandas-stubs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_interval.py
86 lines (70 loc) · 3.42 KB
/
test_interval.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
from __future__ import annotations
import pandas as pd
from typing_extensions import assert_type
from tests import (
TYPE_CHECKING_INVALID_USAGE,
check,
)
def test_interval_init() -> None:
i1: pd.Interval = pd.Interval(1, 2, closed="both")
i2: pd.Interval = pd.Interval(1, right=2, closed="right")
i3: pd.Interval = pd.Interval(left=1, right=2, closed="left")
def test_interval_arithmetic() -> None:
i1: pd.Interval = pd.Interval(1, 2, closed="both")
i2: pd.Interval = pd.Interval(1, right=2, closed="right")
i3: pd.Interval = i1 + 1
i4: pd.Interval = i1 - 1
i5: pd.Interval = i1 * 2
i6: pd.Interval = i1 / 2
i7: pd.Interval = i1 // 2
def test_max_intervals() -> None:
i1 = pd.Interval(
pd.Timestamp("2000-01-01"), pd.Timestamp("2000-01-02"), closed="both"
)
i2 = pd.Interval(
pd.Timestamp("2000-01-01T12:00:00"), pd.Timestamp("2000-01-02"), closed="both"
)
def test_interval_length() -> None:
i1 = pd.Interval(
pd.Timestamp("2000-01-01"), pd.Timestamp("2000-01-03"), closed="both"
)
check(assert_type(i1.length, pd.Timedelta), pd.Timedelta)
check(assert_type(i1.left, pd.Timestamp), pd.Timestamp)
check(assert_type(i1.right, pd.Timestamp), pd.Timestamp)
check(assert_type(i1.mid, pd.Timestamp), pd.Timestamp)
i1.length.total_seconds()
inres = pd.Timestamp("2001-01-02") in i1
check(assert_type(inres, bool), bool)
idres = i1 + pd.Timedelta(seconds=20)
check(assert_type(idres, "pd.Interval[pd.Timestamp]"), pd.Interval, pd.Timestamp)
if TYPE_CHECKING_INVALID_USAGE:
20 in i1 # type: ignore[operator] # pyright: ignore[reportGeneralTypeIssues]
i1 + pd.Timestamp("2000-03-03") # type: ignore[operator] # pyright: ignore[reportGeneralTypeIssues]
i1 * 3 # type: ignore[operator] # pyright: ignore[reportGeneralTypeIssues]
i1 * pd.Timedelta(seconds=20) # type: ignore[operator] # pyright: ignore[reportGeneralTypeIssues]
i2 = pd.Interval(10, 20)
check(assert_type(i2.length, int), int)
check(assert_type(i2.left, int), int)
check(assert_type(i2.right, int), int)
check(assert_type(i2.mid, float), float)
i2inres = 15 in i2
check(assert_type(i2inres, bool), bool)
check(assert_type(i2 + 3, "pd.Interval[int]"), pd.Interval, int)
check(assert_type(i2 + 3.2, "pd.Interval[float]"), pd.Interval, float)
check(assert_type(i2 * 4, "pd.Interval[int]"), pd.Interval, int)
check(assert_type(i2 * 4.2, "pd.Interval[float]"), pd.Interval, float)
if TYPE_CHECKING_INVALID_USAGE:
pd.Timestamp("2001-01-02") in i2 # type: ignore[operator] # pyright: ignore[reportGeneralTypeIssues]
i2 + pd.Timedelta(seconds=20) # type: ignore[type-var] # pyright: ignore[reportGeneralTypeIssues]
i3 = pd.Interval(13.2, 19.5)
check(assert_type(i3.length, float), float)
check(assert_type(i3.left, float), float)
check(assert_type(i3.right, float), float)
check(assert_type(i3.mid, float), float)
i3inres = 15.4 in i3
check(assert_type(i3inres, bool), bool)
check(assert_type(i3 + 3, "pd.Interval[float]"), pd.Interval, float)
check(assert_type(i3 * 3, "pd.Interval[float]"), pd.Interval, float)
if TYPE_CHECKING_INVALID_USAGE:
pd.Timestamp("2001-01-02") in i3 # type: ignore[operator] # pyright: ignore[reportGeneralTypeIssues]
i3 + pd.Timedelta(seconds=20) # type: ignore[operator] # pyright: ignore[reportGeneralTypeIssues]