3
K^*	                 @   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 )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-vifivh6b/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_works7   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st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_warnsB   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   X   s    z1test_raises_attribute_error.<locals>.Bad.__init__N)r   r   r   r   r   r   r   r	   BadV   s   r2   r0   )match)r   )r
   r   r   r"   r#   r$   pytestZraisesr   r   r/   )r2   r   r   r	   test_raises_attribute_errorR   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   
