B
    x\D?                 @   s,   d dl Z d dlZd dlZG dd deZdS )    Nc               @   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   sP   ddl m} tjj| _|t| jd| _|t| jd| _|t| jd| _	d S )Nr   )deepcopy_global_config_deprecated_options_registered_options)
copyr   pdZcoreZconfigcfgetattrgcdoro)clsr    r   7lib/python3.7/site-packages/pandas/tests/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   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)hasattrr   AssertionError)r   r   r   r   test_api&   s    zTestConfig.test_apic             C   s2   | j d dg}|d |d  tt|d d S )N   g?)r	   is_one_of_factorypytestraises
ValueError)r   vr   r   r   test_is_one_of_factory.   s    z!TestConfig.test_is_one_of_factoryc             C   s   | j ddd tt| j jddd tt| j jddd tt| j jddd tt| j jdd tt| j jdd tt| j jd	d | j d
dd | j ddd d S )Na   docza.b.c.d1za.b.c.d2forr   za.for.bzOh my Goddess!zk.b.c.d1zk.b.c.d2)r	   r   r#   r$   KeyErrorr%   )r   r   r   r   test_register_option5   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 tt| j jd d| j jdddkstd| j jdddkstd| j jdddkst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std| j jdddkstd| j jdddkst| j dd d| j jdddkstd S )Nr(   r)   r*   bdoc2zc.d.e1Zdoc3zc.d.e2Zdoc4fzg.hk   )rkeylfoozno.such.keyF)_print_descZprecatedZvailablebar)	r	   r   deprecate_optionr#   r$   r,   r   r   r   )r   r   r   r   test_describe_optionO   s0    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tt| j jd | j 	d | j 
d
std S )NZKanBANr)   r*   ZkanbaNF)r6   ZkanBaNZKanBanr2   ZkAnBaNno_such_option)r	   r   r   r   r   r   r#   r$   r,   r8   _is_deprecated)r   r   r   r   test_case_insensitivet   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tt| j jd d S )	Nr(   r)   r*   zb.chullor/   zb.br:   )r	   r   r   r   r#   r$   r,   )r   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st| j dd	kst| j dd
ksttt| j jdd  d S )Nr(   r)   r*   zb.cr=   r/   zb.br2   wurldg?zno.such.key)r	   r   r   r   r   r#   r$   r,   )r   r   r   r   test_set_option   s    zTestConfig.test_set_optionc             C   s   t t| jj d S )N)r#   r$   r%   r	   r   )r   r   r   r   test_set_option_empty_args   s    z%TestConfig.test_set_option_empty_argsc             C   s   t t| jjddd d S )Nza.br2   zb.c)r#   r$   r%   r	   r   )r   r   r   r   test_set_option_uneven_args   s    z&TestConfig.test_set_option_uneven_argsc             C   s   t t| jjd d S )Nr2   )r#   r$   r%   r	   r   )r   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st| j dd kst| j dd	kstd S )
Nr(   r)   r*   zb.cr=   r/   zb.b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 tjt| j jdd	d| j jd | j dd
 | j dd tt| j jdd  tt| j jdd tt| j jdd | j d | j j	g}| j jddd d|d | j ddj
 | j dd  tt| j jdd d S )Nr(   r)   r*   )	validatorzb.cr=   r/   za.b.c.d2ZNOr2   r?   Zabr.   c               S   s   d S )Nr   r   r   r   r   <lambda>   s    z,TestConfig.test_validation.<locals>.<lambda>z%.1f)r	   r   is_intZis_textr#   r$   r%   r   r"   Zis_callableformat)r   rF   r   r   r   test_validation   s"    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st| j dd	kst| j d | j ddkst| j dd	kst| j d | j ddkst| j ddkstd S )
Nr(   r)   r*   )rF   zb.cr=   r/   r2   r?   )r	   r   rH   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st| j dd	kst| j d
 | j ddkst| j ddkstd S )Nr(   r)   r*   )rF   zb.cr=   r/   r2   r?   all)r	   r   rH   rK   r   r   r   r   )r   r   r   r   test_reset_option_all   s    z TestConfig.test_reset_option_allc          
   C   s*  | j d | j dsttjddZ}td tjt	dd | j 
