§
    	�’jw  ã                  ó¢   — 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dS )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)ÚFÚnameÚstrÚreturnúCallable[[F], F]c                ó   ‡ — dˆ fd„}|S )z§
    Boilerplate for pandas conventions in arithmetic and comparison methods.

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

    Returns
    -------
    decorator
    Úmethodr   r   c                ó$   •— t          | ‰¦  «        S )N)Ú_unpack_zerodim_and_defer)r   r   s    €úDC:\Projects\DSCons\.venv\Lib\site-packages\pandas\core\ops\common.pyÚwrapperz)unpack_zerodim_and_defer.<locals>.wrapper+   s   ø€ Ý(¨°Ñ6Ô6Ð6ó    )r   r   r   r   © )r   r   s   ` r   Úunpack_zerodim_and_deferr      s(   ø€ ð7ð 7ð 7ð 7ð 7ð 7ð €Nr   r   r   c                ón   ‡ ‡— |                      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        k    rt          S t          |¦  «        }t	          | t
          ¦  «        r6t	          |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   s›   ø€ å�uÐ3°TÑ:Ô:ˆØÐØ�dÔ.Ò.Ð.å%Ð%å! %Ñ(Ô(ˆå�tÕ.Ñ/Ô/ð	:å˜5¥$Ñ'Ô'ð	:ð ð	:õ # 5¨$Ñ/Ô/ˆEÝ2°5Ñ9Ô9ˆEàˆv�d˜EÑ"Ô"Ð"r   )Ústripr   )r   r   r.   r-   s   `  @r   r   r   1   sQ   øø€ ð  —’˜C‘”Ð$OÐO€Jå
ˆ6�]„]ð#ð #ð #ð #ð #ñ „]ð#ð* Ðr   c                ón   — t          |t          t          f¦  «        rt          | |¦  «        }n| 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_namer4   \   s8   € õ �%�)¥XÐ.Ñ/Ô/ð Ý   uÑ-Ô-ˆˆàŒyˆØ€Kr   c                óh  — t          | d¦  «        }t          |d¦  «        }|r}|r{	 | j        |j        k    r| j        S t          | j        |j        ¦  «        r| j        S dS # t          $ r' t          | j        |j        ¦  «        r	| j        cY S Y dS t          $ r Y dS w xY w|r| j        S |r|j        S dS )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   r1   r1   r   sï   € õ( �A�vÑÔ€EÝ�A�vÑÔ€EØð �ð ð	ØŒv˜œÒÐØ”v�Ý ¤¨¬Ñ/Ô/ð à”v�à�tøÝð 	ð 	ð 	å˜aœf a¤fÑ-Ô-ð Ø”v���Ø�4�4Ýð 	ð 	ð 	à�4�4ð	øøøð 
ð ØŒvˆØ	ð ØŒvˆØˆ4s   ¦A  ½ A  Á +BÂ	BÂBN)r   r   r   r   )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   r4   r1   r   r   r   ú<module>rG      sD  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à .Ð .Ð .Ð .Ð .Ð .Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
 ð !Ø(Ð(Ð(Ð(Ð(Ð(à Ð Ð Ð Ð Ð ðð ð ð ð&(ð (ð (ð (ðVð ð ð,+ð +ð +ð +ð +r   