o
    7?e
                     @   s   d dl mZ d dlZd dlZd dlZd dlmZ d dl	m
Z
 dddZejded f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 )    )	GeneratorN)accessorreturnc                  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   yr   Nc                 S   s
   d| _ d S )N   )zself r   d/home/www/facesmatcher.com/pyenv/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).0Z	attr_namer   r   r   
<listcomp>   s    z&test_dirname_mixin.<locals>.<listcomp>r   r   )r   ZDirNamesMixindir)r   resultr   r   r   test_dirname_mixin   s   r   )NNNc                 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   method2   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Zdtyper%   )
r#   setr   r$   pdSeriesobjectr,   r)   r   )r!   Z	registrarbeforeoafterr   r   r   test_register6   s   	"r5   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#   r/   r0   api
extensionsregister_series_accessorr$   r,   r!   r)   r*   )sr   r   r   test_accessor_worksI   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   r6   r%   r   r$   r0   )r/   r0   r<   tmZassert_produces_warningUserWarningr7   r8   r9   r$   r)   strmessage)r<   wr:   msgr   r   r   test_overwrite_warnsT   s   rC   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    rG   rE   )matchr-   )r#   r/   r0   r7   r8   r9   pytestZraisesr   r1   rD   )rG   r   r   r   test_raises_attribute_errord   s   "rJ   r   )collections.abcr   
contextlibrI   Zpandasr/   Zpandas._testingZ_testingr=   Zpandas.corer   r   contextmanagerr#   r$   markZparametrizer0   r7   r8   r9   Z	DataFrameZregister_dataframe_accessorIndexZregister_index_accessorr5   r;   rC   rJ   r   r   r   r   <module>   s*    