d W d Q R X t|dksjtdt|d	 ks~tW d 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l}td | j 
d
 t|dkstdt|d	 kstdt|d	 ks2ttt	| j jd
 W d Q R X | j dd tjddD}td | j 
d t|dkstdt|d	 kstW d Q R X | j ddd | j ddd | j 
ddkst| j 
ddkst| j jddd tjddN}td | j 
ddks<tt|dksNtdt|d	 ksdtW d Q R X tjddF}td | j dd t|dkstdt|d	 kstW d Q R X tjddN}td | j 
ddkstt|dkstdt|d	 kstW d Q R X d S )Nr5   T)recordalwayszNo such keys.s.: 'foo')matchr)   Z
deprecatedr(   r*   )rF   zb.cr=   r/   Z	nifty_ver)Zremoval_verZ	eprecatedzzounds!zd.azd.depr7   )r3   Zbaz)r	   r8   r;   r   warningscatch_warningssimplefilterr#   r$   r,   r   lenstrr   rH   r   )r   wr   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st| j dd	kstW d Q R X | j d
dkst| j dd	kstd| j jd
ddkstd| j jdddkst| j d
 | j d | j d2 | j ddks8t| j ddksNtW d Q R X d S )Nbaser(   r)   Zdoc1r.   r2   r/         zbase.azbase.bF)r6   )r	   Zconfig_prefixr   r   r   r   r   r   )r   r   r   r   test_config_prefix5  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std d	kst d= d= j d  d dkstd S )
Nc                s      |   j|  d S )N)appendr	   r   )key)r1   r   r&   r   r   callbackQ  s    
z*TestConfig.test_callback.<locals>.callbackzd.ar5   )cbzd.brR   ZfoozZboo)r	   r   r   r   r   )r   r`   r   )r1   r   r&   r   test_callbackM  s     zTestConfig.test_callbackc          
      s    fdd} j dd |d  j dd8 |d  j dd |d W d Q R X |d W d Q R X |d  j dd |d d S )Nc                s    j d| kstd S )Nr(   )r	   r   r   )val)r   r   r   eqg  s    z.TestConfig.test_set_ContextManager.<locals>.eqr(   r            )r	   r   option_contextr   )r   rd   r   )r   r   test_set_ContextManagerf  s    z"TestConfig.test_set_ContextManagerc          	      s   g  fdd}fdd} fdd}| j dd | j jd	d|d
 | j jjdks^t| j dd jdks|tW d Q R X d_| j ddkst| j d j| j ddkstt	t
| t	t
| d_t dkstd S )Nc                  s
   d _ d S )Nr)   )r.   r   )r   r   r   r0   y  s    z+TestConfig.test_attribute_access.<locals>.fc                  s
   d _ d S )Nr)   )Zdisplayr   )r   r   r   f2|  s    z,TestConfig.test_attribute_access.<locals>.f2c                s     d d S )NT)r^   )r_   )holderr   r   f3  s    z,TestConfig.test_attribute_access.<locals>.f3r(   r   c)ra   re   i  r)   )r	   r   r   r(   r   rh   r   r   r#   r$   r,   rm   rV   )r   r0   rj   rl   r   )rk   r   r   test_attribute_accessv  s$    z TestConfig.test_attribute_accessc          	   C   sx   d}d}d}| j || | j ||}| j ||ks<t| | j ||ksVtW d Q R X | j ||ksttd S )N<   
   r(   )r	   r   rh   r   r   )r   original_valueZcontext_valueZoption_nameZctxr   r   r   test_option_context_scope  s    z$TestConfig.test_option_context_scopec             C   s.   | j j}t| j jt|d t|dr*td S )NZbananas)r	   r   r#   r$   ZOptionErrorr
   r   r   )r   r   r   r   r   test_dictwrapper_getattr  s    z#TestConfig.test_dictwrapper_getattrN)__name__
__module____qualname__classmethodr   r   r   r    r'   r-   r9   r<   r>   r@   rA   rB   rC   rE   rJ   rL   rN   rY   r]   rb   ri   rn   rr   rs   r   r   r   r   r   	   s0   	%B!r   )rS   r#   Zpandasr   objectr   r   r   r   r   <module>   s   