Ë
    u™ãj  ã                  óì   — d Z ddlmZ ddlmZ ddlmZ ddlZddlZ	ddl
mZmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZ ddlmZmZ erddlmZ ddlmZ dd„Z dd„Z!dd„Z"dd„Z#dd„Z$d„ Z%d„ Z&y)z;
Boilerplate functions used in defining binary operations.
é    )Úannotations)Úwraps)ÚTYPE_CHECKINGN)Úis_list_likeÚitem_from_zerodim)Úis_matching_na)ÚPandas4Warning)Úfind_stack_level)ÚABCDataFrameÚABCExtensionArrayÚABCIndexÚABCNumpyExtensionArrayÚ	ABCSeries)Úensure_wrapped_if_datetimelikeÚsanitize_array)ÚCallable)ÚFc                ó4   ‡ — g d¢}t        ˆ fd„|D «       «      S )N)Ú	__array__Ú
__dlpack__Ú__arrow_c_array__Ú__arrow_c_stream__c              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­w©N)Úhasattr)Ú.0ÚnameÚobjs     €úa/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/core/ops/common.pyú	<genexpr>z$has_castable_attr.<locals>.<genexpr>*   s   øè ø€ Ò4 dŒw�s˜D×!Ñ4ùs   ƒ)Úany)r   Úattrss   ` r   Úhas_castable_attrr#   (   s   ø€ ÚR€EÜÓ4¨eÔ4Ó4Ð4ó    c                ó„   — t        | t        j                  t        t        f«      r| j
                  dkD  rt        d«      ‚yy)z{
    Reject a multi-dimensional operand before any dtype-specific conversion,
    matching BaseMaskedArray (GH#62682).
    é   z(can only perform ops with 1-d structuresN)Ú
isinstanceÚnpÚndarrayr   r   ÚndimÚNotImplementedError©Úothers    r   Úraise_if_2dr.   -   s=   € ô 	�5œ2Ÿ:™:Ô'8Ô:PÐQÔRØ�J‰J˜ŠNä!Ð"LÓMÐMð ð 	Sr$   c           	     ó  — t        | «      r}t        | t        t        j                  t
        t        t        t        f«      sHt        | «      s<t        j                  dt        | «      j                  › d�t        t        «       ¬«       yyyy)a9  
    Warn when operating against a list-like that is neither a standard container
    (``list``, ``np.ndarray``) nor a pandas object nor array-castable.

    Such operations (e.g. with ``tuple``, ``range``, ``deque``) are deprecated
    (GH#62423) and will treat ``other`` as scalar-like in a future version.
    zOperation with zŠ is deprecated. In a future version these will be treated as scalar-like. To retain the old behavior, explicitly wrap in a Series instead.)Ú
stacklevelN)r   r'   Úlistr(   r)   r   r   r   r   r#   ÚwarningsÚwarnÚtypeÚ__name__r	   r
   r,   s    r   Úmaybe_warn_listliker6   ;   sx   € ô 	�UÔÜØÜ”2—:‘:Ô0´(¼IÄ|ÐTô
ô " %Ô(ä�‰Øœd 5›k×2Ñ2Ð3ð 4ð ô Ü'Ó)ö	
ð )ð	
ð 	r$   c                ó   ‡ — dˆ fd„}|S )z§
    Boilerplate for pandas conventions in arithmetic and comparison methods.

    Parameters
    ----------
    name : str

    Returns
    -------
    decorator
    c                ó   •— t        | ‰«      S r   )Ú_unpack_zerodim_and_defer)Úmethodr   s    €r   Úwrapperz)unpack_zerodim_and_defer.<locals>.wrapperb   s   ø€ Ü(¨°Ó6Ð6r$   )r:   r   Úreturnr   © )r   r;   s   ` r   Úunpack_zerodim_and_deferr>   U   s   ø€ õ7ð €Nr$   c                óX   ‡ ‡— |j                  d«      dv Št        ‰ «      ˆˆ fd„«       }|S )aM  
    Boilerplate for pandas conventions in arithmetic and comparison methods.

    Ensure method returns NotImplemented when operating against "senior"
    classes.  Ensure zero-dimensional ndarrays are always unpacked.

    Parameters
    ----------
    method : binary method
    name : str

    Returns
    -------
    method
    Ú_)ÚorÚxorÚandÚrorÚrxorÚrandc                óæ   •— t        |dd «      }|�|| j                  kD  rt        S t        |«      }t	        | t
        «      r)t	        |t        «      r‰st        |d «      }t        |«      } ‰| |«      S )NÚ__pandas_priority__)	ÚgetattrrH   ÚNotImplementedr   r'   r   r1   r   r   )Úselfr-   ÚprioÚ
