a
    oÝEbSG  ã                   @   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   ú_/home/ja/django-apps/lartica_env/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©ÚselfÚmethodr   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Úpd©r   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 sŠ0    Y  tjt|d��  | j  ddd¡ W d   ƒ n1 sÈ0    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 �sŠ0    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 sÈ0    Y  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 �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 �s†J ‚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 �sÔJ ‚d| j jddd�v�sîJ ‚| j  dd¡ d| j jddd�v �sJ ‚d S )Nr/   r0   r1   Ú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   r4   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 s’0    Y  | j  d¡ | j  	d
¡s¸J ‚d S )NZKanBANr0   r1   ZkanbaNFr?   ZkanBaNZKanBanr:   ZkAnBaNú#No such keys\(s\): 'no_such_option'r%   Úno_such_option)
r
   r   r   r   r   r)   r*   r   rB   Ú_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sDJ ‚| j  d¡dksXJ ‚| j  d¡d u slJ ‚d}tjt|d	�� | j  d
¡ W d   ƒ n1 s 0    Y  d S )Nr/   r0   r1   úb.cÚhullor7   úb.brD   r%   rE   )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sDJ ‚| j  d¡dksXJ ‚| j  d¡d u slJ ‚| j  dd¡ | j  dd	¡ | j  dd
¡ | j  d¡dksªJ ‚| j  d¡d	ks¾J ‚| j  d¡d
ksÒJ ‚d}tjt|d�� | j  dd ¡ W d   ƒ n1 �s
0    Y  d S )Nr/   r0   r1   rH   rI   r7   rJ   r:   Úwurldr'   z No such keys\(s\): 'no.such.key'r%   r>   )r
   r   r   r   r)   r*   r   r4   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 )Nú4Must 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   sF   d}t jt|d��  | j ddd¡ W d   ƒ n1 s80    Y  d S )NrN   r%   za.br:   rH   rO   r4   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 )NrN   r%   r:   rO   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sDJ ‚| j  d¡dksXJ ‚| j  d¡d u slJ ‚| j  dddd dd	¡ | j  d¡dks–J ‚| j  d¡d u sªJ ‚| j  d¡d	ks¾J ‚d S )
Nr/   r0   r1   rH   rI   r7   rJ   Ú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 sˆ0    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ü0    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 �s†0    Y  tjt|d
��( | j jddd| j jd� W d   ƒ n1 �sÎ0    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 �s˜0    Y  d S )Nr/   r0   r1   ©Ú	validatorÚdrH   rI   r7   z$Value must have type '<class 'int'>'r%   r2   ÚNOr:   rL   Úabz+Value must be a nonnegative integer or Noneza.b.c.d3éþÿÿÿz;Value must be an instance of <class 'str'>\|<class 'bytes'>r6   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-   rV   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sˆJ ‚| j  d¡d	ksœJ ‚| j  d¡ | j  d¡dks¼J ‚| j  d¡d	ksÐJ ‚| j  d¡ | j  d¡dksðJ ‚| j  d¡dk�sJ ‚d S )
Nr/   r0   r1   rU   rH   rI   r7   r:   rL   ©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sˆJ ‚| j  d¡d	ksœJ ‚| j  d
¡ | j  d¡dks¼J ‚| j  d¡dksÐJ ‚d S )Nr/   r0   r1   rU   rH   rI   r7   r:   rL   Úallra   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 s’J ‚W d   ƒ n1 s¦0    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 �s�0    Y  W d   ƒ n1 �s°0    Y  | j  dd¡ tjdd��N}t d¡ | j  	d¡ t
|ƒdk�sþJ ‚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�s€J ‚| j jddd� tjdd��X}t d¡ | j  	d¡dk�s¾J ‚t
|ƒdk�sÐJ ‚dt|d	 ƒv �sæJ ‚W d   ƒ n1 �sü0    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�s¢J ‚t
|ƒdk�s´J ‚dt|d	 ƒv �sÊJ ‚W d   ƒ n1 �sà0    Y  d S )Nr=   T)ÚrecordÚalwayszNo such keys.s.: 'foo'r%   r0   Ú
deprecatedéÿÿÿÿr/   r1   rU   rH   rI   r7   Z	nifty_ver)Zremoval_verZ	eprecatedz1Option 'a' has already been defined as deprecatedzzounds!úd.azd.deprA   r;   Zbaz)r
   rB   rF   Ú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s†J ‚| j  d¡d	ksšJ ‚W d   ƒ n1 s®0    Y  | j  d
¡dksÌJ ‚| j  d¡d	ksàJ ‚d| j jd
dd�v søJ ‚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/   r0   Zdoc1r6   r:   r7   é   é   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s¤J ‚ˆd d	ks´J ‚ˆ d= ˆd= ˆj  d¡ ˆ d dksÜJ ‚d S )
Nc                    s    ˆ   | ¡ ˆ  ˆj | ¡¡ d S r[   )Úappendr
   r   ©Úkey©r9   r   r,   r   r   Úcallbackx  s    
z*TestConfig.test_callback.<locals>.callbackri   r=   ©Úcbzd.brh   ZfoozÚboo)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¡�V ˆ dƒ ˆj  dd¡� ˆ dƒ W d   ƒ n1 sf0    Y  ˆ dƒ W d   ƒ n1 sŒ0    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   r8   ž  s    z-TestConfig.test_set_ContextManager.<locals>.f)r
   r   Úoption_contextr   )r   r8   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sœJ ‚| j  d¡ |j| j  dd¡ksÀJ ‚d	}tjt	|d
�� d|_
W d   ƒ n1 sî0    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)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%   r0   )r
   r   r   r/   r…   r   r   r)   r*   r   r6   Údisplayr‰   rn   )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sˆJ ‚d S )Né<   é
   r/   )r
   r   r…   r   )r   Úoriginal_valueZcontext_valueZ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.   r5   rC   rG   rK   rM   rP   rQ   rR   rT   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
   