Ë
    *�£jÚ  ã                  ó    — d Z ddlmZ ddl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 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„ Zd„ Zy)z;
Boilerplate functions used in defining binary operations.
é    )Úannotations)Úwraps)ÚTYPE_CHECKING)Úitem_from_zerodim)Úis_matching_na)ÚABCExtensionArrayÚABCIndexÚ	ABCSeries)Úensure_wrapped_if_datetimelikeÚsanitize_array)ÚCallable)ÚFc                ó   ‡ — dˆ fd„}|S )z§
    Boilerplate for pandas conventions in arithmetic and comparison methods.

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

    Returns
    -------
    decorator
    c                ó   •— t        | ‰«      S )N)Ú_unpack_zerodim_and_defer)ÚmethodÚnames    €ú8C:\FundamentalWorkbench\vendor\pandas\core\ops\common.pyÚwrapperz)unpack_zerodim_and_defer.<locals>.wrapper+   s   ø€ Ü(¨°Ó6Ð6ó    )r   r   Úreturnr   © )r   r   s   ` r   Úunpack_zerodim_and_deferr      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__)	Úgetattrr#   ÚNotImplementedr   Ú
isinstancer   Úlistr   r   )ÚselfÚotherÚprioÚ
is_logicalr   s      €€r   Ú
new_methodz-_unpack_zerodim_and_defer.<locals>.new_methodC   ss   ø€ ä�uÐ3°TÓ:ˆØÐØ�d×.Ñ.Ò.ä%Ð%ä! %Ó(ˆä�tÔ.Ô/Ü˜5¤$Ô'Ùô # 5¨$Ó/ˆEÜ2°5Ó9ˆEá�d˜EÓ"Ð"r   )Ústripr   )r   r   r,   r+   s   `  @r   r   r   1   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_namer2   \   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)Úhasattrr   r   Ú	TypeErrorÚ
ValueError)ÚaÚbÚa_hasÚb_hass       r   r/   r/   r   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N)r   Ústrr   zCallable[[F], F])r   r   r   r;   r   r   )Ú__doc__Ú
__future__r   Ú	functoolsr   Útypingr   Úpandas._libs.libr   Úpandas._libs.missingr   Úpandas.core.dtypes.genericr   r	   r
   Úpandas.core.constructionr   r   Úcollections.abcr   Úpandas._typingr   r   r   r2   r/   r   r   r   Ú<module>rF      sJ   ðñõ #å Ý  å .Ý /÷ñ ÷ñ
 Ý(å óó&(òVó,+r   