3
š…±b/	  ã               @   sš   d dl Z d dlZd dlZd dljZe jdd„ ƒZG dd„ dƒZ	ej
jdejejjjfejejjjfejejjjfgƒdd„ ƒZd	d
„ Zdd„ Zdd„ ZdS )é    Nc             c   sB   z
dV  W dyt | |ƒ W n tk
r.   Y nX | jj|ƒ X dS )z[Ensure that an attribute added to 'obj' during the test is
    removed when we're done
    N)ÚdelattrÚAttributeErrorÚ
_accessorsÚdiscard)ÚobjÚattr© r   úE/tmp/pip-build-1cvk89zm/pandas/pandas/tests/test_register_accessor.pyÚensure_removed	   s    
r
   c               @   s(   e Zd Zdd„ Zedd„ ƒZdd„ ZdS )Ú
MyAccessorc             C   s   || _ d| _d S )NÚitem)r   r   )Úselfr   r   r   r	   Ú__init__   s    zMyAccessor.__init__c             C   s   | j S )N)r   )r   r   r   r	   Úprop   s    zMyAccessor.propc             C   s   | j S )N)r   )r   r   r   r	   Úmethod!   s    zMyAccessor.methodN)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   r   r   r   r	   r      s   r   zobj, registrarc             C   sŒ   t | dƒ�x tt| ƒƒ}|dƒtƒ | tjk	r6| g ƒn
| g td�}|jjdksRt	‚tt| ƒƒ}||A dhkspt	‚d| j
ks~t	‚W d Q R X d S )NÚmine)Údtyper   )r
   ÚsetÚdirr   ÚpdÚSeriesÚobjectr   r   ÚAssertionErrorr   )r   Z	registrarZbeforeÚoÚafterr   r   r	   Útest_register%   s    	r   c           
   C   sn   t tjdƒ�X tjjjdƒtƒ tjddgƒ} | jj| ks>t	‚| jj
dksNt	‚| jjƒ dks`t	‚W d Q R X d S )Nr   é   é   r   )r
   r   r   ÚapiÚ
extensionsÚregister_series_accessorr   r   r   r   r   r   )Úsr   r   r	   Útest_accessor_works8   s    r&   c              C   s”   t jj} z|tjtƒ�6}t jjjdƒt	ƒ t jddgƒ}|jj
dksFt‚W d Q R X t|d jƒ}d|ksjt‚d|ksvt‚d|ks‚t‚W d | t j_X d S )NÚmeanr    r!   r   r   r   r   )r   r   r'   ÚtmZassert_produces_warningÚUserWarningr"   r#   r$   r   r   r   ÚstrÚmessage)r'   Úwr%   Úmsgr   r   r	   Útest_overwrite_warnsC   s    r.   c              C   sb   t tjdƒ�L tjjjdƒG dd„ dƒƒ} tjtdd�� tjg t	d�j
 W d Q R X W d Q R X d S )NÚbadc               @   s   e Zd Zdd„ ZdS )z(test_raises_attribute_error.<locals>.Badc             S   s   t dƒ‚d S )NÚwhoops)r   )r   Údatar   r   r	   r   Y   s    z1test_raises_attribute_error.<locals>.Bad.__init__N)r   r   r   r   r   r   r   r	   ÚBadW   s   r2   r0   )Úmatch)r   )r
   r   r   r"   r#   r$   ÚpytestZraisesr   r   r/   )r2   r   r   r	   Útest_raises_attribute_errorS   s    r5   )Ú
contextlibr4   Zpandasr   Zpandas._testingZ_testingr(   Úcontextmanagerr
   r   ÚmarkZparametrizer   r"   r#   r$   Z	DataFrameZregister_dataframe_accessorÚIndexZregister_index_accessorr   r&   r.   r5   r   r   r   r	   Ú<module>   s   
