Skip to content

Commit f58c47c

Browse files
author
Kevin Sheppard
committed
TST Add tests for dtypes
1 parent cc390f5 commit f58c47c

File tree

2 files changed

+113
-6
lines changed

2 files changed

+113
-6
lines changed

pandas-stubs/_libs/interval.pyi

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,10 @@ class Interval(IntervalMixin, Generic[_OrderableT]):
6363
def right(self: Interval[_OrderableT]) -> _OrderableT: ...
6464
@property
6565
def closed(self) -> IntervalClosedType: ...
66-
mid: _MidDescriptor
67-
length: _LengthDescriptor
66+
@property
67+
def mid(self) -> _MidDescriptor: ...
68+
@property
69+
def length(self) -> _LengthDescriptor: ...
6870
def __init__(
6971
self,
7072
left: _OrderableT,
@@ -142,10 +144,6 @@ class Interval(IntervalMixin, Generic[_OrderableT]):
142144
def __floordiv__(self: Interval[float], y: float) -> Interval[float]: ...
143145
def overlaps(self: Interval[_OrderableT], other: Interval[_OrderableT]) -> bool: ...
144146

145-
def intervals_to_interval_bounds(
146-
intervals: np.ndarray, validate_closed: bool = ...
147-
) -> tuple[np.ndarray, np.ndarray, str]: ...
148-
149147
class IntervalTree(IntervalMixin):
150148
def __init__(
151149
self,

tests/test_dtypes.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
from datetime import (
2+
timedelta,
3+
timezone,
4+
)
5+
6+
import numpy as np
7+
import pandas as pd
8+
from typing_extensions import assert_type
9+
10+
from tests import check
11+
12+
from pandas.tseries.offsets import (
13+
BusinessDay,
14+
CustomBusinessDay,
15+
Day,
16+
)
17+
18+
19+
def test_datetimetz_dtype() -> None:
20+
check(
21+
assert_type(pd.DatetimeTZDtype(unit="ns", tz="UTC"), pd.DatetimeTZDtype),
22+
pd.DatetimeTZDtype,
23+
)
24+
check(
25+
assert_type(
26+
pd.DatetimeTZDtype(unit="ns", tz=timezone(timedelta(hours=1))),
27+
pd.DatetimeTZDtype,
28+
),
29+
pd.DatetimeTZDtype,
30+
)
31+
32+
33+
def test_period_dtype() -> None:
34+
check(assert_type(pd.PeriodDtype(freq="D"), pd.PeriodDtype), pd.PeriodDtype)
35+
check(assert_type(pd.PeriodDtype(freq=Day()), pd.PeriodDtype), pd.PeriodDtype)
36+
check(
37+
assert_type(pd.PeriodDtype(freq=BusinessDay()), pd.PeriodDtype), pd.PeriodDtype
38+
)
39+
check(
40+
assert_type(pd.PeriodDtype(freq=CustomBusinessDay()), pd.PeriodDtype),
41+
pd.PeriodDtype,
42+
)
43+
44+
45+
def test_interval_dtype() -> None:
46+
check(
47+
assert_type(
48+
pd.Interval(pd.Timestamp("2017-01-01"), pd.Timestamp("2017-01-02")),
49+
pd.Interval,
50+
),
51+
pd.Interval,
52+
)
53+
check(assert_type(pd.Interval(1, 2, closed="left"), pd.Interval), pd.Interval)
54+
check(assert_type(pd.Interval(1.0, 2.5, closed="right"), pd.Interval), pd.Interval)
55+
check(assert_type(pd.Interval(1.0, 2.5, closed="both"), pd.Interval), pd.Interval)
56+
check(
57+
assert_type(pd.Interval(1.0, 2.5, closed="neither"), pd.Interval), pd.Interval
58+
)
59+
check(
60+
assert_type(
61+
pd.Interval(pd.Timedelta("1 days"), pd.Timedelta("2 days")), pd.Interval
62+
),
63+
pd.Interval,
64+
)
65+
66+
67+
def test_int64_dtype() -> None:
68+
check(assert_type(pd.Int64Dtype(), pd.Int64Dtype), pd.Int64Dtype)
69+
70+
71+
def test_categorical_dtype() -> None:
72+
check(
73+
assert_type(
74+
pd.CategoricalDtype(categories=["a", "b", "c"], ordered=True),
75+
pd.CategoricalDtype,
76+
),
77+
pd.CategoricalDtype,
78+
)
79+
check(
80+
assert_type(pd.CategoricalDtype(categories=[1, 2, 3]), pd.CategoricalDtype),
81+
pd.CategoricalDtype,
82+
)
83+
84+
85+
def test_sparse_dtype() -> None:
86+
check(assert_type(pd.SparseDtype(str), pd.SparseDtype), pd.SparseDtype)
87+
check(assert_type(pd.SparseDtype(complex), pd.SparseDtype), pd.SparseDtype)
88+
check(assert_type(pd.SparseDtype(bool), pd.SparseDtype), pd.SparseDtype)
89+
check(assert_type(pd.SparseDtype(int), pd.SparseDtype), pd.SparseDtype)
90+
check(assert_type(pd.SparseDtype(np.int64), pd.SparseDtype), pd.SparseDtype)
91+
check(assert_type(pd.SparseDtype(str), pd.SparseDtype), pd.SparseDtype)
92+
check(assert_type(pd.SparseDtype(float), pd.SparseDtype), pd.SparseDtype)
93+
check(assert_type(pd.SparseDtype(np.datetime64), pd.SparseDtype), pd.SparseDtype)
94+
check(assert_type(pd.SparseDtype(np.timedelta64), pd.SparseDtype), pd.SparseDtype)
95+
check(assert_type(pd.SparseDtype("datetime64"), pd.SparseDtype), pd.SparseDtype)
96+
check(assert_type(pd.SparseDtype(), pd.SparseDtype), pd.SparseDtype)
97+
98+
99+
def test_string_dtype() -> None:
100+
check(assert_type(pd.StringDtype("pyarrow"), pd.StringDtype), pd.StringDtype)
101+
check(assert_type(pd.StringDtype("python"), pd.StringDtype), pd.StringDtype)
102+
103+
104+
def test_boolean_dtype() -> None:
105+
check(assert_type(pd.BooleanDtype(), pd.BooleanDtype), pd.BooleanDtype)
106+
107+
108+
def test_arrow_dtype() -> None:
109+
check(assert_type(pd.ArrowDtype("int64"), pd.ArrowDtype), pd.ArrowDtype)

0 commit comments

Comments
 (0)