3
Uédu  ã               @   st   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
mZmZ eeegef dœdd	„Zed
œdd„ZdS )z;
Boilerplate functions used in defining binary operations.
é    )Úwraps)ÚCallable)Úitem_from_zerodim)ÚF)ÚABCDataFrameÚABCIndexClassÚ	ABCSeries)ÚnameÚreturnc                s   t t dœ‡ fdd„}|S )z§
    Boilerplate for pandas conventions in arithmetic and comparison methods.

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

    Returns
    -------
    decorator
    )Úmethodr
   c                s
   t | ˆ ƒS )N)Ú_unpack_zerodim_and_defer)r   )r	   © úJ/var/www/html/virt/lib64/python3.6/site-packages/pandas/core/ops/common.pyÚwrapper   s    z)unpack_zerodim_and_defer.<locals>.wrapper)r   )r	   r   r   )r	   r   Úunpack_zerodim_and_defer   s    r   )r	   c                s(   |j dƒd
k‰ tˆƒ‡ ‡fd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
    Ú__ÚeqÚneÚltÚleÚgtÚgec                sZ   ˆ rt | tƒrt |tƒrn.x,tttgD ]}t | |ƒr6P t ||ƒr&tS q&W t|ƒ}ˆ| |ƒS )N)Ú
isinstancer   r   r   ÚNotImplementedr   )ÚselfÚotherÚcls)Úis_cmpr   r   r   Ú
new_method2   s    

z-_unpack_zerodim_and_defer.<locals>.new_method>   r   r   r   r   r   r   )Ústripr   )r   r	   r   r   )r   r   r   r       s    r   N)Ú__doc__Ú	functoolsr   Útypingr   Zpandas._libs.libr   Zpandas._typingr   Zpandas.core.dtypes.genericr   r   r   Ústrr   r   r   r   r   r   Ú<module>   s   