11
11
12
12
from pandas .core .dtypes .generic import ABCCategoricalIndex , ABCDateOffset , ABCIndexClass
13
13
14
- from pandas ._typing import OrderedType
14
+ from pandas ._typing import Ordered
15
15
16
16
from .base import ExtensionDtype
17
17
from .inference import is_bool , is_list_like
@@ -221,7 +221,11 @@ class CategoricalDtype(PandasExtensionDtype, ExtensionDtype):
221
221
_metadata = ("categories" , "ordered" , "_ordered_from_sentinel" )
222
222
_cache = {} # type: Dict[str_type, PandasExtensionDtype]
223
223
224
- def __init__ (self , categories = None , ordered : OrderedType = ordered_sentinel ):
224
+ def __init__ (
225
+ self , categories = None , ordered : Union [Ordered , object ] = ordered_sentinel
226
+ ):
227
+ # TODO(GH26403): Set type of ordered to Ordered
228
+ ordered = cast (Ordered , ordered )
225
229
self ._finalize (categories , ordered , fastpath = False )
226
230
227
231
@classmethod
@@ -234,7 +238,7 @@ def _from_fastpath(
234
238
235
239
@classmethod
236
240
def _from_categorical_dtype (
237
- cls , dtype : "CategoricalDtype" , categories = None , ordered : OrderedType = None
241
+ cls , dtype : "CategoricalDtype" , categories = None , ordered : Ordered = None
238
242
) -> "CategoricalDtype" :
239
243
if categories is ordered is None :
240
244
return dtype
@@ -335,9 +339,7 @@ def _from_values_or_dtype(
335
339
336
340
return dtype
337
341
338
- def _finalize (
339
- self , categories , ordered : OrderedType , fastpath : bool = False
340
- ) -> None :
342
+ def _finalize (self , categories , ordered : Ordered , fastpath : bool = False ) -> None :
341
343
342
344
if ordered is not None and ordered is not ordered_sentinel :
343
345
self .validate_ordered (ordered )
@@ -422,7 +424,7 @@ def __repr__(self):
422
424
return tpl .format (data , self ._ordered )
423
425
424
426
@staticmethod
425
- def _hash_categories (categories , ordered : OrderedType = True ) -> int :
427
+ def _hash_categories (categories , ordered : Ordered = True ) -> int :
426
428
from pandas .core .util .hashing import (
427
429
hash_array ,
428
430
_combine_hash_arrays ,
@@ -474,7 +476,7 @@ def construct_array_type(cls):
474
476
return Categorical
475
477
476
478
@staticmethod
477
- def validate_ordered (ordered : OrderedType ) -> None :
479
+ def validate_ordered (ordered : Ordered ) -> None :
478
480
"""
479
481
Validates that we have a valid ordered parameter. If
480
482
it is not a boolean, a TypeError will be raised.
@@ -552,8 +554,9 @@ def update_dtype(
552
554
"got {dtype!r}"
553
555
).format (dtype = dtype )
554
556
raise ValueError (msg )
555
-
556
- dtype = cast (CategoricalDtype , dtype )
557
+ else :
558
+ # from here on, dtype is a CategoricalDtype
559
+ dtype = cast (CategoricalDtype , dtype )
557
560
558
561
# dtype is CDT: keep current categories/ordered if None
559
562
new_categories = dtype .categories
@@ -586,7 +589,7 @@ def categories(self):
586
589
return self ._categories
587
590
588
591
@property
589
- def ordered (self ) -> OrderedType :
592
+ def ordered (self ) -> Ordered :
590
593
"""
591
594
Whether the categories have an ordered relationship.
592
595
"""
0 commit comments