U
    Mf*	                     @   s   d dl Z d dlZd dlZd dlmZ e jdd ZG dd dZ	e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 5 zt | | W n tk
r.   Y nX | j| X dS )zVEnsure that an attribute added to 'obj' during the test is
    removed when we're doneN)delattrAttributeError
_accessorsdiscard)objattr r   G/tmp/pip-unpacked-wheel-izj5yhnl/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 r   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 5 Q R X d S )NmineZdtyper   )r
   setdirr   pdSeriesobjectr   r   AssertionErrorr   )r   Z	registrarbeforeoafterr   r   r	   test_register$   s    	r#   c               	   C   sn   t tjdX tjjdt tddg} | jj| ks>t	| jj
dksNt	| j dks`t	W 5 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_works7   s    r*   c               	   C   s   t jj} z|tt6}t jjdt	 t ddg}|jj
dksFtW 5 Q R X t|d j}d|ksjtd|ksvtd|kstW 5 | 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_warnsB   s    r2   c               
   C   sb   t tjdL tjjdG dd d} tjtdd tjg t	dj
 W 5 Q R X W 5 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   X   s    z1test_raises_attribute_error.<locals>.Bad.__init__N)r   r   r   r   r   r   r   r	   BadV   s   r6   r4   )matchr   )r
   r   r   r&   r'   r(   pytestZraisesr   r   r3   )r6   r   r   r	   test_raises_attribute_errorR   s
    r9   )
contextlibr8   Zpandasr   Zpandas._testingZ_testingr,   contextmanagerr
   r   markZparametrizer   r&   r'   r(   Z	DataFrameZregister_dataframe_accessorZIndexZregister_index_accessorr#   r*   r2   r9   r   r   r   r	   <module>   s"   

