
    Pi                        d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ erddlmZ dd	lZdd
lmZmZ ddlmZ ddlmZ  edd          Z	 d!d"dZ	 d!d#dZ G d de          Z G d d e          Zd	S )$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)boundFnamestrdelegatetypecacheboolwrapc                    t          |           t          t                    st                    j        dk    rZ|r( fd} |_        j        |_        t          |          }no fd}d fd} |_        j        |_        t          ||          }n?t                    s}n-fd} |_        j        |_        t                    |_	        |S )	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                .    t          | j                  S N)getattr_data)selfr   s    q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/core/indexes/extension.pycachedz"_inherit_from_data.<locals>.cached=   s    tz4000    c                Z   t          | j                  }rt          |t          | j                            r)t          |                               || j                  S t          |t                    r|                    |           S t          || j        |j	        d          S |S )Nr   Fr   dtypecopy)
r   r   
isinstancer   _simple_newr   r   	set_indexr	   r&   )r   resultr   r   s     r    fgetz _inherit_from_data.<locals>.fgetF   s     T22 Y!&$tz*:*:;; 6#Dzz55f495MMM#FL99 6%//555 div|RWXXXXr"   returnNonec                4    t          | j        |           d S r   )setattrr   )r   valuer   s     r    fsetz _inherit_from_data.<locals>.fsetP   s    
D%00000r"   c                   d|v r$t          dt          |           j                    | j        g|R i |}rt	          |t          | j                            r)t          |                               || j                  S t	          |t                    r|                    |           S t          || j        |j
        d          S |S )Ninplacezcannot use inplace with r$   Fr%   )
ValueErrorr   __name__r   r(   r)   r   r   r*   r	   r&   )r   argskwargsr+   attrr   s       r    methodz"_inherit_from_data.<locals>.method_   s    F"" !QDJJ<O!Q!QRRRT$*6t666v66F Ufd4:&6&677 2::11&ty1III55 2!++D111V$)6<eTTTTMr"   )r-   r.   )
r   r(   propertyr   r6   __doc__r   callabler   __signature__)	r   r   r   r   r!   r:   r,   r2   r9   s	   `  `    @r    _inherit_from_datar?   #   s5   ( 8T""D$!! 5/T$ZZ%8<O%O%O 	*1 1 1 1 1 #FO!\FN#F++FF     1 1 1 1 1 1 !DM<DLdD))FFd^^ /

	 
	 
	 
	 
	 
	 (Mr"   names	list[str]r-   :Callable[[type[_ExtensionIndexT]], type[_ExtensionIndexT]]c                      d fd}|S )a  
    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.
    clstype[_ExtensionIndexT]r-   c                Z    D ]&}t          |          }t          | ||           '| S )N)r   r   )r?   r0   )rD   r   methr   r   r@   r   s      r    wrapperzinherit_names.<locals>.wrapper   sB     	% 	%D%dHEMMMDCt$$$$
r"   )rD   rE   r-   rE    )r@   r   r   r   rH   s   ```` r    inherit_namesrJ   r   s:             Nr"   c                  <    e Zd ZU dZded<   d Zed	d            ZdS )
r   z>
    Index subclass for indexes backed by ExtensionArray.
    z+IntervalArray | NDArrayBackedExtensionArrayr   c                6    | j                             |          S )zE
        Convert value to be insertable to underlying array.
        )r   _validate_setitem_value)r   r1   s     r    _validate_fill_valuez#ExtensionIndex._validate_fill_value   s     z11%888r"   r-   npt.NDArray[np.bool_]c                4    | j                                         S r   )r   isnar   s    r    _isnanzExtensionIndex._isnan   s     z   r"   N)r-   rO   )r6   
__module____qualname__r<   __annotations__rN   r   rS   rI   r"   r    r   r      s]           76669 9 9 ! ! ! ^! ! !r"   c                  .    e Zd ZU dZded<   ddZdd	Zd
S )NDArrayBackedExtensionIndexzK
    Index subclass for indexes backed by NDArrayBackedExtensionArray.
    r   r   r-   
np.ndarrayc                    | j         j        S r   )r   _ndarrayrR   s    r    _get_engine_targetz.NDArrayBackedExtensionIndex._get_engine_target   s    z""r"   r+   r   c                n    |j         | j        j        j         k    sJ | j                            |          S r   )r&   r   r[   _from_backing_data)r   r+   s     r    _from_join_targetz-NDArrayBackedExtensionIndex._from_join_target   s3    |tz288888z,,V444r"   N)r-   rY   )r+   rY   r-   r   )r6   rT   rU   r<   rV   r\   r_   rI   r"   r    rX   rX      sV           '&&&# # # #5 5 5 5 5 5r"   rX   )FF)r   r   r   r   r   r   r   r   )
r@   rA   r   r   r   r   r   r   r-   rB   )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   r?   rJ   r   rX   rI   r"   r    <module>rl      s    # " " " " "             
 3 2 2 2 2 2 3 3 3 3 3 3 * * * * * * G((((((       
 100000FFFFFF7-5EFFF  BGL L L L L` IN    2! ! ! ! !U ! ! !25 5 5 5 5. 5 5 5 5 5r"   