o
    _~#g=                     @   sF   d dl Z d dlmZ d dlmZ d dlZd dlm	Z
 G dd dZdS )    N)config)OptionErrorc                   @   s   e Zd Zejdddd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/S )0
TestConfigT)autousec                 c   s    |  2}|tdi  |tdttj |tdi  |tdi  tdd d V  W d    d S 1 s:w   Y  d S )N_global_configoptions_deprecated_options_registered_optionschained_assignmentraise)contextsetattrcfDictWrapperr   register_option)selfmonkeypatchm r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/config/test_config.pyclean_config   s   
"zTestConfig.clean_configc                 C   s<   t tdsJ t tdsJ t tdsJ t tdsJ d S )N
get_option
set_optionreset_optiondescribe_option)hasattrpdr   r   r   r   test_api   s   zTestConfig.test_apic                 C   s^   t d dg}|d |d  d}tjt|d |d W d    d S 1 s(w   Y  d S )N   zValue must be one of None\|12match皙?)r   is_one_of_factorypytestraises
ValueError)r   vmsgr   r   r   test_is_one_of_factory!   s   
"z!TestConfig.test_is_one_of_factoryc                 C   s  t ddd d}tjt|d t ddd W d    n1 s"w   Y  d}tjt|d t ddd W d    n1 sBw   Y  tjt|d t ddd W d    n1 s`w   Y  d	}tjt|d t d
d W d    n1 sw   Y  tjt|d t dd W d    n1 sw   Y  d}tjt|d t dd W d    n1 sw   Y  t ddd t ddd d S )Na   docz&Option 'a' has already been registeredr    z.Path prefix to option 'a' is already an optionza.b.c.d1a.b.c.d2zfor is a python keywordforr   za.for.bz(oh my goddess! is not a valid identifierzOh my Goddess!zk.b.c.d1zk.b.c.d2)r   r   r$   r%   r   r&   r   r(   r   r   r   test_register_option*   s2   zTestConfig.test_register_optionc                 C   s  t ddd t ddd t d t ddd t ddd	 t d
d t dd t dd t jddd t dd d}tjt|d t d W d    n1 sYw   Y  dt jdddv siJ dt jdddv stJ dt jdddv sJ dt jdddv sJ d	t jdddv sJ dt jd
ddv sJ dt jdddv sJ dt jdddv sJ dt jdddv sJ dt jdddv sJ dt jdddvsJ t dd dt jdddv sJ d S )Nr*   r+   r,   bdoc2zc.d.e1doc3zc.d.e2doc4fzg.hk   rkeylfoozNo such keys\(s\)r    no.such.keyF_print_descprecated	availablebar)r   r   deprecate_optionr$   r%   r   r   r   r/   r   r   r   test_describe_optionK   s6   
zTestConfig.test_describe_optionc                 C   s   t ddd dt jdddv sJ t ddksJ t dd	 t d
d	ks*J d}tjt|d t d W d    n1 sCw   Y  t d t 	d
sTJ d S )NKanBANr+   r,   kanbaNFr=   kanBaNKanBanr7   kAnBaN#No such keys\(s\): 'no_such_option'r    no_such_option)
r   r   r   r   r   r$   r%   r   rB   _is_deprecatedr/   r   r   r   test_case_insensitiver   s   
z TestConfig.test_case_insensitivec                 C   s   t ddd t ddd t dd d t ddksJ t ddks'J t dd u s0J d}tjt|d	 t d
 W d    d S 1 sJw   Y  d S )Nr*   r+   r,   b.chullor2   b.brI   r    rJ   )r   r   r   r$   r%   r   r/   r   r   r   test_get_option   s   "zTestConfig.test_get_optionc                 C   s   t ddd t ddd t dd d t ddksJ t ddks'J t dd u s0J t dd t dd	 t dd
 t ddksKJ t dd	ksTJ t dd
ks]J d}tjt|d t dd  W d    d S 1 sxw   Y  d S )Nr*   r+   r,   rM   rN   r2   rO   r7   wurldr"   z No such keys\(s\): 'no.such.key'r    r<   )r   r   r   r   r$   r%   r   r/   r   r   r   test_set_option   s    "zTestConfig.test_set_optionc                 C   s@   d}t jt|d t  W d    d S 1 sw   Y  d S )N4Must provide an even number of non-keyword argumentsr    r$   r%   r&   r   r   r/   r   r   r   test_set_option_empty_args   s   
"z%TestConfig.test_set_option_empty_argsc                 C   sF   d}t jt|d tddd W d    d S 1 sw   Y  d S )NrS   r    za.br7   rM   rT   r/   r   r   r   test_set_option_uneven_args   s   "z&TestConfig.test_set_option_uneven_argsc                 C   sB   d}t jt|d td W d    d S 1 sw   Y  d S )NrS   r    r7   rT   r/   r   r   r   ,test_set_option_invalid_single_argument_type   s   "z7TestConfig.test_set_option_invalid_single_argument_typec                 C   s   t ddd t ddd t dd d t ddksJ t ddks'J t dd u s0J t dddd dd	 t ddksCJ t dd u sLJ t dd	ksUJ d S )
Nr*   r+   r,   rM   rN   r2   rO   2g      $@)r   r   r   r   r   r   r   r   test_set_option_multiple   s   z#TestConfig.test_set_option_multiplec                 C   sn  t jdddt jd t jdddt jd t jdddt jd d	}tjt|d
 t jdddt jd W d    n1 s<w   Y  t dd t dd t dd t dd  tjt|d
 t dd  W d    n1 sqw   Y  tjt|d
 t dd W d    n1 sw   Y  d}tjt|d
 t jdddt jd W d    n1 sw   Y  tjt|d
 t jdddt jd W d    n1 sw   Y  d}tjt|d
 t dd W d    n1 sw   Y  t 	d t j
g}t jddd d|d t ddj t dd  tjtdd
 t dd W d    d S 1 s0w   Y  d S )Nr*   r+   r,   	validatordrM   rN   r2   z$Value must have type '<class 'int'>'r    r-   NOr7   rQ   abz+Value must be a nonnegative integer or Noneza.b.c.d3z;Value must be an instance of <class 'str'>\|<class 'bytes'>r1   c                   S   s   d S Nr   r   r   r   r   <lambda>   s    z,TestConfig.test_validation.<locals>.<lambda>z%.1fzValue must be a callable)r   r   is_intis_nonnegative_intis_textr$   r%   r&   r   r#   is_callableformat)r   r(   r[   r   r   r   test_validation   sF   $zTestConfig.test_validationc                 C   s   t jdddt jd t jdddt jd t ddksJ t ddks&J t dd t dd	 t ddks;J t dd	ksDJ t d t ddksRJ t dd	ks[J t d t ddksiJ t ddksrJ d S )
Nr*   r+   r,   rZ   rM   rN   r2   r7   rQ   r   r   rb   is_strr   r   r   r   r   r   r   test_reset_option   s   

zTestConfig.test_reset_optionc                 C   s   t jdddt jd t jdddt jd t ddksJ t ddks&J t dd t dd	 t ddks;J t dd	ksDJ t d
 t ddksRJ t ddks[J d S )Nr*   r+   r,   rZ   rM   rN   r2   r7   rQ   allrh   r   r   r   r   test_reset_option_all   s   
z TestConfig.test_reset_option_allc              	   C   s  t d t dsJ tjtdd$ tjtdd t 	d W d    n1 s+w   Y  W d    n1 s:w   Y  t j
dddt jd t 
d	d
d t 
dd
d t jddd tjtdd+ t 	d d}tjt|d t d W d    n1 sw   Y  W d    n1 sw   Y  t d	d tjtdd t 	d	 W d    n1 sw   Y  t 
ddd t 
ddd t 	ddksJ t 	ddksJ t jddd tjtdd t 	ddksJ W d    n1 sw   Y  tjtdd t dd W d    n	1 sw   Y  tjtdd t 	ddks1J W d    d S 1 s=w   Y  d S )Nr;   
deprecatedr    zNo such keys.s.: 'foo'r*   r+   r,   rZ   rM   rN   r2   	nifty_ver)removal_verzeprecated.*nifty_verz1Option 'a' has already been defined as deprecatedzzounds!d.azd.deprA   r8   	eprecatedbaz)r   rB   rK   tmassert_produces_warningFutureWarningr$   r%   KeyErrorr   r   rb   r   r   r/   r   r   r   test_deprecate_option  sL   

$z TestConfig.test_deprecate_optionc                 C   s^  t dF t ddd t ddd t ddksJ t ddks&J t dd t dd	 t ddks;J t dd	ksDJ W d    n1 sNw   Y  t d
dks\J t dd	kseJ dt jd
ddv spJ dt jdddv s{J t d
 t d t d t ddksJ t ddksJ W d    d S 1 sw   Y  d S )Nbaser*   r+   doc1r1   r7   r2         zbase.azbase.bFr=   )r   config_prefixr   r   r   r   r   r   r   r   r   test_config_prefix4  s(   

"zTestConfig.test_config_prefixc                    s   d g d g fdd}t jdd|d t jdd|d  d= d= t dd  d dks1J d dks9J  d= d= t dd	  d dksMJ d d	ksUJ  d= d= t d  d dkshJ d S )
Nc                    s     |   t|  d S r`   )appendr   r   keyr6   r'   r   r   callbackP  s   
z*TestConfig.test_callback.<locals>.callbackrp   r;   cbzd.bfoozboo)r   r   r   r   )r   r   r   r   r   test_callbackL  s    
zTestConfig.test_callbackc              	      s   dd  t dd  d t dd*  d t dd  d W d    n1 s.w   Y   d W d    n1 sAw   Y   d t dd  d t dd fd	d
}|  d S )Nc                 S   s   t d| ks	J d S )Nr*   )r   r   )valr   r   r   eqf  s   z.TestConfig.test_set_ContextManager.<locals>.eqr*   r            {   c                      s    d d S )Nr   r   r   r   r   r   r5   v  s   z-TestConfig.test_set_ContextManager.<locals>.f)r   r   option_contextr   )r   r5   r   r   r   test_set_ContextManagere  s    



