a
    j=icCG                     @   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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-d. Zd/d0 Zd1S )2
TestConfigc                 C   sL   ddl m} t| _|t| jd| _|t| jd| _|t| jd| _d S )Nr   )deepcopy_global_config_deprecated_options_registered_options)copyr   cfgetattrgcdoro)clsr    r   p/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/config/test_config.pysetup_class   s
    zTestConfig.setup_classc                 C   sV   t | jdi  t | jd| j| jj t | jdi  t | jdi  | jdd d S )Nr   optionsr   r   Zchained_assignmentraise)setattrr
   ZDictWrapperr   register_optionselfr   r   r   setup_method   s
    zTestConfig.setup_methodc                 C   s4   t | jd| j t | jd| j t | jd| j d S )Nr   r   r   )r   r
   r   r   r   r   r   r   r   teardown_method!   s    zTestConfig.teardown_methodc                 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pdr   r   r   r   test_api&   s    zTestConfig.test_apic                 C   s^   | j d dg}|d |d  d}tjt|d |d W d    n1 sP0    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  | j ddd d}tjt|d  | j ddd W d    n1 sH0    Y  d}tjt|d  | j ddd W d    n1 s0    Y  tjt|d  | j ddd W d    n1 s0    Y  d	}tjt|d | j d
d W d    n1 s
0    Y  tjt|d | j dd W d    n1 sH0    Y  d}tjt|d | j dd W d    n1 s0    Y  | j ddd | j 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_option7   s&    ......zTestConfig.test_register_optionc                 C   s  | j ddd | j ddd | j d | j ddd | j ddd	 | j d
d | j dd | j dd | j jddd | j dd d}tjt|d | j d W d    n1 s0    Y  d| j jdddv sJ d| j jdddv sJ d| j jdddv sJ d| j jdddv s8J d	| j jdddv sRJ d| j jd
ddv slJ d| j jdddv sJ d| j jdddv sJ d| j jdddv sJ d| j jdddv sJ d| j jdddvsJ | j dd d| j jdddv sJ 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   r2   r   r   r   test_describe_optionX   s4    *zTestConfig.test_describe_optionc                 C   s   | j ddd d| j jdddv s(J | j ddks<J | j dd	 | j d
d	ks^J d}tjt|d | j d W d    n1 s0    Y  | j d | j 	d
sJ d S )NZKanBANr.   r/   ZkanbaNFr=   ZkanBaNZKanBanr8   ZkAnBaN#No such keys\(s\): 'no_such_option'r#   no_such_option)
r
   r   r   r   r   r'   r(   r   r@   _is_deprecatedr2   r   r   r   test_case_insensitive   s    *z TestConfig.test_case_insensitivec                 C   s   | j ddd | j ddd | j dd d | j ddksDJ | j ddksXJ | j dd u slJ d}tjt|d	 | j d
 W d    n1 s0    Y  d S )Nr-   r.   r/   b.chullor5   b.brB   r#   rC   )r
   r   r   r'   r(   r   r2   r   r   r   test_get_option   s    zTestConfig.test_get_optionc                 C   s  | j ddd | j ddd | j dd d | j ddksDJ | j ddksXJ | j dd u slJ | j dd | j dd	 | j dd
 | j ddksJ | j dd	ksJ | j dd
ksJ d}tjt|d | j dd  W d    n1 s
0    Y  d S )Nr-   r.   r/   rF   rG   r5   rH   r8   wurldr%   z No such keys\(s\): 'no.such.key'r#   r<   )r
   r   r   r   r'   r(   r   r2   r   r   r   test_set_option   s    zTestConfig.test_set_optionc                 C   s@   d}t jt|d | j  W d    n1 s20    Y  d S )N4Must provide an even number of non-keyword argumentsr#   r'   r(   r)   r
   r   r2   r   r   r   test_set_option_empty_args   s    z%TestConfig.test_set_option_empty_argsc                 C   sF   d}t jt|d  | jddd W d    n1 s80    Y  d S )NrL   r#   za.br8   rF   rM   r2   r   r   r   test_set_option_uneven_args   s    z&TestConfig.test_set_option_uneven_argsc                 C   sB   d}t jt|d | jd W d    n1 s40    Y  d S )NrL   r#   r8   rM   r2   r   r   r   ,test_set_option_invalid_single_argument_type   s    z7TestConfig.test_set_option_invalid_single_argument_typec                 C   s   | j ddd | j ddd | j dd d | j ddksDJ | j ddksXJ | j dd u slJ | j dddd dd	 | j ddksJ | j dd u sJ | j dd	ksJ d S )
Nr-   r.   r/   rF   rG   r5   rH   2g      $@)r
   r   r   r   r   r   r   r   test_set_option_multiple   s    z#TestConfig.test_set_option_multiplec                 C   s  | j jddd| j jd | j jddd| j jd | j jddd| j jd d	}tjt|d
( | j jddd| j jd W d    n1 s0    Y  | j dd | j dd | j dd | j dd  tjt|d
 | j dd  W d    n1 s0    Y  tjt|d
 | j dd W d    n1 s:0    Y  d}tjt|d
( | j jddd| j jd W d    n1 s0    Y  tjt|d
( | j jddd| j jd W d    n1 s0    Y  d}tjt|d
 | j dd W d    n1 s0    Y  | j 	d | j j
g}| j jddd d|d | j ddj | j dd  tjtdd
 | j dd W d    n1 s0    Y  d S )Nr-   r.   r/   	validatordrF   rG   r5   z$Value must have type '<class 'int'>'r#   r0   NOr8   rJ   abz+Value must be a nonnegative integer or Noneza.b.c.d3z;Value must be an instance of <class 'str'>\|<class 'bytes'>r4   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+   rT   r   r   r   test_validation   s@    6,.&&.zTestConfig.test_validationc                 C   s
  | j jddd| j jd | j jddd| j jd | j ddksDJ | j ddksXJ | j dd | j dd	 | j ddksJ | j dd	ksJ | j d | j ddksJ | j dd	ksJ | j d | j ddksJ | j ddksJ d S )
