
    d+                       d dl mZ d dlmZmZmZ d dlZd dlZ	d dl
Z
d dlmZmZ d dlmZmZ d dlmZmZ  G d d          Ze
j                            g d	 ej        d
g           ej        dg           ej        d
dg          g ej        dgd           ej        dgd           e	j        ddg          gg          d             Zd Z G d d          Z G d d          Zd Zd Zd Z G d d          Z  G d d          Z!ed             Z"d Z#d Z$e
j                            g d  e%d!           e%d!           e%d!          fg d" e%d!           e%d!          fd
d#g e%d!           e%d!          fd$d#g e%d!           e%d%          fd#dg e%d!           e%d&          fd#g e%d!           e%d!          fg          d'             Z&e
j                            d(d)gd#d#g e%d!          fd#g e%d*          fg          d+             Z'e
j                            d,d-g e
j(        d
d.d/0           e
j(        d
dgd1d20           e
j(        d
dgd3d40           e
j(        d1d1d50           e
j(        d
d6gd7d80           e
j(        d9d9d:0           e
j(        ddd;0           e
j(        d#d#d<0          g          d^d@            Z)d_dAZ*e
j                            d, e
j(        dd;0           e
j(        d#d<0          g          d`dC            Z+e
j                            d, e
j(        dDdE0           e
j(        d
dDgdF0           e
j(        dDdgdG0          g          dadI            Z,e
j                            d,d-g e
j(        d
d.d/0           e
j(        d
dgd1dJ0           e
j(        d#gdKdL0           e
j(        d
d#gdKdM0           e
j(        g dNdOdP0          g          dbdR            Z-d_dSZ.e
j                            dTg g fdgdgfg dUg dUfdggdgfddgdVdWggg dXfg dUdWggdYdZggg d[fg          d\             Z/d] Z0dS )c    )annotations)HashableIterableSequenceN)duck_array_opsutils)either_dict_or_kwargsiterate_nested)assert_array_equalrequires_daskc                      e Zd Zd ZdS )	TestAliasc                    d }t          j        |d          }d|j        v sJ t          j        t
          d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                     d S N r       7lib/python3.11/site-packages/xarray/tests/test_utils.py
new_methodz"TestAlias.test.<locals>.new_method   s    Dr   
old_method
deprecatedmatch)r   alias__doc__pytestwarnsWarning)selfr   r   s      r   testzTestAlias.test   s    	 	 	 [\::
z11111\'666 	 	JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)__name__
__module____qualname__r    r   r   r   r   r      s#            r   r   )abexpectedr$   r%      int64dtype   c                    t          j        |                               t          j        |                    }t          j        || |g          }t          ||           |j        |j        k    sJ d S r   )pdIndexappendr   maybe_coerce_to_strr   r*   )r$   r%   r&   indexactuals        r   test_maybe_coerce_to_strr3      sh     HQKKrx{{++E&uq!f55Fx(((>V\))))))r   c                     t          j        ddg          } t          j        dg          }t	          j        || g          }t          j        d          }t          ||           |j        |j        k    sJ d S )Nr$   a_long_string)nparrayr-   r.   r   r0   r   r*   )r$   r1   r2   r&   s       r   *test_maybe_coerce_to_str_minimal_str_dtyper8   )   sq    
#'((AHcUOOE&uqc22Fx}}Hx(((>V\))))))r   c                      e Zd Zd ZdS )TestArrayEquivc                N   t          j        dt          j        dt                              sJ t          j        t          j        t          j        t          j        t                              sJ t          j        dt          j        dt                              rJ d S )Nr   r)   r'   )r   array_equivr6   r7   objectnanr   s    r   test_0dzTestArrayEquiv.test_0d5   s     )!RXav-F-F-FGGGGG)"&"(262P2P2PQQQQQ!-a!61J1J1JKKKKKKKr   N)r!   r"   r#   r@   r   r   r   r:   r:   4   s(        L L L L Lr   r:   c                  l    e Zd Z ej        d          d             Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestDictionariesT)autousec                @    ddd| _         ddd| _        ddi| _        d S )NABr$   r%   C)cr%   r$   Z)xyzr?   s    r   setupzTestDictionaries.setup>   s/    %%%%sr   c                V   t          j        dd          sJ t          j        t          j        t          j                  sJ t          j        dt          j        d                    sJ t          j        dgt          j        dg                    sJ t          j        t          j        dg          dg          sJ t          j        t          j        d          dt          j        d          z            sJ t          j        dt          j        d                    rJ d S )Nr   g                 ?)r   
equivalentr6   r>   r7   arangezerosr?   s    r   test_equivalentz TestDictionaries.test_equivalentD   s    1%%%%%/////28C==11111RXqc]]33333!s33333	!cBIaLL.@AAAAA#Arx{{3333333r   c                D    t          j        | j        | j                   d S r   )r   update_safety_checkrK   rL   r?   s    r   	test_safezTestDictionaries.test_safeM   s    !$&$&11111r   c                    t          j        t                    5  t          j        | j        | j                   d d d            d S # 1 swxY w Y   d S r   )r   raises
ValueErrorr   rW   rK   rM   r?   s    r   test_unsafezTestDictionaries.test_unsafeQ   s    ]:&& 	6 	6%dfdf555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s    AAAc                    ddit          j        | j        | j                  k    sJ i t          j        | j        | j                  k    sJ d S )Nr%   rF   )r   compat_dict_intersectionrK   rL   rM   r?   s    r   test_compat_dict_intersectionz.TestDictionaries.test_compat_dict_intersectionU   sP    SzU;DFDFKKKKKKU3DFDFCCCCCCCCr   c                    ddddt          j        | j        | j                  k    sJ t	          j        t          d          5  t          j        | j        | j                   d d d            d S # 1 swxY w Y   d S )NrE   rF   rH   r$   r%   rI   zGunsafe to merge dictionaries without overriding values; conflicting keyr   )r   compat_dict_unionrK   rL   r   rZ   r[   rM   r?   s    r   test_compat_dict_unionz'TestDictionaries.test_compat_dict_unionY   s    s--1HQUQW1X1XXXXX]1
 
 
 	4 	4
 #DFDF333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s    A22A69A6c                   i }d|d<   t          j        g d          |d<   i }t          j        g d          |d<   d|d<   t          j        ||          sJ g d|d<   t          j        ||          sJ g d|d<   t          j        ||          sJ d |d<   t          j        ||          rJ t           j        |d<   t           j        |d<   t          j        ||          sJ t           j        |d<   t           j        |d<   t          j        ||          sJ t          |          }t          j        ||          sJ dt          j        d          z  |d<   t          j        ||          rJ d S )NrP   r$   r'   r+   rP   r%   )rQ   g       @g      @rI   )r6   r7   r   
dict_equivr>   infdictrS   )r   rK   rL   s      r   test_dict_equivz TestDictionaries.test_dict_equivb   s   #)))$$#///**##1%%%%%#1%%%%% #1%%%%%##Aq)))))##1%%%%%##1%%%%%GG1%%%%%RYq\\!##Aq)))))))r   c                   t          j        | j                  }t          j        t
                    5  d|d<   d d d            n# 1 swxY w Y   t          j        t
                    5  |d= d d d            n# 1 swxY w Y   t          j        t                    5  |                    | j                   d d d            n# 1 swxY w Y   |j	        | j        k    sJ t          |          dv sJ d S )Nbarfoor$   )zFrozen({'a': 'A', 'b': 'B'})zFrozen({'b': 'B', 'a': 'A'}))r   FrozenrK   r   rZ   	TypeErrorAttributeErrorupdaterL   mappingrepr)r   rK   s     r   test_frozenzTestDictionaries.test_frozen{   s   L  ]9%% 	 	AeH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9%% 	 	#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]>** 	 	HHTV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	yDF""""Aww 
 
 
 
 
 
 
s5   AA	A	)A99A= A=CCCN)r!   r"   r#   r   fixturerN   rU   rX   r\   r_   rc   ri   rs   r   r   r   rB   rB   =   s        V^D!!!  "!
4 4 42 2 26 6 6D D D4 4 4* * *2
 
 
 
 
r   rB   c                     t          j        d          } t          |           dk    sJ t          | t                    sJ t          | t
                    rJ d S )Nrl   )r   
