1
+ import datetime as dt
2
+ from typing import (
3
+ Generic ,
4
+ Literal ,
5
+ Sequence ,
6
+ overload ,
7
+ )
8
+
1
9
import numpy as np
2
10
import pandas as pd
3
11
from pandas import Index
@@ -9,21 +17,51 @@ from pandas._libs.interval import (
9
17
)
10
18
from pandas ._typing import (
11
19
Axis ,
20
+ IntervalT ,
12
21
npt ,
13
22
)
14
23
15
24
from pandas .core .dtypes .generic import ABCExtensionArray
16
25
17
- class IntervalArray (IntervalMixin , ExtensionArray ):
26
+ class IntervalArray (IntervalMixin , ExtensionArray , Generic [ IntervalT ] ):
18
27
ndim : int = ...
19
28
can_hold_na : bool = ...
20
29
def __new__ (
21
- cls , data , closed = ..., dtype = ..., copy : bool = ..., verify_integrity : bool = ...
22
- ): ...
30
+ cls ,
31
+ data : Sequence [IntervalT ] | IntervalArray [IntervalT ],
32
+ closed : Literal ["left" , "right" , "both" , "neither" ] = ...,
33
+ dtype : pd .IntervalDtype = ...,
34
+ copy : bool = ...,
35
+ verify_integrity : bool = ...,
36
+ ) -> IntervalArray [IntervalT ]: ...
37
+ @overload
23
38
@classmethod
24
39
def from_breaks (
25
- cls , breaks , closed : str = ..., copy : bool = ..., dtype = ...
26
- ) -> IntervalArray : ...
40
+ cls , breaks : Sequence [int ], closed : str = ..., copy : bool = ..., dtype = ...
41
+ ) -> IntervalArray [Interval [int ]]: ...
42
+ @overload
43
+ @classmethod
44
+ def from_breaks (
45
+ cls , breaks : Sequence [float ], closed : str = ..., copy : bool = ..., dtype = ...
46
+ ) -> IntervalArray [Interval [float ]]: ...
47
+ @overload
48
+ @classmethod
49
+ def from_breaks (
50
+ cls ,
51
+ breaks : Sequence [pd .Timestamp | np .datetime64 | dt .datetime ],
52
+ closed : str = ...,
53
+ copy : bool = ...,
54
+ dtype = ...,
55
+ ) -> IntervalArray [Interval [pd .Timestamp ]]: ...
56
+ @overload
57
+ @classmethod
58
+ def from_breaks (
59
+ cls ,
60
+ breaks : Sequence [pd .Timedelta | np .timedelta64 | dt .timedelta ],
61
+ closed : str = ...,
62
+ copy : bool = ...,
63
+ dtype = ...,
64
+ ) -> IntervalArray [Interval [pd .Timedelta ]]: ...
27
65
@classmethod
28
66
def from_arrays (
29
67
cls , left , right , closed : str = ..., copy : bool = ..., dtype = ...
@@ -32,10 +70,10 @@ class IntervalArray(IntervalMixin, ExtensionArray):
32
70
def from_tuples (
33
71
cls , data , closed : str = ..., copy : bool = ..., dtype = ...
34
72
) -> IntervalArray : ...
35
- def __iter__ (self ): ...
73
+ def __iter__ (self ) -> IntervalT : ...
36
74
def __len__ (self ) -> int : ...
37
- def __getitem__ (self , value ): ...
38
- def __setitem__ (self , key , value ) -> None : ...
75
+ def __getitem__ (self , value : IntervalT ): ...
76
+ def __setitem__ (self , key : int , value : IntervalT ) -> None : ...
39
77
def __eq__ (self , other ): ...
40
78
def __ne__ (self , other ): ...
41
79
def fillna (self , value = ..., method = ..., limit = ...): ...
@@ -61,7 +99,7 @@ class IntervalArray(IntervalMixin, ExtensionArray):
61
99
def right (self ) -> Index : ...
62
100
@property
63
101
def closed (self ) -> str : ...
64
- def set_closed (self , closed ): ...
102
+ def set_closed (self , closed ) -> IntervalArray [ IntervalT ] : ...
65
103
@property
66
104
def length (self ) -> Index : ...
67
105
@property
@@ -70,11 +108,11 @@ class IntervalArray(IntervalMixin, ExtensionArray):
70
108
def is_non_overlapping_monotonic (self ) -> bool : ...
71
109
def __array__ (self , dtype = ...) -> np .ndarray : ...
72
110
def __arrow_array__ (self , type = ...): ...
73
- def to_tuples (self , na_tuple : bool = ...): ...
111
+ def to_tuples (self , na_tuple : bool = ...) -> npt . NDArray [ np . object_ ] : ...
74
112
def repeat (self , repeats , axis : Axis | None = ...): ...
75
113
def contains (
76
114
self , other : float | pd .Timestamp | pd .Timedelta
77
115
) -> npt .NDArray [np .bool_ ]: ...
78
- def overlaps (self , other : Interval ) -> bool : ...
116
+ def overlaps (self , other : Interval ) -> npt . NDArray [ np . bool_ ] : ...
79
117
@property
80
118
def is_empty (self ) -> npt .NDArray [np .bool_ ]: ...
0 commit comments