o
    i
                     @   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sJ d S )Nc                   @   s$   e Zd ZU dZeed< dddZdS )ztest_dirname_mixin.<locals>.X   yreturnNc                 S   s
   d| _ d S )N   )zself r
   ^/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/test_register_accessor.py__init__   s   
z&test_dirname_mixin.<locals>.X.__init__r   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   DirNamesMixindir)r   resultr
   r
   r   test_dirname_mixin
   s   r   c                 c   sn    zdV  W zt | | W n	 ty   Y nw | j| dS zt | | W n	 ty/   Y nw | j| w )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dZedd Zdd ZdS )

MyAccessorr   Nc                 C   s   || _ d| _d S )Nitem)r"   r&   )r	   r"   r
   r
   r   r   )   s   
zMyAccessor.__init__c                 C      | j S Nr&   r   r
   r
   r   prop-   s   zMyAccessor.propc                 C   r'   r(   r)   r   r
   r
   r   method1   s   zMyAccessor.methodr   )r   r   r   r   propertyr*   r+   r
   r
   r
   r   r%   (   s
    

r%   zobj, registrarc                 C   s   t | dB tt| }|dt | tjur| g n| g td}|jjdks)J tt| }||A dhks8J d| j	v s?J W d    d S 1 sJw   Y  d S )Nminedtyper&   )
r$   setr   r%   pdSeriesobjectr-   r*   r    )r"   	registrarbeforeoafterr
   r
   r   test_register5   s   	"r8   c                  C   s   t tjd2 tjjdt tddg} | jj| u sJ | jj	dks'J | j
 dks0J W d    d S 1 s;w   Y  d S )Nr-   r      r&   )r$   r1   r2   api
extensionsregister_series_accessorr%   r-   r"   r*   r+   )sr
   r
   r   test_accessor_worksH   s   "r>   c                  C   s   t jj} zMtt }t jjdt	 t ddg}|jj
dks#J W d    n1 s-w   Y  t|d j}d|v s?J d|v sEJ d|v sKJ W | t j_d S | t j_w )Nmeanr   r9   r&   r   r%   r2   )r1   r2   r?   tmassert_produces_warningUserWarningr:   r;   r<   r%   r*   strmessage)r?   wr=   msgr
   r
   r   test_overwrite_warnsS   s   rG   c               	   C   s   t tjd> tjjdG dd d} tjtdd tjg t	dj
 W d    n1 s/w   Y  W d    d S W d    d S 1 sGw   Y  d S )Nbadc                   @   s   e Zd ZdddZdS )z(test_raises_attribute_error.<locals>.Badr   Nc                 S   s   t d)Nwhoops)r   )r	   datar
   r
   r   r   i   s   z1test_raises_attribute_error.<locals>.Bad.__init__r   )r   r   r   r   r
   r
   r
   r   Badg   s    rK   rI   )matchr.   )r$   r1   r2   r:   r;   r<   pytestraisesr   r3   rH   )rK   r
   r
   r   test_raises_attribute_errorc   s   "rO   )
contextlibrM   pandasr1   pandas._testing_testingr@   pandas.corer   r   contextmanagerr$   r%   markparametrizer2   r:   r;   r<   	DataFrameregister_dataframe_accessorIndexregister_index_accessorr8   r>   rG   rO   r
   r
   r
   r   <module>   s(    

