a
    Pf=                     @   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)Zautousec                 c   s~   |  b}|tdi  |tdttj |tdi  |tdi  tdd d V  W d    n1 sp0    Y  d S )N_global_configoptionsZ_deprecated_optionsZ_registered_optionsZchained_assignmentraise)contextsetattrcfZDictWrapperr   register_option)selfZmonkeypatchm r   X/var/www/ai-form-bot/venv/lib/python3.9/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s8J 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    n1 sN0    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 sD0    Y  d}tjt|d t ddd W d    n1 s0    Y  tjt|d t ddd W d    n1 s0    Y  d	}tjt|d t d
d W d    n1 s0    Y  tjt|d t dd W d    n1 s:0    Y  d}tjt|d t dd W d    n1 sz0    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*   s&    ,,,*,,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 s0    Y  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 sJ d	t jdddv s.J dt jd
ddv sFJ dt jdddv s^J dt jdddv svJ 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.e1Zdoc3zc.d.e2Zdoc4fzg.hk   ZrkeylfoozNo such keys\(s\)r   no.such.keyFZ_print_descZprecated	availablebar)r
   r   deprecate_optionr   r   r   r   r   r)   r   r   r   test_describe_optionK   s4    
(zTestConfig.test_describe_optionc                 C   s   t ddd dt jdddv s$J t ddks6J t dd	 t d
d	ksTJ d}tjt|d t d W d    n1 s0    Y  t d t 	d
sJ d S )NZKanBANr%   r&   ZkanbaNFr4   ZkanBaNZKanBanr/   ZkAnBaN#No such keys\(s\): 'no_such_option'r   no_such_option)
r
   r   r   r   r   r   r   r   r7   _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sNJ t dd u s`J d}tjt|d	 t d
 W d    n1 s0    Y  d S )Nr$   r%   r&   b.chullor,   b.br9   r   r:   )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sNJ t dd u s`J t dd t dd	 t dd
 t ddksJ t dd	ksJ t dd
