o
    Û­jò=  ã                   @   sF   d dl Z d dlmZ d dlmZ d dlZd dlm	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)Úautousec                 c   s‚   � |  ¡ �2}| tdi ¡ | tdt tj¡¡ | tdi ¡ | tdi ¡ t dd¡ d V  W d   ƒ d S 1 s:w   Y  d S )NÚ_global_configÚoptionsÚ_deprecated_optionsÚ_registered_optionsÚchained_assignmentÚraise)ÚcontextÚsetattrÚcfÚDictWrapperr   Úregister_option)ÚselfÚmonkeypatchÚm© r   ú\/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/config/test_config.pyÚclean_config   s   €
"õzTestConfig.clean_configc                 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Úpd©r   r   r   r   Útest_api   s   zTestConfig.test_apic                 C   s^   t  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   t  ddd¡ d}tjt|d�� t  ddd¡ W d   ƒ n1 s"w   Y  d}tjt|d�� t  ddd¡ W d   ƒ n1 sBw   Y  tjt|d�� t  ddd¡ W d   ƒ n1 s`w   Y  d	}tjt|d�� t  d
d¡ W d   ƒ n1 sw   Y  tjt|d�� t  dd¡ W d   ƒ n1 sœw   Y  d}tjt|d�� t  dd¡ W d   ƒ n1 s»w   Y  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*   s2   ÿÿÿÿÿÿ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 d   ƒ n1 sYw   Y  dt jddd�v siJ ‚dt jddd�v stJ ‚dt jddd�v sJ ‚dt jddd�v sŠJ ‚d	t jddd�v s•J ‚dt jd
dd�v s J ‚dt jddd�v s«J ‚dt jddd�v s¶J ‚dt jddd�v sÁJ ‚dt jddd�v sÌJ ‚dt jddd�vs×J ‚t  dd¡ dt jddd�v sèJ ‚d S )Nr*   r+   r,   Ú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   r/   r   r   r   Útest_describe_optionK   s6   
ÿzTestConfig.test_describe_optionc                 C   s¬   t  ddd¡ dt jddd�v sJ ‚t  d¡dksJ ‚t  dd	¡ t  d
¡d	ks*J ‚d}tjt|d�� t  d¡ W d   ƒ n1 sCw   Y  t  d¡ t  	d
¡sTJ ‚d S )NÚKanBANr+   r,   ÚkanbaNFr=   ÚkanBaNÚKanBanr7   ÚkAnBaNú#No such keys\(s\): 'no_such_option'r    Úno_such_option)
r   r   r   r   r   r$   r%   r   rB   Ú_is_deprecatedr/   r   r   r   Útest_case_insensitiver   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J ‚t  d¡dks'J ‚t  d¡d u s0J ‚d}tjt|d	�� t  d
¡ W d   ƒ d S 1 sJw   Y  d S )Nr*   r+   r,   úb.cÚhullor2   úb.brI   r    rJ   )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J ‚t  d¡dks'J ‚t  d¡d u s0J ‚t  dd¡ t  dd	¡ t  dd
¡ t  d¡dksKJ ‚t  d¡d	ksTJ ‚t  d¡d
ks]J ‚d}tjt|d�� t  dd ¡ W d   ƒ d S 1 sxw   Y  d S )Nr*   r+   r,   rM   rN   r2   rO   r7   Úwurldr"   z No such keys\(s\): 'no.such.key'r    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 d   ƒ d S 1 sw   Y  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   sF   d}t jt|d�� t ddd¡ W d   ƒ d S 1 sw   Y  d S )NrS   r    za.br7   rM   rT   r/   r   r   r   Útest_set_option_uneven_args«   s   "ÿz&TestConfig.test_set_option_uneven_argsc                 C   sB   d}t jt|d�� t d¡ W d   ƒ d S 1 sw   Y  d S )NrS   r    r7   rT   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J ‚t  d¡dks'J ‚t  d¡d u s0J ‚t  dddd dd	¡ t  d¡dksCJ ‚t  d¡d u sLJ ‚t  d¡d	ksUJ ‚d S )
Nr*   r+   r,   rM   rN   r2   rO   Ú2g      $@)r   r   r   r   r   r   r   r   Útest_set_option_multipleµ   s   z#TestConfig.test_set_option_multiplec                 C   sn  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 d   ƒ n1 s<w   Y  t  dd¡ t  dd¡ t  dd¡ t  dd ¡ tjt|d
�� t  dd ¡ W d   ƒ n1 sqw   Y  tjt|d
�� t  dd¡ W d   ƒ n1 sŽw   Y  d}tjt|d
�� t jdddt jd� W d   ƒ n1 s±w   Y  tjt|d
�� t jdddt jd� W d   ƒ n1 sÒw   Y  d}tjt|d
�� t  dd¡ W d   ƒ n1 sñw   Y  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 d   ƒ d S 1 �s0w   Y  d S )Nr*   r+   r,   ©Ú	validatorÚdrM   rN   r2   z$Value must have type '<class 'int'>'r    r-   ÚNOr7   rQ   Úabz+Value must be a nonnegative integer or Noneza.b.c.d3éþÿÿÿz;Value must be an instance of <class 'str'>\|<class 'bytes'>r1   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Ä   sF   ÿÿÿÿÿÿ$ÿ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J ‚t  d¡dks&J ‚t  dd¡ t  dd	¡ t  d¡dks;J ‚t  d¡d	ksDJ ‚t  d¡ t  d¡dksRJ ‚t  d¡d	ks[J ‚t  d¡ t  d¡dksiJ ‚t  d¡dksrJ ‚d S )
Nr*   r+   r,   rZ   rM   rN   r2   r7   rQ   ©r   r   rb   Úis_strr   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J ‚t  d¡dks&J ‚t  dd¡ t  dd	¡ t  d¡dks;J ‚t  d¡d	ksDJ ‚t  d
¡ t  d¡dksRJ ‚t  d¡dks[J ‚d S )Nr*   r+   r,   rZ   rM   rN   r2   r7   rQ   Úallrh   r   r   r   r   Útest_reset_option_allü   s   
z TestConfig.test_reset_option_allc              	   C   sˆ  t  d¡ t  d¡sJ ‚tjtdd��$ tjtdd�� t  	d¡ W d   ƒ n1 s+w   Y  W d   ƒ n1 s:w   Y  t j
dddt jd� t  
d	d
d¡ t  
dd
d¡ t jddd� tjtdd��+ t  	d¡ d}tjt|d�� t  d¡ W d   ƒ n1 s„w   Y  W d   ƒ n1 s“w   Y  t  d	d¡ tjtdd�� t  	d	¡ W d   ƒ n1 sµw   Y  t  
ddd¡ t  
ddd¡ t  	d¡dksÑJ ‚t  	d¡dksÚJ ‚t jddd� tjtdd�� t  	d¡dksòJ ‚W d   ƒ n1 süw   Y  tjtdd�� t  dd¡ W d   ƒ n	1 �sw   Y  tjtdd�� t  	d¡dk�s1J ‚W d   ƒ d S 1 �s=w   Y  d S )Nr;   Ú
deprecatedr    zNo such keys.s.: 'foo'r*   r+   r,   rZ   rM   rN   r2   Ú	nifty_ver)Úremoval_verzeprecated.*nifty_verz1Option 'a' has already been defined as deprecatedzzounds!úd.azd.deprA   r8   Ú	eprecatedÚbaz)r   rB   rK   ÚtmÚassert_produces_warningÚFutureWarningr$   r%   ÚKeyErrorr   r   rb   r   r   r/   r   r   r   Útest_deprecate_option  sL   
ÿ€ÿ
ÿ€üÿÿÿ$ÿz TestConfig.test_deprecate_optionc                 C   s^  t  d¡�F t  ddd¡ t  ddd¡ t  d¡dksJ ‚t  d¡dks&J ‚t  dd¡ t  dd	¡ t  d¡dks;J ‚t  d¡d	ksDJ ‚W d   ƒ n1 sNw   Y  t  d
¡dks\J ‚t  d¡d	kseJ ‚dt jd
dd�v spJ ‚dt jddd�v s{J ‚t  d
¡ t  d¡ t  d¡� t  d¡dks”J ‚t  d¡dks�J ‚W d   ƒ d S 1 s¨w   Y  d S )NÚbaser*   r+   Údoc1r1   r7   r2   é   é   zbase.azbase.bFr=   )r   Úconfig_prefixr   r   r   r   r   r   r   r   r   Útest_config_prefix4  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s1J ‚ˆd dks9J ‚ˆ d= ˆd= t  dd	¡ ˆ d dksMJ ‚ˆd d	ksUJ ‚ˆ d= ˆd= t  d¡ ˆ d dkshJ ‚d S )
Nc                    s   ˆ   | ¡ ˆ  t | ¡¡ d S r`   )Úappendr   r   ©Úkey©r6   r'   r   r   ÚcallbackP  s   
z*TestConfig.test_callback.<locals>.callbackrp   r;   ©Úcbzd.béÿÿÿÿÚfoozÚboo)r   r   r   r   )r   r‚   r   r�   r   Útest_callbackL  s    
zTestConfig.test_callbackc              	      sÊ   dd„ ‰ t  dd¡ ˆ dƒ t  dd¡�* ˆ dƒ t  dd¡� ˆ dƒ W d   ƒ n1 s.w   Y  ˆ dƒ W d   ƒ n1 sAw   Y  ˆ dƒ t  dd¡ ˆ dƒ t  dd¡‡ fd	d
„ƒ}|ƒ  d S )Nc                 S   s   t  d¡| ks	J ‚d S )Nr*   )r   r   )Úvalr   r   r   Úeqf  s   z.TestConfig.test_set_ContextManager.<locals>.eqr*   r   é   é   é   é{   c                      s   ˆ dƒ d S )NrŽ   r   r   ©rŠ   r   r   r5   v  s   z-TestConfig.test_set_ContextManager.<locals>.f)r   r   Úoption_contextr   )r   r5   r   r�   r   Útest_set_ContextManagere  s    
ÿ
ü

