o
    iCG                     @   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   Z/var/www/edux/Edux_v2/venv/lib/python3.10/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   chained_assignmentraise)setattrr
   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sJ 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    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  | j ddd d}tjt|d | j ddd W d    n1 s$w   Y  d}tjt|d | j ddd W d    n1 sEw   Y  tjt|d | j ddd W d    n1 sdw   Y  d	}tjt|d | j d
d W d    n1 sw   Y  tjt|d | j dd W d    n1 sw   Y  d}tjt|d | j dd W d    n1 sw   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   s2   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 sdw   Y  d| j jdddv suJ 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 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/   r0   r1   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   r4   r   r   r   test_describe_optionX   s6   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 sIw   Y  | j d | j 	d
s\J d S )NKanBANr0   r1   kanbaNFrB   kanBaNKanBanr<   kAnBaN#No such keys\(s\): 'no_such_option'r%   no_such_option)
r
   r   r    r   r   r)   r*   r   rG   _is_deprecatedr4   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s"J | j ddks,J | j dd u s6J d}tjt|d	 | j d
 W d    d S 1 sQw   Y  d S )Nr/   r0   r1   b.chullor7   b.brN   r%   rO   )r
   r   r   r)   r*   r   r4   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s"J | j ddks,J | j dd u s6J | j dd | j dd	 | j dd
 | j ddksUJ | j dd	ks_J | j dd
ksiJ d}tjt|d | j dd  W d    d S 1 sw   Y  d S )Nr/   r0   r1   rR   rS   r7   rT   r<   wurldr'   z No such keys\(s\): 'no.such.key'r%   rA   )r
   r   r   r   r)   r*   r   r4   r   r   r   test_set_option   s    "zTestConfig.test_set_optionc                 C   sB   d}t jt|d | j  W d    d S 1 sw   Y  d S )N4Must provide an even number of non-keyword argumentsr%   r)   r*   r+   r
   r   r4   r   r   r   test_set_option_empty_args   s   "z%TestConfig.test_set_option_empty_argsc                 C   sH   d}t jt|d | jddd W d    d S 1 sw   Y  d S )NrX   r%   za.br<   rR   rY   r4   r   r   r   test_set_option_uneven_args   s   "z&TestConfig.test_set_option_uneven_argsc                 C   sD   d}t jt|d | jd W d    d S 1 sw   Y  d S )NrX   r%   r<   rY   r4   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s"J | j ddks,J | j dd u s6J | j dddd dd	 | j ddksKJ | j dd u sUJ | j dd	ks_J d S )
Nr/   r0   r1   rR   rS   r7   rT   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 sDw   Y  | j dd | j dd | j dd | j dd  tjt|d
 | j dd  W d    n1 s~w   Y  tjt|d
 | j dd W d    n1 sw   Y  d}tjt|d
 | j jddd| j jd W d    n1 sw   Y  tjt|d
 | j jddd| j jd W d    n1 sw   Y  d}tjt|d
 | j dd W d    n	1 sw   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    d S 1 sJw   Y  d S )Nr/   r0   r1   	validatordrR   rS   r7   z$Value must have type '<class 'int'>'r%   r2   NOr<   rV   abz+Value must be a nonnegative integer or Noneza.b.c.d3z;Value must be an instance of <class 'str'>\|<class 'bytes'>r6   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   sN   $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s"J | j ddks,J | j dd | j dd	 | j ddksDJ | j dd	ksNJ | j d | j ddks^J | j dd	kshJ | j d | j ddksxJ | j ddksJ d S )
Nr/   r0   r1   r_   rR   rS   r7   r<   rV   r
   r   rg   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s"J | j ddks,J | j dd | j dd	 | j ddksDJ | j dd	ksNJ | j d
 | j ddks^J | j ddkshJ d S )Nr/   r0   r1   r_   rR   rS   r7   r<   rV   allrm   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<}td tjtdd | j 	d W d    n1 s2w   Y  t
|dks?J dt|d	 v sIJ W d    n1 sSw   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N}td | j 	d
 t
|dksJ dt|d	 v sJ dt|d	 v sJ d}tjt|d | j d
 W d    n1 sw   Y  W d    n1 sw   Y  | j dd tjdd&}td | j 	d t
|dksJ dt|d	 v sJ W d    n	1 sw   Y  | j ddd | j ddd | j 	ddks/J | j 	ddks:J | j jddd tjdd,}td | j 	ddksYJ t
|dksbJ dt|d	 v smJ W d    n	1 sxw   Y  tjdd(}td | j dd t
|dksJ dt|d	 v sJ W d    n	1 sw   Y  tjdd-}td | j 	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%   r0   
deprecatedr/   r1   r_   rR   rS   r7   	nifty_ver)removal_ver	eprecatedz1Option 'a' has already been defined as deprecatedzzounds!d.azd.deprF   r=   baz)r
   rG   rP   warningscatch_warningssimplefilterr)   r*   KeyErrorr   lenstrr   rg   r   r   )r   wr-   r   r   r   test_deprecate_option  sp   





$z TestConfig.test_deprecate_optionc                 C   s  | j dN | j ddd | j ddd | j ddks!J | j ddks+J | j dd | j dd	 | j ddksCJ | j dd	ksMJ W d    n1 sWw   Y  | j d
dksfJ | j dd	kspJ d| j jd
ddv s|J d| j jdddv sJ | j d
 | j d | j d | j ddksJ | j ddksJ W d    d S 1 sw   Y  d S )Nbaser/   r0   doc1r6   r<   r7         zbase.azbase.bFrB   )r
   config_prefixr   r   r   r    r   r   r   r   r   test_config_prefix\  s(   "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s5J d dks=J  d= d= j dd	  d dksRJ d d	ksZJ  d= d= j d  d dksnJ d S )
Nc                    s      |   j|  d S re   )appendr
   r   keyr;   r   r,   r   r   callbackx  s   
z*TestConfig.test_callback.<locals>.callbackry   r@   cbzd.bru   foozboo)r
   r   r   r   )r   r   r   r   r   test_callbackt  s    zTestConfig.test_callbackc              	      s   fdd j dd  d j dd+  d j dd  d W d    n1 s3w   Y   d W d    n1 sFw   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   r:     s   z-TestConfig.test_set_ContextManager.<locals>.f)r
   r   option_contextr   )r   r:   r   )r   r   r   test_set_ContextManager  s    


z"TestConfig.test_set_ContextManagerc                    sF  g   fdd}| j dd | j jdd|d | j j}|jdks#J | j dd |jdks2J W d    n1 s<w   Y  d|_| j ddksNJ | j d |j| j ddks`J d	}tjt	|d
 d|_
W d    n1 sww   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%   r0   )r
   r   r   r/   r   r   r   r)   r*   r   r6   displayr   r   )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s+J W d    n1 s5w   Y  | j ||ksDJ 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   sN   | j 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__classmethodr   r   r   r#   r.   r5   rH   rQ   rU   rW   rZ   r[   r\   r^   rl   ro   rq   r   r   r   r   r   r   r   r   r   r   r   r      s4    
	!')Ar   )
r{   r)   pandas._configr   r
   pandas._config.configr   pandasr"   r   r   r   r   r   <module>   s    