ksJ d}tjt|d t dd  W d    n1 s0    Y  d S )Nr$   r%   r&   r=   r>   r,   r?   r/   wurldr   z No such keys\(s\): 'no.such.key'r   r3   )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    n1 s00    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   sD   d}t jt|d tddd W d    n1 s60    Y  d S )NrC   r   za.br/   r=   rD   r)   r   r   r   test_set_option_uneven_args   s    z&TestConfig.test_set_option_uneven_argsc                 C   s@   d}t jt|d td W d    n1 s20    Y  d S )NrC   r   r/   rD   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sNJ t dd u s`J t dddd dd	 t ddksJ t dd u sJ t dd	ksJ d S )
Nr$   r%   r&   r=   r>   r,   r?   2g      $@)r
   r   r   r   r   r   r   r   test_set_option_multiple   s    z#TestConfig.test_set_option_multiplec                 C   st  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 sx0    Y  t dd t dd t dd t dd  tjt|d
 t dd  W d    n1 s0    Y  tjt|d
 t dd W d    n1 s0    Y  d}tjt|d
$ t jdddt jd W d    n1 sf0    Y  tjt|d
$ t jdddt jd W d    n1 s0    Y  d}tjt|d
 t dd W d    n1 s0    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    n1 sf0    Y  d S )Nr$   r%   r&   	validatordr=   r>   r,   z$Value must have type '<class 'int'>'r   r'   NOr/   rA   abz+Value must be a nonnegative integer or Noneza.b.c.d3z;Value must be an instance of <class 'str'>\|<class 'bytes'>r+   c                   S   s   d S Nr   r   r   r   r   <lambda>       z,TestConfig.test_validation.<locals>.<lambda>z%.1fzValue must be a callable)r
   r   is_intZis_nonnegative_intZis_textr   r   r    r   r   is_callableformat)r   r"   rK   r   r   r   test_validation   s8    2*,44,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sLJ t dd t dd	 t ddksvJ t dd	ksJ t d t ddksJ t dd	ksJ t d t ddksJ t ddksJ d S )
Nr$   r%   r&   rJ   r=   r>   r,   r/   rA   r
   r   rS   Z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sLJ t dd t dd	 t ddksvJ t dd	ksJ t d
 t ddksJ t ddksJ d S )Nr$   r%   r&   rJ   r=   r>   r,   r/   rA   allrW   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H tjtdd t 	d W d    n1 sV0    Y  W d    n1 st0    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X t 	d d}tjt|d t d W d    n1 s
0    Y  W d    n1 s*0    Y  t d	d tjtdd t 	d	 W d    n1 sp0    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 s0    Y  tjtdd t dd W d    n1 sB0    Y  tjtdd$ t 	ddkspJ W d    n1 s0    Y  d S )Nr2   
deprecatedr   zNo such keys.s.: 'foo'r$   r%   r&   rJ   r=   r>   r,   Z	nifty_ver)Zremoval_verzeprecated.*nifty_verz1Option 'a' has already been defined as deprecatedzzounds!d.azd.depr6   r0   Z	eprecatedZbaz)r
   r7   r;   tmZassert_produces_warningFutureWarningr   r   KeyErrorr   r   rS   r   r   r)   r   r   r   test_deprecate_option  s8    
F
J*4,z TestConfig.test_deprecate_optionc                 C   sb  t d t ddd t ddd t ddks:J t ddksLJ t dd t dd	 t ddksvJ t dd	ksJ W d    n1 s0    Y  t d
dksJ t dd	ksJ dt jd
ddv sJ dt jdddv sJ t d
 t d t d8 t ddks*J t ddks>J W d    n1 sT0    Y  d S )Nbaser$   r%   Zdoc1r+   r/   r,         zbase.azbase.bFr4   )r
   Zconfig_prefixr   r   r   r   r   r   r   r   r   test_config_prefix4  s$    0

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sbJ d dksrJ  d= d= t dd	  d dksJ d d	ksJ  d= d= t d  d dksJ d S )
Nc                    s     |   t|  d S rP   )appendr
   r   keyr.   r!   r   r   callbackP  s    
z*TestConfig.test_callback.<locals>.callbackr\   r2   cbzd.bZfoozboo)r
   r   r   r   )r   ri   r   rh   r   test_callbackL  s     
zTestConfig.test_callbackc              	      s   dd  t dd  d t ddT  d t dd  d W d    n1 s\0    Y   d W d    n1 s0    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 )Nrt   r   r   rp   r   r   r-   v  s    z-TestConfig.test_set_ContextManager.<locals>.f)r
   r   option_contextr   )r   r-   r   ru   r   test_set_ContextManagere  s    &&
z"TestConfig.test_set_ContextManagerc                    s<  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 sp0    Y  d|_t ddksJ t d |jt ddksJ d	}tjt	|d
 d|_
W d    n1 s0    Y  tjt	|d
 d|_W d    n1 s0    Y  d|_t dks8J d S )Nc                    s     d d S )NT)re   rf   Zholderr   r   f3  s    z,TestConfig.test_attribute_access.<locals>.f3r$   r   crj   rq   i  z.You can only set the value of existing optionsr   r%   )r
   r   r   r$   rv   r   r   r   r   r   r+   displayrz   len)r   ry   r   r"   r   rx   r   test_attribute_access|  s&    ,
$&z TestConfig.test_attribute_accessc                 C   s   d}d}d}t || t ||}t ||ks6J |" t ||ksNJ W d    n1 sb0    Y  t ||ks~J d S )N<   
   r$   )r
   r   rv   r   )r   original_valueZcontext_valueZoption_namectxr   r   r   test_option_context_scope  s    0z$TestConfig.test_option_context_scopec                 C   sL   t j}tjtdd |j W d    n1 s00    Y  t|drHJ 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   Zfixturer   r   r#   r*   r8   r<   r@   rB   rE   rF   rG   rI   rV   rX   rZ   r`   rd   rn   rw   r}   r   r   r   r   r   r   r   
   s.   

	!'&)r   )r   Zpandas._configr   r
   Zpandas._config.configr   Zpandasr   Zpandas._testingZ_testingr]   r   r   r   r   r   <module>   s
   