o
    _~#go
                     @   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   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/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   )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dtyper'   )
r%   setr   r&   pdSeriesobjectr.   r+   r!   )r#   	registrarbeforeoafterr   r   r   test_register6   s   	"r9   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%   r2   r3   api
extensionsregister_series_accessorr&   r.   r#   r+   r,   )sr   r   r   test_accessor_worksI   s   "r?   c               	   C   s   d} t jt| dF ttjd' ttjdd tjj	dt
 tddg}|jjdks0J W d    n1 s:w   Y  W d    d S W d    d S 1 sRw   Y  d S )Nz.*MyAccessor.*fake.*Series.*matchfake{   r   r:   r'   )tmassert_produces_warningUserWarningr%   r2   r3   setattrr;   r<   r=   r&   rB   r+   )rA   r>   r   r   r   test_overwrite_warnsT   s   "rH   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   c   s   z1test_raises_attribute_error.<locals>.Bad.__init__r   )r   r   r   r   r   r   r   r   Bada   s    rL   rJ   r@   r/   )r%   r2   r3   r;   r<   r=   pytestraisesr    r4   rI   )rL   r   r   r   test_raises_attribute_error^   s   "rO   r   )collections.abcr   
contextlibrM   pandasr2   pandas._testing_testingrD   pandas.corer   r   contextmanagerr%   r&   markparametrizer3   r;   r<   r=   	DataFrameregister_dataframe_accessorIndexregister_index_accessorr9   r?   rH   rO   r   r   r   r   <module>   s*    


