U
    ÎZjCG  ã                   @   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   úb/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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t‚t tdƒst‚t tdƒs*t‚t tdƒs8t‚d S )NÚ
get_optionÚ
set_optionÚreset_optionÚdescribe_option)ÚhasattrÚpdÚAssertionErrorr   r   r   r   Útest_api&   s    zTestConfig.test_apic              	   C   sJ   | j  d dg¡}|dƒ |d ƒ d}tjt|d�� |dƒ W 5 Q R X 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 5 Q R X d}tjt|d�� | j  ddd¡ W 5 Q R X tjt|d�� | j  ddd¡ W 5 Q R X d	}tjt|d�� | j  d
d¡ W 5 Q R X tjt|d�� | j  dd¡ W 5 Q R X d}tjt|d�� | j  dd¡ W 5 Q R X | 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 5 Q R X d| j jddd�ksÖt‚d| j jddd�ksît‚d| j jddd�k�st‚d| j jddd�k�s"t‚d	| j jddd�k�s<t‚d| j jd
dd�k�sVt‚d| j jddd�k�spt‚d| j jddd�k�sŠt‚d| j jddd�k�s¤t‚d| j jddd�k�s¾t‚d| j jddd�k�sØt‚| j  dd¡ d| j jddd�k�s t‚d S )Nr.   r/   r0   Ú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   r3   r   r   r   Útest_describe_optionX   s4    zTestConfig.test_describe_optionc              	   C   s¨   | j  ddd¡ d| j jddd�ks(t‚| j  d¡dks<t‚| j  dd	¡ | j  d
¡d	ks^t‚d}tjt|d�� | j  d¡ W 5 Q R X | j  	d¡ | j  
d
¡s¤t‚d S )NZKanBANr/   r0   ZkanbaNFr>   ZkanBaNZKanBanr9   ZkAnBaNú#No such keys\(s\): 'no_such_option'r$   Úno_such_option)r
   r   r   r!   r   r   r(   r)   r   rA   Ú_is_deprecatedr3   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sDt‚| j  d¡dksXt‚| j  d¡d kslt‚d}tjt|d	�� | j  d
¡ W 5 Q R X d S )Nr.   r/   r0   úb.cÚhullor6   úb.brC   r$   rD   )r
   r   r   r!   r(   r)   r   r3   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sDt‚| j  d¡dksXt‚| j  d¡d kslt‚| j  dd¡ | j  dd	¡ | j  dd
¡ | j  d¡dksªt‚| j  d¡d	ks¾t‚| j  d¡d
ksÒt‚d}tjt|d�� | j  dd ¡ W 5 Q R X d S )Nr.   r/   r0   rG   rH   r6   rI   r9   Úwurldr&   z No such keys\(s\): 'no.such.key'r$   r=   )r
   r   r   r!   r   r(   r)   r   r3   r   r   r   Útest_set_optionž   s    zTestConfig.test_set_optionc              	   C   s,   d}t jt|d�� | j ¡  W 5 Q R X d S )Nú4Must provide an even number of non-keyword argumentsr$   ©r(   r)   r*   r
   r   r3   r   r   r   Útest_set_option_empty_args³   s    z%TestConfig.test_set_option_empty_argsc              	   C   s2   d}t jt|d�� | j ddd¡ W 5 Q R X d S )NrM   r$   za.br9   rG   rN   r3   r   r   r   Útest_set_option_uneven_args¸   s    z&TestConfig.test_set_option_uneven_argsc              	   C   s.   d}t jt|d�� | j d¡ W 5 Q R X d S )NrM   r$   r9   rN   r3   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sDt‚| j  d¡dksXt‚| j  d¡d kslt‚| j  dddd dd	¡ | j  d¡dks–t‚| j  d¡d ksªt‚| j  d¡d	ks¾t‚d S )
Nr.   r/   r0   rG   rH   r6   rI   Ú2g      $@)r
   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 5 Q R X | j  dd¡ | j  dd¡ | j  dd¡ | j  dd ¡ tjt|d
�� | j  dd ¡ W 5 Q R X tjt|d
�� | j  dd¡ W 5 Q R X d}tjt|d
�� | j jddd| j jd� W 5 Q R X tjt|d
�� | j jddd| j jd� W 5 Q R X d}tjt|d
�� | j  dd¡ W 5 Q R X | 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 5 Q R X d S )Nr.   r/   r0   ©Ú	validatorÚdrG   rH   r6   z$Value must have type '<class 'int'>'r$   r1   ÚNOr9   rK   Úabz+Value must be a nonnegative integer or Noneza.b.c.d3éþÿÿÿz;Value must be an instance of <class 'str'>\|<class 'bytes'>r5   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,   rU   r   r   r   Útest_validationÑ   sL    "   ÿ   ÿ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sDt‚| j  d¡dksXt‚| j  dd¡ | j  dd	¡ | j  d¡dksˆt‚| j  d¡d	ksœt‚| j  d¡ | j  d¡dks¼t‚| j  d¡d	ksÐt‚| j  d¡ | j  d¡dksðt‚| j  d¡dk�st‚d S )
Nr.   r/   r0   rT   rG   rH   r6   r9   rK   ©r
   r   r]   Zis_strr   r!   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sDt‚| j  d¡dksXt‚| j  dd¡ | j  dd	¡ | j  d¡dksˆt‚| j  d¡d	ksœt‚| j  d
¡ | j  d¡dks¼t‚| j  d¡dksÐt‚d S )Nr.   r/   r0   rT   rG   rH   r6   r9   rK   Úallra   r   r   r   r   Útest_reset_option_all  s    z TestConfig.test_reset_option_allc              
   C   sB  | j  d¡ | j  d¡st‚tjdd��Z}t d¡ tjt	dd�� | j  