ReprObjectrr   
isinstancer   str)objs    r   test_repr_objectrz      s[    

5
!
!C99c8$$$$$#s#######r   c                 ~   t          j        d          } t          j        d          }t          j        d          }d}| |k    sJ | |k    sJ | |k    sJ t          |           t          |          k    sJ t          |           t          |          k    sJ t          |           t          |          k    sJ d S )Nrl   rk   )r   rv   hash)o1o2o3o4s       r   test_repr_object_magic_methodsr      s    		%	 	 B		%	 	 B		%	 	 B	B88888888888888tBxx88tBxx88tBxxr   c                     t          j        d          sJ t          j        d          sJ t          j        d          rJ t          j        d          rJ d S )Nzhttp://example.comzhttps://example.comz http://example.comz
example.nc)r   is_remote_urir   r   r   test_is_remote_urir      sg    344444455555"#899999"<0000000r   c                  2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Test_is_uniform_and_sortedc                V    t          j        t          j        d                    sJ d S )N   )r   is_uniform_spacedr6   rS   r?   s    r   test_sorted_uniformz.Test_is_uniform_and_sorted.test_sorted_uniform   s'    &ry||4444444r   c                6    t          j        g d          rJ d S )N)r'   Y   r   r   r?   s    r   test_sorted_not_uniformz2Test_is_uniform_and_sorted.test_sorted_not_uniform   s#    *;;;7777777r   c                6    t          j        g d          rJ d S )N)r'   rP   r   r?   s    r   test_not_sorted_uniformz2Test_is_uniform_and_sorted.test_not_sorted_uniform   #    *:::6666666r   c                6    t          j        g d          rJ d S )N)   r'   r   r   r?   s    r   test_not_sorted_not_uniformz6Test_is_uniform_and_sorted.test_not_sorted_not_uniform   r   r   c                6    t          j        ddg          sJ d S )Nr   g333333?r   r?   s    r   test_two_numbersz+Test_is_uniform_and_sorted.test_two_numbers   s#    &3x0000000r   c                :    t          j        g dd          sJ d S )N)r   g
ףp=
?r+   g?)rtolr   r?   s    r   test_relative_tolerancez2Test_is_uniform_and_sorted.test_relative_tolerance   s(    &|||#>>>>>>>>r   N)	r!   r"   r#   r   r   r   r   r   r   r   r   r   r   r      sn        5 5 58 8 87 7 77 7 71 1 1? ? ? ? ?r   r   c                      e Zd Zd ZdS )Test_hashablec                    dD ]}t          j        |          sJ ddgddgddifD ]}t          j        |          rJ d S )N)Fr'   )r+   )rP   r   fourr      seven8	   ten)r   hashable)r   vs     r   test_hashablezTest_hashable.test_hashable   so    1 	% 	%A>!$$$$$$a&7C.1e*5 	) 	)A~a((((((	) 	)r   N)r!   r"   r#   r   r   r   r   r   r      s#        ) ) ) ) )r   r   c                 l    dd l m}  |                     dd          }t          j        |          rJ d S )Nr      r   )chunks)
dask.arrayr7   rS   r   	is_scalar)darL   s     r   test_dask_array_is_scalarr      sG     
		!A	Aq!!!!!!!r   c                    d} dddd| di}ddd}t          j        || g          }t          |          dk    sJ | |vsJ |                                D ]\  }}||         |k    sJ t	          j        t                    5  ||           d d d            n# 1 swxY w Y   t	          j        t                    5  || = d d d            d S # 1 swxY w Y   d S )N_hidden_keyr$   r'   r%   r+   rP   rG   )r   HiddenKeyDictlenitemsr   rZ   KeyError)