z"TestConfig.test_set_ContextManagerc                    s8  g   fdd}t dd t jdd|d t j}|jdks J t dd |jdks.J W d    n1 s8w   Y  d|_t ddksIJ t d |jt ddksYJ d	}tjt	|d
 d|_
W d    n1 spw   Y  tjt	|d
 d|_W d    n1 sw   Y  d|_t dksJ d S )Nc                    s     d d S )NT)r~   r   holderr   r   f3  s   z,TestConfig.test_attribute_access.<locals>.f3r*   r   cr   r   i  z.You can only set the value of existing optionsr    r+   )r   r   r   r*   r   r   r   r$   r%   r   r1   displayr   len)r   r   r   r(   r   r   r   test_attribute_access|  s,   
z TestConfig.test_attribute_accessc                 C   s   d}d}d}t || t ||}t ||ksJ | t ||ks'J W d    n1 s1w   Y  t ||ks?J d S )N<   
   r*   )r   r   r   r   )r   original_valuecontext_valueoption_namectxr   r   r   test_option_context_scope  s   z$TestConfig.test_option_context_scopec                 C   sL   t j}tjtdd |j W d    n1 sw   Y  t|dr$J d S )NzNo such optionr    bananas)r   r   r$   r%   r   r   r   )r   r   r   r   r   test_dictwrapper_getattr  s
   z#TestConfig.test_dictwrapper_getattrN)__name__
__module____qualname__r$   fixturer   r   r)   r0   rC   rL   rP   rR   rU   rV   rW   rY   rg   rj   rl   rw   r}   r   r   r   r   r   r   r   r   r   r   
   s0    

	!'&)r   )r$   pandas._configr   r   pandas._config.configr   pandasr   pandas._testing_testingrs   r   r   r   r   r   <module>   s    