U
    ¾mœ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)Zautousec              	   c   sj   |  ¡ �X}| tdi ¡ | tdt tj¡¡ | tdi ¡ | tdi ¡ t dd¡ d V  W 5 Q R X d S )NÚ_global_configÚoptionsZ_deprecated_optionsZ_registered_optionsZchained_assignmentÚraise)ÚcontextÚsetattrÚcfZDictWrapperr   Úregister_option)ÚselfZmonkeypatchÚm© r   úX/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/config/test_config.pyÚclean_config   s    
zTestConfig.clean_configc                 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ÚAssertionError©r   r   r   r   Útest_api   s    zTestConfig.test_apic              	   C   sH   t  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(  t  ddd¡ d}tjt|d�� t  ddd¡ W 5 Q R X d}tjt|d�� t  ddd¡ W 5 Q R X tjt|d�� t  ddd¡ W 5 Q R X d	}tjt|d�� t  d
d¡ W 5 Q R X tjt|d�� t  dd¡ W 5 Q R X d}tjt|d�� t  dd¡ W 5 Q R X 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+   s&    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 5 Q R X dt jddd�ks¾t‚dt jddd�ksÔt‚dt jddd�ksêt‚dt jddd�k�st‚d	t jddd�k�st‚dt jd
dd�k�s2t‚dt jddd�k�sJt‚dt jddd�k�sbt‚dt jddd�k�szt‚dt jddd�k�s’t‚dt jddd�k�sªt‚t  dd¡ dt jddd�k�sÎt‚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   r   Útest_describe_optionL   s4    
zTestConfig.test_describe_optionc              	   C   s˜   t  ddd¡ dt jddd�ks$t‚t  d¡dks6t‚t  dd	¡ t  d
¡d	ksTt‚d}tjt|d�� t  d¡ W 5 Q R X t  	d¡ t  
d
¡s”t‚d S )NZKanBANr&   r'   ZkanbaNFr5   ZkanBaNZKanBanr0   ZkAnBaNú#No such keys\(s\): 'no_such_option'r   Úno_such_option)r
   r   r   r   r   r   r   r    r   r8   Ú_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<t‚t  d¡dksNt‚t  d¡d ks`t‚d}tjt|d	�� t  d
¡ W 5 Q R X d S )Nr%   r&   r'   úb.cÚhullor-   úb.br:   r   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<t‚t  d¡dksNt‚t  d¡d ks`t‚t  dd¡ t  dd	¡ t  dd
¡ t  d¡dks–t‚t  d¡d	ks¨t‚t  d¡d
ksºt‚d}tjt|d�� t  dd ¡ W 5 Q R X d S )Nr%   r&   r'   r>   r?   r-   r@   r0   Úwurldr   z No such keys\(s\): 'no.such.key'r   r4   )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 5 Q R X d S )Nú4Must 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   s0   d}t jt|d�� t ddd¡ W 5 Q R X d S )NrD   r   za.br0   r>   rE   r*   r   r   r   Útest_set_option_uneven_args¬   s    z&TestConfig.test_set_option_uneven_argsc              	   C   s,   d}t jt|d�� t d¡ W 5 Q R X d S )NrD   r   r0   rE   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<t‚t  d¡dksNt‚t  d¡d ks`t‚t  dddd dd	¡ t  d¡dks†t‚t  d¡d ks˜t‚t  d¡d	ksªt‚d S )
Nr%   r&   r'   r>   r?   r-   r@   Ú2g      $@)r
   r   r   r   r   r   r   r   r   Útest_set_option_multiple¶   s    z#TestConfig.test_set_option_multiplec              	   C   sÞ  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 5 Q R X t  dd¡ t  dd¡ t  dd¡ t  dd ¡ tjt|d
�� t  dd ¡ W 5 Q R X tjt|d
�� t  dd¡ W 5 Q R X d}tjt|d
�� t jdddt jd� W 5 Q R X tjt|d
�� t jdddt jd� W 5 Q R X d}tjt|d
�� t  dd¡ W 5 Q R X 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 5 Q R X d S )Nr%   r&   r'   ©Ú	validatorÚdr>   r?   r-   z$Value must have type '<class 'int'>'r   r(   ÚNOr0   rB   Úabz+Value must be a nonnegative integer or Noneza.b.c.d3éþÿÿÿz;Value must be an instance of <class 'str'>\|<class 'bytes'>r,   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   Zis_callableÚformat)r   r#   rL   r   r   r   Útest_validationÅ   s8    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:t‚t  d¡dksLt‚t  dd¡ t  dd	¡ t  d¡dksvt‚t  d¡d	ksˆt‚t  d¡ t  d¡dks¤t‚t  d¡d	ks¶t‚t  d¡ t  d¡dksÒt‚t  d¡dksät‚d S )
Nr%   r&   r'   rK   r>   r?   r-   r0   rB   ©r
   r   rT   Zis_strr   r   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:t‚t  d¡dksLt‚t  dd¡ t  dd	¡ t  d¡dksvt‚t  d¡d	ksˆt‚t  d
¡ t  d¡dks¤t‚t  d¡dks¶t‚d S )Nr%   r&   r'   rK   r>   r?   r-   r0   rB   ÚallrW   r   r   r   r   Útest_reset_option_allý   s    
z TestConfig.test_reset_option_allc              
   C   s  t  d¡ t  d¡st‚tjdd��X}t d¡ tjt	dd�� t  
