o
    թZh=                     @   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    |  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optionsZ_deprecated_optionsZ_registered_optionsZchained_assignmentraise)contextsetattrcfZDictWrapperr   register_option)selfZmonkeypatchm r   V/var/www/html/lang_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.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   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 )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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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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&   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    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 )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   sB   d}t jt|d td W d    d S 1 sw   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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&   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   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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>   s    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   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&   rJ   r=   r>   r,   r/   rA   r
   r   rR   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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&   rJ   r=   r>   r,   r/   rA   allrV   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 )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   rR   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%   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(   

"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 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   rh   r   rg   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 )Nrs   r   r   ro   r   r   r-   v  s   z-TestConfig.test_set_ContextManager.<locals>.f)r
   r   option_contextr   )r   r-   r   rt   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)rd   re   Zholderr   r   f3  s   z,TestConfig.test_attribute_access.<locals>.f3r$   r   cri   rp   i  z.You can only set the value of existing optionsr   r%   )r
   r   r   r$   ru   r   r   r   r   r   r+   displayry   len)r   rx   r   r"   r   rw   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   ru   r   )r   original_valueZcontext_valueZ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   Zfixturer   r   r#   r*   r8   r<   r@   rB   rE   rF   rG   rI   rU   rW   rY   r_   rc   rm   rv   r|   r   r   r   r   r   r   r   
   s0    

	!'&)r   )r   Zpandas._configr   r
   Zpandas._config.configr   Zpandasr   Zpandas._testingZ_testingr\   r   r   r   r   r   <module>   s    