is_logicalr:   s      €€r   Ú
new_methodz-_unpack_zerodim_and_defer.<locals>.new_methodz   ss   ø€ ä�uÐ3°TÓ:ˆØÐØ�d×.Ñ.Ò.ä%Ð%ä! %Ó(ˆä�tÔ.Ô/Ü˜5¤$Ô'Ùô # 5¨$Ó/ˆEÜ2°5Ó9ˆEá�d˜EÓ"Ð"r$   )Ústripr   )r:   r   rN   rM   s   `  @r   r9   r9   h   s6   ù€ ð  —‘˜C“Ð$OÐO€Jä
ˆ6ƒ]ô#ó ð#ð* Ðr$   c                óf   — t        |t        t        f«      rt        | |«      }|S | j                  }|S )a  
    Find the appropriate name to pin to an operation result.  This result
    should always be either an Index or a Series.

    Parameters
    ----------
    left : {Series, Index}
    right : object

    Returns
    -------
    name : object
        Usually a string
    )r'   r   r   Ú_maybe_match_namer   )ÚleftÚrightr   s      r   Úget_op_result_namerT   “   s6   € ô �%œ)¤XÐ.Ô/Ü   uÓ-ˆð €Kð �y‰yˆØ€Kr$   c                ó¨  — t        | d«      }t        |d«      }|rU|rS	 | j                  |j                  k(  r| j                  S t        | j                  |j                  «      r| j                  S y|r| j                  S |r|j                  S y# t        $ r1 t        | j                  |j                  «      r| j                  cY S Y yt        $ r Y yw xY w)a«  
    Try to find a name to attach to the result of an operation between
    a and b.  If only one of these has a `name` attribute, return that
    name.  Otherwise return a consensus name if they match or None if
    they have different names.

    Parameters
    ----------
    a : object
    b : object

    Returns
    -------
    name : str or None

    See Also
    --------
    pandas.core.common.consensus_name_attr
    r   N)r   r   r   Ú	TypeErrorÚ
ValueError)ÚaÚbÚa_hasÚb_hass       r   rQ   rQ   ©   s´   € ô( �A�vÓ€EÜ�A�vÓ€EÙ‘ð	Ø�v‰v˜Ÿ™ÒØ—v‘v�Ü §¡¨¯©Ô/à—v‘v�àñ 
Ø�v‰vˆÙ	Ø�v‰vˆØøô ò 	ä˜aŸf™f a§f¡fÔ-Ø—v‘v’ÙÜò 	áð	ús   ž$B Á+B Â5CÃCÃC)r<   Úbool)r<   ÚNone)r   Ústrr<   zCallable[[F], F])r:   r   r   r^   r<   r   )'Ú__doc__Ú
__future__r   Ú	functoolsr   Útypingr   r2   Únumpyr(   Úpandas._libs.libr   r   Úpandas._libs.missingr   Úpandas.errorsr	   Úpandas.util._exceptionsr
   Úpandas.core.dtypes.genericr   r   r   r   r   Úpandas.core.constructionr   r   Úcollections.abcr   Úpandas._typingr   r#   r.   r6   r>   r9   rT   rQ   r=   r$   r   ú<module>rl      sj   ðñõ #å Ý  Û ã ÷õ 0Ý (Ý 4÷õ ÷ñ
 Ý(å ó5ó
Nó
ó4ó&(òVó,+r$   