d¡ W 5 Q R X t|ƒdksdt‚dt|d	 ƒksxt‚W 5 Q R X 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��~}t d¡ t  
d
¡ t|ƒdksòt‚dt|d	 ƒk�st‚dt|d	 ƒk�st‚d}tjt|d�� t  d
¡ W 5 Q R X W 5 Q R X t  dd¡ tjdd��B}t d¡ t  
d¡ t|ƒdk�s�t‚dt|d	 ƒk�s¦t‚W 5 Q R X t  ddd¡ t  ddd¡ t  
d¡dk�sàt‚t  
d¡dk�sôt‚t jddd� tjdd��L}t d¡ t  
d¡dk�s.t‚t|ƒdk�s@t‚dt|d	 ƒk�sVt‚W 5 Q R X tjdd��D}t d¡ t  dd¡ t|ƒdk�s–t‚dt|d	 ƒk�s¬t‚W 5 Q R X tjdd��L}t d¡ t  
d¡dk�sât‚t|ƒdk�sôt‚dt|d	 ƒk�s
t‚W 5 Q R X d S )Nr3   T)ÚrecordÚalwayszNo such keys.s.: 'foo'r   r&   Ú
deprecatedéÿÿÿÿr%   r'   rK   r>   r?   r-   Z	nifty_ver)Zremoval_verZ	eprecatedz1Option 'a' has already been defined as deprecatedzzounds!úd.azd.depr7   r1   Zbaz)r
   r8   r<   r   ÚwarningsÚcatch_warningsÚsimplefilterr   r    ÚKeyErrorr   ÚlenÚstrr   rT   r   r   )r   Úwr#   r   r   r   Útest_deprecate_option  s^    





 
 
 
z TestConfig.test_deprecate_optionc              	   C   s8  t  d¡�‚ t  ddd¡ t  ddd¡ t  d¡dks:t‚t  d¡dksLt‚t  dd¡ t  dd	¡ t  d¡dksvt‚t  d¡d	ksˆt‚W 5 Q R X t  d
¡dks¤t‚t  d¡d	ks¶t‚dt jd
dd�ksÌt‚dt jddd�ksât‚t  d
¡ t  d¡ t  d¡�. t  d¡dk�st‚t  d¡dk�s*t‚W 5 Q R X d S )NÚbaser%   r&   Zdoc1r,   r0   r-   é   é   zbase.azbase.bFr5   )r
   Zconfig_prefixr   r   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sbt‚ˆd dksrt‚ˆ d= ˆd= t  dd	¡ ˆ d dksšt‚ˆd d	ksªt‚ˆ d= ˆd= t  d¡ ˆ d dksÐt‚d S )
Nc                    s   ˆ   | ¡ ˆ  t | ¡¡ d S rQ   )Úappendr
   r   ©Úkey©r/   r"   r   r   Úcallbacki  s    
z*TestConfig.test_callback.<locals>.callbackr_   r3   ©Úcbzd.br^   ZfoozÚboo)r
   r   r   r   r   )r   rp   r   ro   r   Útest_callbacke  s     
zTestConfig.test_callbackc              
      s¢   dd„ ‰ t  dd¡ ˆ dƒ t  dd¡�6 ˆ dƒ t  dd¡� ˆ dƒ W 5 Q R X ˆ dƒ W 5 Q R X ˆ dƒ t  dd¡ ˆ dƒ t  dd¡‡ fd	d
„ƒ}|ƒ  d S )Nc                 S   s   t  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 )Nrz   r   r   ©rv   r   r   r.   �  s    z-TestConfig.test_set_ContextManager.<locals>.f)r
   r   Úoption_contextr   )r   r.   r   r{   r   Útest_set_ContextManager~  s    
z"TestConfig.test_set_ContextManagerc              	      sü   g ‰ ‡ fdd„}t  dd¡ t jdd|d� t j}|jdks@t‚t  dd¡� |jdks\t‚W 5 Q R X d|_t  d¡dks~t‚t  d¡ |jt  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)rl   rm   ©Zholderr   r   Úf3˜  s    z,TestConfig.test_attribute_access.<locals>.f3r%   r   Úcrq   rw   iô  z.You can only set the value of existing optionsr   r&   )r
   r   r   r%   r   r|   r   r   r   r    r   r,   Údisplayr€   rd   )r   r   r   r#   r   r~   r   Útest_attribute_access•  s&    
z TestConfig.test_attribute_accessc              	   C   sn   d}d}d}t  ||¡ t  ||¡}t  |¡|ks6t‚|� t  |¡|ksNt‚W 5 Q R X t  |¡|ksjt‚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   s8   t j}tjtdd�� |j W 5 Q R X t|dƒr4t‚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__r   Zfixturer   r   r$   r+   r9   r=   rA   rC   rF   rG   rH   rJ   rV   rX   rZ   rg   rk   rt   r}   r‚   r‡   r‰   r   r   r   r   r      s.   

	!'&Ar   )
r`   r   Zpandas._configr   r
   Zpandas._config.configr   Zpandasr   r   r   r   r   r   Ú<module>   s
   