Nr-   r.   r/   rS   rF   rG   r5   r8   rJ   r
   r   r\   Zis_strr   r   r   r   r   r   r   test_reset_option   s    zTestConfig.test_reset_optionc                 C   s   | j jddd| j jd | j jddd| j jd | j ddksDJ | j ddksXJ | j dd | j dd	 | j ddksJ | j dd	ksJ | j d
 | j ddksJ | j ddksJ d S )Nr-   r.   r/   rS   rF   rG   r5   r8   rJ   allr`   r   r   r   r   test_reset_option_all  s    z TestConfig.test_reset_option_allc              	   C   s  | j d | j dsJ tjddx}td tjtdd | j 	d W d    n1 sd0    Y  t
|dks~J dt|d	 v sJ W d    n1 s0    Y  | j jd
dd| j jd | j ddd | j ddd | j jd
dd tjdd}td | j 	d
 t
|dks.J dt|d	 v sDJ dt|d	 v sZJ d}tjt|d | j d
 W d    n1 s0    Y  W d    n1 s0    Y  | j dd tjddN}td | j 	d t
|dksJ dt|d	 v sJ W d    n1 s*0    Y  | j ddd | j ddd | j 	ddksjJ | j 	ddksJ | j jddd tjddX}td | j 	ddksJ t
|dksJ dt|d	 v sJ W d    n1 s0    Y  tjddP}td | j dd t
|dks>J dt|d	 v sTJ W d    n1 sj0    Y  tjddX}td | j 	ddksJ t
|dksJ dt|d	 v sJ W d    n1 s0    Y  d S )Nr;   T)recordalwayszNo such keys.s.: 'foo'r#   r.   
deprecatedr-   r/   rS   rF   rG   r5   Z	nifty_ver)Zremoval_verZ	eprecatedz1Option 'a' has already been defined as deprecatedzzounds!d.azd.depr?   r9   Zbaz)r
   r@   rD   warningscatch_warningssimplefilterr'   r(   KeyErrorr   lenstrr   r\   r   r   )r   wr+   r   r   r   test_deprecate_option  s^    
*2
L
6
6
6
z TestConfig.test_deprecate_optionc                 C   s  | j d | j ddd | j ddd | j ddksBJ | j ddksVJ | j dd | j dd	 | j ddksJ | j dd	ksJ W d    n1 s0    Y  | j d
dksJ | j dd	ksJ d| j jd
ddv sJ d| j jdddv sJ | j d
 | j d | j d< | j ddksNJ | j ddksdJ W d    n1 sz0    Y  d S )Nbaser-   r.   Zdoc1r4   r8   r5         zbase.azbase.bFr=   )r
   Zconfig_prefixr   r   r   r   r   r   r   r   r   test_config_prefix\  s$    2zTestConfig.test_config_prefixc                    s   d g d g fdd}j jdd|d j jdd|d  d= d= j dd  d dksjJ d dkszJ  d= d= j dd	  d dksJ d d	ksJ  d= d= j d  d dksJ d S )
Nc                    s      |   j|  d S rY   )appendr
   r   keyr7   r   r*   r   r   callbackx  s    
z*TestConfig.test_callback.<locals>.callbackrh   r;   cbzd.brg   Zfoozboo)r
   r   r   r   )r   ry   r   rx   r   test_callbackt  s     zTestConfig.test_callbackc              	      s   fdd j dd  d j ddV  d j dd  d W d    n1 sf0    Y   d W d    n1 s0    Y   d j dd  d j dd fd	d
}|  d S )Nc                    s    j 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   r6     s    z-TestConfig.test_set_ContextManager.<locals>.f)r
   r   option_contextr   )r   r6   r   )r   r   r   test_set_ContextManager  s    &&z"TestConfig.test_set_ContextManagerc                    sJ  g   fdd}| j dd | j jdd|d | j j}|jdksFJ | j dd |jdksdJ W d    n1 sx0    Y  d|_| j ddksJ | j d |j| j 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sFJ d S )Nc                    s     d d S )NT)ru   rv   Zholderr   r   f3  s    z,TestConfig.test_attribute_access.<locals>.f3r-   r   crz   r   i  z.You can only set the value of existing optionsr#   r.   )r
   r   r   r-   r   r   r   r'   r(   r   r4   displayr   rm   )r   r   r   r+   r   r   r   test_attribute_access  s&    ,$&z TestConfig.test_attribute_accessc                 C   s   d}d}d}| j || | j ||}| j ||ks<J |$ | j ||ksVJ W d    n1 sj0    Y  | j ||ksJ d S )N<   
   r-   )r
   r   r   r   )r   original_valueZcontext_valueoption_namectxr   r   r   test_option_context_scope  s    2z$TestConfig.test_option_context_scopec                 C   sN   | j j}tjtdd |j W d    n1 s20    Y  t|drJJ 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__classmethodr   r   r   r!   r,   r3   rA   rE   rI   rK   rN   rO   rP   rR   r_   ra   rc   rp   rt   r}   r   r   r   r   r   r   r   r   r      s2   
	!')Ar   )
ri   r'   Zpandas._configr   r
   Zpandas._config.configr   Zpandasr    r   r   r   r   r   <module>   s
   