hidden_keydatadata_expectedhkdkr   s         r   test_hidden_key_dictr      sy   JCJ*D!$$M

dZL
1
1Cs88q====S    ##%%  11v{{{{{	x	 	   J              	x	 	   
O                 s$   	BBB;CCCc                    t          t          d          d d          } t          d          }| |k    sJ t          d t          d          d          } t          d          }| |k    sJ t          j        t          d          5  t          t          d          t          d          d          } d d d            d S # 1 swxY w Y   d S )Nr'   r$   rl   r   )r	   rh   r   rZ   r[   )resultr&   s     r   test_either_dict_or_kwargsr      s   "4!999dE::FayyyHX"4E::FayyyHX	z	0	0	0 D D&tayyy$)))UCCD D D D D D D D D D D D D D D D D Ds   
.CC	C	)suppliedall_r&   abc)r$   .rI   .rI   cabacbc                Z    t          t          j        | |                    }||k    sJ d S r   )listr   
infix_dims)r   r   r&   r   s       r   test_infix_dimsr      s5     %"8T2233FXr   r   r   aacc                    t          j        t                    5  t          t	          j        | |                     d d d            d S # 1 swxY w Y   d S r   )r   rZ   r[   r   r   r   )r   r   s     r   test_infix_dims_errorsr      s     
z	"	" / /Uh--.../ / / / / / / / / / / / / / / / / /s   #A

