o
    dB                     @   sB   d dl Z d dlZd dlmZ d dlmZ d dl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   d/var/www/html/visualizacion-main/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_optionL   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_insensitives   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dd;}td tjtdd t 	d W d    n1 s/w   Y  t
|dks<J dt|d	 v sFJ W d    n1 sPw   Y  t jd
ddt jd t ddd t ddd t jd
dd tjddL}td t 	d
 t
|dksJ dt|d	 v sJ dt|d	 v sJ d}tjt|d t d
 W d    n1 sw   Y  W d    n1 sw   Y  t dd tjdd$}td t 	d t
|dksJ dt|d	 v sJ W d    n	1 sw   Y  t ddd t ddd t 	ddksJ t 	ddks)J t jddd tjdd+}td t 	ddksFJ t
|dksOJ dt|d	 v sZJ W d    n	1 sew   Y  tjdd'}td t dd t
|dksJ dt|d	 v sJ W d    n	1 sw   Y  tjdd,}td t 	ddksJ t
|dksJ dt|d	 v sJ W d    d S 1 sw   Y  d S )Nr;   T)recordalwayszNo such keys.s.: 'foo'r    r+   
deprecatedr*   r,   rZ   rM   rN   r2   	nifty_ver)removal_ver	eprecatedz1Option 'a' has already been defined as deprecatedzzounds!d.azd.deprA   r8   baz)r   rB   rK   warningscatch_warningssimplefilterr$   r%   KeyErrorr   lenstrr   rb   r   r   )r   wr(   r   r   r   test_deprecate_option  sp   








$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_prefixM  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   callbacki  s   
z*TestConfig.test_callback.<locals>.callbackrt   r;   cbzd.brp   foozboo)r   r   r   r   )r   r   r   r   r   test_callbacke  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   eq  s   z.TestConfig.test_set_ContextManager.<locals>.eqr*   r            {   c                      s    d d S )Nr   r   r   r   r   r   r5     s   z-TestConfig.test_set_ContextManager.<locals>.f)r   r   option_contextr   )r   r5   r   r   r   test_set_ContextManager~  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   rz   )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   r}   r   r   r   r   r   r   r   r   r   r   r      s0    

	!'&Ar   )
rv   r$   pandas._configr   r   pandas._config.configr   pandasr   r   r   r   r   r   <module>   s    