
    I j                       S r SSKJr  SSKJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSKJr  \(       a  SSKJr  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)	signature)TYPE_CHECKINGTypeVar)cache_readonly)ABCDataFrame)Index)CallableN)	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        [        T5      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    n/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/core/indexes/extension.pycached"_inherit_from_data.<locals>.cached=   s    tzz400    c                X  > [        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S9$ U$ )Nr   Fr   dtypecopy)
r   r   
isinstancetype_simple_newr   r   	set_indexr	   r!   )r   resultr   wraps     r   fget _inherit_from_data.<locals>.fgetF   s     T2!&$tzz*:;;#Dz55f995MM#FL99%//55 iiv||RWXXr   c                4   > [        U R                  TU5        g r   )setattrr   )r   valuer   s     r   fset _inherit_from_data.<locals>.fsetP   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S9$ U$ )Ninplacezcannot use inplace with r   Fr    )
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<<eTTMr   )returnNone)
r   r#   propertyr$   r3   __doc__r   callabler   __signature__)	r   delegatecacher(   r   r7   r)   r.   r6   s	   `  `    @r   _inherit_from_datarA   #   s    ( 8T"D$!!T$Z%8%8<O%O1 #FO!\\FN#F+FZ MS1 !DM<<DLd)F2 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 an 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(   )rA   r,   )clsr   methr@   r?   namesr(   s      r   wrapperinherit_names.<locals>.wrapper   s.    D%dHEMDCt$  
r   )rD   type[_ExtensionIndexT]r9   rI    )rF   r?   r@   r(   rG   s   ```` r   inherit_namesrK   r   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   rJ   N)r9   znpt.NDArray[np.bool_])
r3   
__module____qualname____firstlineno__r<   __annotations__rP   r   rU   __static_attributes__rJ   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   _ndarrayrT   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   rJ   N)r9   
np.ndarray)r'   rg   r9   r   )	r3   rW   rX   rY   r<   rZ   ra   re   r[   rJ   r   r   r]   r]      s     '&#5r   r]   )FF)r   strr?   r$   r@   boolr(   ri   )
rF   z	list[str]r?   r$   r@   ri   r(   ri   r9   z:Callable[[type[_ExtensionIndexT]], type[_ExtensionIndexT]])r<   
__future__r   inspectr   typingr   r   pandas.util._decoratorsr   pandas.core.dtypes.genericr   pandas.core.indexes.baser	   collections.abcr
   numpynppandas._typingr   r   pandas.core.arraysr   pandas.core.arrays._mixinsr   r   rA   rK   r   r]   rJ   r   r   <module>rv      s    # 
 3 3 *(
 1F-5EF  BGL
LL&*L:>L` IN $-1AE?2!U !25. 5r   