d¡ W 5 Q R X t|ƒdksjt‚dt|d	 ƒks~t‚W 5 Q R X | 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t‚dt|d	 ƒk�st‚dt|d	 ƒk�s2t‚d}tjt|d�� | j  d
¡ W 5 Q R X W 5 Q R X | j  dd¡ tjdd��D}t d¡ | j  
d¡ t|ƒdk�sªt‚dt|d	 ƒk�sÀt‚W 5 Q R X | j  ddd¡ | j  ddd¡ | j  
d¡dk�s t‚| j  
d¡dk�st‚| j jddd� tjdd��N}t d¡ | j  
d¡dk�sTt‚t|ƒdk�sft‚dt|d	 ƒk�s|t‚W 5 Q R X tjdd��F}t d¡ | j  dd¡ t|ƒdk�s¾t‚dt|d	 ƒk�sÔt‚W 5 Q R X tjdd��N}t d¡ | j  
d¡dk�st‚t|ƒdk�st‚dt|d	 ƒk�s4t‚W 5 Q R X d S )Nr<   T)ÚrecordÚalwayszNo such keys.s.: 'foo'r$   r/   Ú
deprecatedéÿÿÿÿr.   r0   rT   rG   rH   r6   Z	nifty_ver)Zremoval_verZ	eprecatedz1Option 'a' has already been defined as deprecatedzzounds!úd.azd.depr@   r:   Zbaz)r
   rA   rE   r!   ÚwarningsÚcatch_warningsÚsimplefilterr(   r)   ÚKeyErrorr   ÚlenÚstrr   r]   r   r   )r   Úwr,   r   r   r   Útest_deprecate_option  s^    

 
 
 
 
z TestConfig.test_deprecate_optionc              	   C   s\  | j  d¡�’ | j  ddd¡ | j  ddd¡ | j  d¡dksBt‚| j  d¡dksVt‚| j  dd¡ | j  dd	¡ | j  d¡dks†t‚| j  d¡d	ksšt‚W 5 Q R X | j  d
¡dks¸t‚| j  d¡d	ksÌt‚d| j jd
dd�ksät‚d| j jddd�ksüt‚| j  d
¡ | j  d¡ | j  d¡�2 | j  d¡dk�s8t‚| j  d¡dk�sNt‚W 5 Q R X d S )NÚbaser.   r/   Zdoc1r5   r9   r6   é   é   zbase.azbase.bFr>   )r
   Zconfig_prefixr   r   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sjt‚ˆd dkszt‚ˆ d= ˆd= ˆj  dd	¡ ˆ d dks¤t‚ˆd d	ks´t‚ˆ d= ˆd= ˆj  d¡ ˆ d dksÜt‚d S )
Nc                    s    ˆ   | ¡ ˆ  ˆj | ¡¡ d S rZ   )Úappendr
   r   ©Úkey©r8   r   r+   r   r   Úcallbackx  s    
z*TestConfig.test_callback.<locals>.callbackri   r<   ©Úcbzd.brh   ZfoozÚboo)r
   r   r   r!   r   )r   rz   r   ry   r   Útest_callbackt  s     zTestConfig.test_callbackc              
      s°   ‡fdd„‰ ˆj  dd¡ ˆ dƒ ˆj  dd¡�8 ˆ dƒ ˆj  dd¡� ˆ dƒ W 5 Q R X ˆ dƒ W 5 Q R X ˆ dƒ ˆj  dd¡ ˆ dƒ ˆj  dd¡‡ fd	d
„ƒ}|ƒ  d S )Nc                    s   ˆ j  d¡| kst‚d S )Nr.   )r
   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   r7   ž  s    z-TestConfig.test_set_ContextManager.<locals>.f)r
   r   Úoption_contextr   )r   r7   r   )r€   r   r   Útest_set_ContextManager�  s    z"TestConfig.test_set_ContextManagerc              	      s  g ‰ ‡ fdd„}| j  dd¡ | j jdd|d� | j j}|jdksFt‚| j  dd¡� |jdksdt‚W 5 Q R X d|_| j  d¡dksˆt‚| j  d¡ |j| j  dd¡ks¬t‚d	}tj	t
|d
�� d|_W 5 Q R X tj	t
|d
�� d|_W 5 Q R X d|_tˆ ƒdk�st‚d S )Nc                    s   ˆ   d¡ d S )NT)rv   rw   ©Z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)   r   r5   Údisplayr‰   rn   )r   rˆ   r   r,   r   r‡   r   Útest_attribute_access¤  s&    z TestConfig.test_attribute_accessc              	   C   sx   d}d}d}| j  ||¡ | j  ||¡}| j  |¡|ks<t‚|� | j  |¡|ksVt‚W 5 Q R X | j  |¡|kstt‚d S )Né<   é
   r.   )r
   r   r…   r   r!   )r   Úoriginal_valueZcontext_valueZoption_nameÚctxr   r   r   Útest_option_context_scopeÂ  s    z$TestConfig.test_option_context_scopec              	   C   s:   | j j}tjtdd�� |j W 5 Q R X t|dƒr6t‚d S )NzNo such optionr$   Úbananas)r
   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-   r4   rB   rF   rJ   rL   rO   rP   rQ   rS   r`   rb   rd   rq   ru   r~   r†   r‹   r�   r’   r   r   r   r   r      s2   
	!')Ar   )
rj   r(   Zpandas._configr   r
   Zpandas._config.configr   Zpandasr    r   r   r   r   r   Ú<module>   s
   