@@ -670,13 +670,15 @@ def _from_inferred_categories(
670670 if  known_categories :
671671 # Recode from observation order to dtype.categories order. 
672672 categories  =  dtype .categories 
673-  codes  =  recode_for_categories (inferred_codes , cats , categories )
673+  codes  =  recode_for_categories (inferred_codes , cats , categories ,  copy = False )
674674 elif  not  cats .is_monotonic_increasing :
675675 # Sort categories and recode for unknown categories. 
676676 unsorted  =  cats .copy ()
677677 categories  =  cats .sort_values ()
678678
679-  codes  =  recode_for_categories (inferred_codes , unsorted , categories )
679+  codes  =  recode_for_categories (
680+  inferred_codes , unsorted , categories , copy = False 
681+  )
680682 dtype  =  CategoricalDtype (categories , ordered = False )
681683 else :
682684 dtype  =  CategoricalDtype (cats , ordered = False )
@@ -945,7 +947,7 @@ def _set_categories(self, categories, fastpath: bool = False) -> None:
945947
946948 super ().__init__ (self ._ndarray , new_dtype )
947949
948-  def  _set_dtype (self , dtype : CategoricalDtype , copy : bool   =   True ) ->  Self :
950+  def  _set_dtype (self , dtype : CategoricalDtype , * ,  copy : bool ) ->  Self :
949951 """ 
950952 Internal method for directly updating the CategoricalDtype 
951953
@@ -959,7 +961,7 @@ def _set_dtype(self, dtype: CategoricalDtype, copy: bool = True) -> Self:
959961 a (valid) instance of `CategoricalDtype`. 
960962 """ 
961963 codes  =  recode_for_categories (
962-  self .codes , self .categories , dtype .categories , copy 
964+  self .codes , self .categories , dtype .categories , copy = copy 
963965 )
964966 return  type (self )._simple_new (codes , dtype = dtype )
965967
@@ -1154,7 +1156,7 @@ def set_categories(
11541156 codes  =  cat ._codes 
11551157 else :
11561158 codes  =  recode_for_categories (
1157-  cat .codes , cat .categories , new_dtype .categories 
1159+  cat .codes , cat .categories , new_dtype .categories ,  copy = False 
11581160 )
11591161 NDArrayBacked .__init__ (cat , codes , new_dtype )
11601162 return  cat 
@@ -3006,7 +3008,7 @@ def _get_codes_for_values(
30063008
30073009
30083010def  recode_for_categories (
3009-  codes : np .ndarray , old_categories , new_categories , copy : bool   =   True 
3011+  codes : np .ndarray , old_categories , new_categories , * ,  copy : bool 
30103012) ->  np .ndarray :
30113013 """ 
30123014 Convert a set of codes for to a new set of categories 
@@ -3027,7 +3029,7 @@ def recode_for_categories(
30273029 >>> old_cat = pd.Index(["b", "a", "c"]) 
30283030 >>> new_cat = pd.Index(["a", "b"]) 
30293031 >>> codes = np.array([0, 1, 1, 2]) 
3030-  >>> recode_for_categories(codes, old_cat, new_cat) 
3032+  >>> recode_for_categories(codes, old_cat, new_cat, copy=True ) 
30313033 array([ 1, 0, 0, -1], dtype=int8) 
30323034 """ 
30333035 if  len (old_categories ) ==  0 :
0 commit comments