U
    Cvf                     @  s  d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ ddd	d
ZddddZddddZddddZddddZddddZddddZddddZd%ddZd&ddZG dd dZejd d!d"gd#d$ ZdS )'    )annotationsN)concatmerge)
FILE_CACHE)OPTIONS_get_keep_attrs)create_test_dataNonereturnc                	   C  s&   t t tjdd W 5 Q R X d S )NT)Znot_a_valid_optionspytestraises
ValueErrorxarrayset_options r   r   =/tmp/pip-unpacked-wheel-h316xyqg/xarray/tests/test_options.pytest_invalid_option_raises   s    r   c                	   C  sj   t t tjdd W 5 Q R X t t tjdd W 5 Q R X t t tjdd W 5 Q R X d S )Nr   display_widthig      @r   r   r   r   r   test_display_width   s    r   c                	   C  sN   t t tjdd W 5 Q R X tjdd td dks@tW 5 Q R X d S )Ninvalidarithmetic_joinexactr   )r   r   r   r   r   r   AssertionErrorr   r   r   r   test_arithmetic_join   s    r   c                
   C  sd   t t tjd d W 5 Q R X t jtdd* tjdd td sLtW 5 Q R X W 5 Q R X d S )N)enable_cftimeindexzno-op)matchTr   )	r   r   r   r   r   ZwarnsFutureWarningr   r   r   r   r   r   test_enable_cftimeindex!   s
    r!   c               	   C  s`   t t tjdd W 5 Q R X tj} tjdd tjdksDtW 5 Q R X tj| ks\td S )Nr   )Zfile_cache_maxsize{   )r   r   r   r   r   r   maxsizer   )Zoriginal_sizer   r   r   test_file_cache_maxsize)   s    r$   c                	   C  s   t t tjdd W 5 Q R X tjdd td s<tW 5 Q R X tjdd td r`tW 5 Q R X tjdd" tddsttddrtW 5 Q R X d S )Ninvalid_str
keep_attrsTr'   Fdefault)r(   )r   r   r   r   r   r   r   r   r   r   r   r   test_keep_attrs2   s    r)   c               
   C  s|   t d } tjddN t d dks&ttjdd t d dksDtW 5 Q R X t d dks^tW 5 Q R X t d | ksxtd S )Nr      r      )r   r   r   r   originalr   r   r   test_nested_options>   s    r.   c               	   C  sr   d} t d | ksttt tjdd W 5 Q R X tjdd t d dksTtW 5 Q R X t d | ksntd S )Nhtmldisplay_styler%   r0   text)r   r   r   r   r   r   r   r,   r   r   r   test_display_styleH   s    r3   c                 C  s   t | }ddddid|_|S N   historynested	more_infoZattr1Zattr2Zattr3r   attrs)seeddsr   r   r   create_test_dataset_attrsR   s    r>   var1c                 C  s"   t | | }ddddid|_|S r4   r:   )r<   vardar   r   r   create_test_dataarray_attrsX   s    rB   c                   @  s   e Zd ZddddZddddZddddZddd	d
Zejj	ddddZ
ddddZddddZddddZddddZdS )TestAttrRetentionr	   r
   c              	   C  s   t  }|j}| }|ji ks"ttjdd | }|ji ksFtW 5 Q R X tjdd | }|j|ksttW 5 Q R X tjdd | }|ji kstW 5 Q R X d S Nr(   r&   TF)r>   r;   meanr   r   r   )selfr=   original_attrsresultr   r   r   test_dataset_attr_retention_   s    z-TestAttrRetention.test_dataset_attr_retentionc              	   C  s   t  }|j}| }|ji ks"ttjdd | }|ji ksFtW 5 Q R X tjdd | }|j|ksttW 5 Q R X tjdd | }|ji kstW 5 Q R X d S rD   )rB   r;   rE   r   r   r   )rF   rA   rG   rH   r   r   r   test_dataarray_attr_retentions   s    z/TestAttrRetention.test_dataarray_attr_retentionc              	   C  s   t dddgddddgfg}ddddid	|_|j}|djd
d}|j|ksVtt jdd& |djd
d}|j|kstW 5 Q R X t jd
d& |d}| }|j|kstW 5 Q R X t jdd" |d }|ji kstW 5 Q R X d S )Nr*   r+      xr5   r6   r7   r8   r9   Tr&   r(   F)r   Z	DataArrayr;   groupbysumr   r   )rF   rA   rG   rH   Zresult1r   r   r   test_groupby_attr_retention   s    
z-TestAttrRetention.test_groupby_attr_retentionc                 C  s>   t  }t  }ddi|_|j}t||gdd}|j|ks:td S )Nwrong
attributesZdim1)Zdim)r>   r;   r   r   )rF   Zds1Zds2rG   rH   r   r   r   test_concat_attr_retention   s    
z,TestAttrRetention.test_concat_attr_retentionc                 C  sB   t dd}t dd}ddi|_|j}t||g}|j|ks>td S )Nr?   )r@   Zvar2rP   rQ   )rB   r;   r   r   )rF   Zda1Zda2rG   rH   r   r   r   test_merge_attr_retention   s    


z+TestAttrRetention.test_merge_attr_retentionc              	   C  sP   t  }tjdd4 | }|ds*td|ks6td|ksBtW 5 Q R X d S )Nr2   r1   <pre>&#x27;nested&#x27;z&lt;xarray.Dataset&gt;r>   r   r   _repr_html_
startswithr   )rF   r=   r2   r   r   r   test_display_style_text   s    z)TestAttrRetention.test_display_style_textc              	   C  sD   t  }tjdd( | }|ds*td|ks6tW 5 Q R X d S )Nr/   r1   <div>rU   rV   )rF   r=   r/   r   r   r   test_display_style_html   s
    z)TestAttrRetention.test_display_style_htmlc              	   C  sD   t  }tjdd( | }|ds*td|ks6tW 5 Q R X d S )Nr2   r1   rT   z%&lt;xarray.DataArray &#x27;var1&#x27;rB   r   r   rW   rX   r   )rF   rA   r2   r   r   r   !test_display_dataarray_style_text   s
    z3TestAttrRetention.test_display_dataarray_style_textc              	   C  sD   t  }tjdd( | }|ds*td|ks6tW 5 Q R X d S )Nr/   r1   rZ   z#x27;nested&#x27;r\   )rF   rA   r/   r   r   r   !test_display_dataarray_style_html   s
    z3TestAttrRetention.test_display_dataarray_style_htmlN)__name__
__module____qualname__rI   rJ   rO   rR   r   markZxfailrS   rY   r[   r]   r^   r   r   r   r   rC   ^   s   rC   	set_valueleftr   c              	   C  s4   t j| d t  }|d | ks&tW 5 Q R X dS )zDTest to check if get_options will return changes made by set_optionsr   r   N)r   r   get_optionsr   )rc   re   r   r   r   test_get_options_retention   s    rf   )r   )r   r?   )
__future__r   r   r   r   r   Zxarray.backends.file_managerr   Zxarray.core.optionsr   r   Zxarray.tests.test_datasetr   r   r   r   r!   r$   r)   r.   r3   r>   rB   rC   rb   Zparametrizerf   r   r   r   r   <module>   s,   		



t