U
    f/eg
                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ dd 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 )    N)accessorc                  C   s:   G dd dt j} dd t|  D }|ddgks6td S )Nc                   @   s"   e Zd ZU dZeed< dd ZdS )ztest_dirname_mixin.<locals>.X   yc                 S   s
   d| _ d S )N   )zself r	   G/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/test_register_accessor.py__init__   s    z&test_dirname_mixin.<locals>.X.__init__N)__name__
__module____qualname__xint__annotations__r   r	   r	   r	   r
   X   s   
r   c                 S   s   g | ]}| d s|qS )_)
startswith).0	attr_namer	   r	   r
   
<listcomp>   s     
 z&test_dirname_mixin.<locals>.<listcomp>r   r   )r   ZDirNamesMixindirAssertionError)r   resultr	   r	   r
   test_dirname_mixin
   s    r   c                 c   sB   z
dV  W 5 zt | | W n tk
r.   Y nX | 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attrr	   r	   r
   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$   )r   r    r	   r	   r
   r   )   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
   method1   s    zMyAccessor.methodN)r   r   r   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"   setr   r#   pdSeriesobjectr*   r'   r   r   )r    Z	registrarbeforeoafterr	   r	   r
   test_register5   s    	r3   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-   r.   api
extensionsregister_series_accessorr#   r*   r    r   r'   r(   )sr	   r	   r
   test_accessor_worksH   s    r9   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   r4   r$   r   r#   r.   )r-   r.   r:   tmZassert_produces_warningUserWarningr5   r6   r7   r#   r'   r   strmessage)r:   wr8   msgr	   r	   r
   test_overwrite_warnsS   s    rA   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   i   s    z1test_raises_attribute_error.<locals>.Bad.__init__N)r   r   r   r   r	   r	   r	   r
   Badg   s   rE   rC   )matchr+   )r"   r-   r.   r5   r6   r7   pytestZraisesr   r/   rB   )rE   r	   r	   r
   test_raises_attribute_errorc   s
    rH   )
contextlibrG   Zpandasr-   Zpandas._testingZ_testingr;   Zpandas.corer   r   contextmanagerr"   r#   markZparametrizer.   r5   r6   r7   Z	DataFrameZregister_dataframe_accessorZIndexZregister_index_accessorr3   r9   rA   rH   r	   r	   r	   r
   <module>   s&   