z"TestConfig.test_set_ContextManagerc                    s8  g ‰ ‡ fdd„}t  dd¡ t jdd|d� t j}|jdks J ‚t  dd¡� |jdks.J ‚W d   ƒ n1 s8w   Y  d|_t  d¡dksIJ ‚t  d¡ |jt  dd¡ksYJ ‚d	}tjt	|d
�� d|_
W d   ƒ n1 spw   Y  tjt	|d
�� d|_W d   ƒ n1 sŠw   Y  d|_tˆ ƒdksšJ ‚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    r+   )r   r   r   r*   r�   r   r   r$   r%   r   r1   Údisplayr•   Úlen)r   r”   r   r(   r   r’   r   Útest_attribute_access|  s,   ÿ
ÿÿz TestConfig.test_attribute_accessc                 C   s‚   d}d}d}t  ||¡ t  ||¡}t  |¡|ksJ ‚|� t  |¡|ks'J ‚W d   ƒ n1 s1w   Y  t  |¡|ks?J ‚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   sL   t 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__r$   Úfixturer   r   r)   r0   rC   rL   rP   rR   rU   rV   rW   rY   rg   rj   rl   rw   r}   rˆ   r‘   r˜   rŸ   r¡   r   r   r   r   r   
   s0    

	!'&)r   )r$   Úpandas._configr   r   Úpandas._config.configr   Úpandasr   Úpandas._testingÚ_testingrs   r   r   r   r   r   Ú<module>   s    