AAdimr&   r   rx   )idrG   list_of_str)r$   r'   
list_mixedtuple_of_strr%   rI   )r$   r   list_with_tuple)r   tuple_of_tupleNoneellipsisstr | Iterable[Hashable] | Nonetuple[Hashable, ...]returnc                H    d}t          j        | |d          }||k    sJ d S )Nr$   r%   r'   r   Freplace_noner   
parse_dimsr   r&   all_dimsr2   s       r   test_parse_dimsr      s7    " )Hc8%@@@FXr   c                 f    d} ddh}t          j        ||           }t          |          |k    sJ d S )Nr   r$   r'   )r   r   set)r   r   r2   s      r   test_parse_dims_setr     s?    (H(Cc8,,Fv;;#r   None | ellipsisc                H    d}t          j        | |d          }||k    sJ d S )Nr   Tr   r   )r   r   r2   s      r   test_parse_dims_replace_noner     s7     )Hc8$???FXr   rK   str_missinglist_missing_onelist_missing_allstr | Iterable[Hashable]c                    d}t          j        t          d          5  t          j        | |d           d d d            d S # 1 swxY w Y   d S )Nr   z'x'r   Tcheck_exists)r   rZ   r[   r   r   )r   r   s     r   test_parse_dims_raisesr   $  s     )H	z	/	/	/ ; ;hT::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   AA
Ar   ra   list_only_ellipsislist_with_ellipsis)r$   .r%   )r$   rI   r%   list_with_middle_ellipsis#str | Sequence[Hashable | ellipsis]c                D    d}t          j        | |          }||k    sJ d S )Nra   )r   parse_ordered_dimsr   s       r   test_parse_ordered_dimsr   2  s2     H%c844FXr   c                    d} t          j        t          d          5  t          j        d| d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        dd	g| d
z              d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        g d|            d d d            d S # 1 swxY w Y   d S )Nra   z'x' do not existr   rK   Tr   zrepeated dimsr$   .r   zMore than one ellipsis)r$   .r%   .)r   rZ   r[   r   r   )r   s    r   test_parse_ordered_dims_raisesr   E  s   H	z);	<	<	< C C hTBBBBC C C C C C C C C C C C C C C 
z	9	9	9 @ @ #sX->???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
z)A	B	B	B A A !5!5!5x@@@A A A A A A A A A A A A A A A A A As5   AA	A(BBB5CC!Cznested_list, expectedre   rP   r   )r'   r+   rP   r   r   r   )r'   r+   rP   r   r   r   c                J    t          t          |                     |k    sJ d S r   )r   r
   )nested_listr&   s     r   test_iterate_nestedr   R  s+     {++,,888888r   c                     t          j                    dk    sJ t          j        d          dk    sJ d }  |             dk    sJ d S )Nr'   T	test_moder+   c                 ,    t          j        d          S )NTr   r   find_stack_levelr   r   r   fz test_find_stack_level.<locals>.fe  s    %5555r   rP   r   )r  s    r   test_find_stack_levelr  a  sc    !##q((((!D111Q66666 6 6 133!888888r   )r   r   r&   r   r   r   )r   r   )r   r   r   r   )r   r   r   r   )r   r   r&   r   r   r   )1
__future__r   collections.abcr   r   r   numpyr6   pandasr-   r   xarray.corer   r   xarray.core.utilsr	   r
   xarray.testsr   r   r   markparametrizer7   r.   r3   r8   r:   rB   rz   r   r   r   r   r   r   r   r   r   r   paramr   r   r   r   r   r   r   r  r   r   r   <module>r     s   " " " " " " 8 8 8 8 8 8 8 8 8 8          - - - - - - - - C C C C C C C C : : : : : : : :        	3%("(C5//828S#J+?+?@	1#W	%	%	%xrx7'C'C'CXRXqRSfEUEUV * * ** * *L L L L L L L LJ
 J
 J
 J
 J
 J
 J
 J
Z$ $ $
  
  
 1 1 1? ? ? ? ? ? ? ?() ) ) ) ) ) ) ) " " "  
D 
D 
D $$$	edd5kk44;;/	$$u++ttE{{3
sTT%[[$$u++.
sTT%[[$$u++.
sTT%[[$$u++.
UTT%[[)
 
 
 

 S#JU4udd5kk6JK / / /
 
JS&U+++c3Z>>>c1XxL999Z???c:&(9>OPPP]M6FGGGT4F+++S#*---	        	LFL&)))<6<
+K+K+KL     	S]+++c3Z$6777c1X"4555 ; ; ; ; 
JS&U+++c3Z777cUO0DEEEc3Z5IJJJ___o:UVVV	 	  	 	
A 
A 
A 
A 	R
qc
	III#a&1a&	<<<(99qc
QF	#%7%7%78
 
9 9
 
9    r   