
     -il                       S r SSKJr  SSKJrJrJr  SSKJr  SSK	J
r
  SSKJr  \(       a  SSKrSSKJrJr  SS	KJr  SS
KJr  \" SSS9r S       SS jjr S         SS jjr " S S\5      r " S S\5      rg)z?
Shared methods for Index subclasses backed by ExtensionArray.
    )annotations)TYPE_CHECKINGCallableTypeVar)cache_readonly)ABCDataFrame)IndexN)	ArrayLikenpt)IntervalArray)NDArrayBackedExtensionArray_ExtensionIndexTExtensionIndex)boundc                  ^ ^^ [        UT 5      m[        T[        5      (       d  [        T5      R                  S:X  ag  U(       a+  U 4S jnT Ul        TR
                  Ul        [        U5      nU$ U U4S jnSU 4S jjnT Ul        TR
                  Ul        [        Xg5      n U$ [        T5      (       d  TnU$ UU4S jnT Ul        TR
                  Ul        U$ )a  
Make an alias for a method of the underlying ExtensionArray.

Parameters
----------
name : str
    Name of an attribute the class should inherit from its EA parent.
delegate : class
cache : bool, default False
    Whether to convert wrapped properties into cache_readonly
wrap : bool, default False
    Whether to wrap the inherited result in an Index.

Returns
-------
attribute, method, property, or cache_readonly
getset_descriptorc                0   > [        U R                  T5      $ N)getattr_data)selfnames    P/var/www/html/venv/lib/python3.13/site-packages/pandas/core/indexes/extension.pycached"_inherit_from_data.<locals>.cached:   s    tzz400    c                V  > [        U R                  T5      nT(       a  [        U[        U R                  5      5      (       a"  [        U 5      R	                  XR
                  S9$ [        U[        5      (       a  UR                  U 5      $ [        XR
                  UR                  S9$ U$ )Nr   r   dtype)
r   r   
isinstancetype_simple_newr   r   	set_indexr	   r    )r   resultr   wraps     r   fget _inherit_from_data.<locals>.fgetC   s     T2!&$tzz*:;;#Dz55f995MM#FL99%//55 iiv||LLr   c                4   > [        U R                  TU5        g r   )setattrr   )r   valuer   s     r   fset _inherit_from_data.<locals>.fsetM   s    

D%0r   c                  > SU;   a!  [        S[        U 5      R                   35      eT" U R                  /UQ70 UD6nT(       a  [	        U[        U R                  5      5      (       a"  [        U 5      R                  X0R                  S9$ [	        U[        5      (       a  UR                  U 5      $ [        X0R                  UR                  S9$ U$ )Ninplacezcannot use inplace with r   r   )
ValueErrorr"   __name__r   r!   r#   r   r   r$   r	   r    )r   argskwargsr%   attrr&   s       r   method"_inherit_from_data.<locals>.method\   s    F" #;DJ<O<O;P!QRR$**6t6v6Ffd4::&677:11&yy1II55!++D11V))6<<HHMr   )returnNone)r   r!   propertyr"   r1   __doc__r   callable)	r   delegatecacher&   r   r5   r'   r,   r4   s	   `  `    @r   _inherit_from_datar>       s    ( 8T"D$!!T$Z%8%8<O%O1 #FO!\\FN#F+FX MQ1 !DM<<DLd)F0 M- d^^( M
	 Mr   c                $   ^ ^^^ SUUU U4S jjnU$ )z
Class decorator to pin attributes from an ExtensionArray to a Index subclass.

Parameters
----------
names : List[str]
delegate : class
cache : bool, default False
wrap : bool, default False
    Whether to wrap the inherited result in an Index.
c                J   > T H  n[        UTTTS9n[        XU5        M     U $ )N)r=   r&   )r>   r*   )clsr   methr=   r<   namesr&   s      r   wrapperinherit_names.<locals>.wrapper}   s.    D%dHEMDCt$  
r   )rA   type[_ExtensionIndexT]r7   rF    )rC   r<   r=   r&   rD   s   ```` r   inherit_namesrH   n   s      Nr   c                  >    \ rS rSr% SrS\S'   S r\S	S j5       rSr	g)
r      z6
Index subclass for indexes backed by ExtensionArray.
z+IntervalArray | NDArrayBackedExtensionArrayr   c                8    U R                   R                  U5      $ )z5
Convert value to be insertable to underlying array.
)r   _validate_setitem_value)r   r+   s     r   _validate_fill_value#ExtensionIndex._validate_fill_value   s     zz11%88r   c                6    U R                   R                  5       $ r   )r   isnar   s    r   _isnanExtensionIndex._isnan   s     zz  r   rG   N)r7   znpt.NDArray[np.bool_])
r1   
__module____qualname____firstlineno__r:   __annotations__rM   r   rR   __static_attributes__rG   r   r   r   r      s(     769 ! !r   c                  8    \ rS rSr% SrS\S'   S	S jrS
S jrSrg)NDArrayBackedExtensionIndex   zC
Index subclass for indexes backed by NDArrayBackedExtensionArray.
r   r   c                .    U R                   R                  $ r   )r   _ndarrayrQ   s    r   _get_engine_target.NDArrayBackedExtensionIndex._get_engine_target   s    zz"""r   c                    UR                   U R                  R                  R                   :X  d   eU R                  R                  U5      $ r   )r    r   r]   _from_backing_data)r   r%   s     r   _from_join_target-NDArrayBackedExtensionIndex._from_join_target   s9    ||tzz2288888zz,,V44r   rG   N)r7   
np.ndarray)r%   rd   r7   r
   )	r1   rT   rU   rV   r:   rW   r^   rb   rX   rG   r   r   rZ   rZ      s     '&#5r   rZ   )FF)r   strr<   r"   r=   boolr&   rf   )
rC   z	list[str]r<   r"   r=   rf   r&   rf   r7   z:Callable[[type[_ExtensionIndexT]], type[_ExtensionIndexT]])r:   
__future__r   typingr   r   r   pandas.util._decoratorsr   pandas.core.dtypes.genericr   pandas.core.indexes.baser	   numpynppandas._typingr
   r   pandas.core.arraysr   pandas.core.arrays._mixinsr   r   r>   rH   r   rZ   rG   r   r   <module>rq      s    #  3 3 *
 1F-5EF  BGK
KK&*K:>K^ IN $-1AE?2!U !25. 5r   