
    d                    L   d dl mZ d dlZd dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ  ej        g d	          d
             ZddZej                            dddg          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 )    )annotationsN)mock)CachingFileManager)LRUCache)set_options)assert_no_warnings)         N)paramsc              #  J   K   | j         }|i V  d S t          |          V  d S )N)paramr   )requestmaxsizes     Glib/python3.11/site-packages/xarray/tests/test_backends_file_manager.py
file_cacher      s9      mGw    returnNonec                b   t          j                    }t          j        t          |          }t          j        t	          j                              }t          |d||           }|                                }|                    d           |	                                 | rJ |
                    d           |j        
                    d           |j	        
                                 |j                            t          j                    t          j                    g           d S )Nspecreturn_value)r   filenamelockcachecontents)r   Mockopen	MagicMock	threadingLockr   acquirewritecloseassert_called_once_with	__enter__assert_has_callscall)r   	mock_fileopenerr   managerfs         r   test_file_manager_mock_writer/      s    	IYDy999F>y~//000D $jQQQGAGGJMMOOO
"":...O++J777O++---N##TY[[$)++$>?????r   warn_for_unclosed_filesTFc                   t          j                    }t          j        |          }i }t          |d|          }|                                 |sJ | rt	          j        t                    }nt                      }t          |           5  |5  ~t          j
                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |rJ |j                                         d S )N)r   r   r   r0   )r   r   r   r$   pytestwarnsRuntimeWarningr   r   gccollectr&   r'   )r0   r+   r,   r   r-   ctxs         r   test_file_manager_autocloser:   *   so   	IYI...FE 5AAAGOOLLL  #l>** ""	-D	E	E	E   	 	JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	              
 O++-----s6   C
B3'C
3B7	7C
:B7	;C

CCc                 T   t          j                    } t          j                    }i }t	          | d||          }|                                 |sJ |                                 t          d          5  ~t          j                     d d d            n# 1 swxY w Y   |sJ d S )Nr   r   Fr3   )	r   r   r"   r#   r   r$   r   r7   r8   )r,   r   r   r-   s       r   (test_file_manager_autoclose_while_lockedr<   C   s    Y[[F>DE $eLLLGOOLLLLLNNN	U	3	3	3  

              
 LLLLLs   8BB Bc                 r    t          j                    } t          | d          }dt          |          v sJ d S )Nzmy-file)r   r   r   repr)r,   r-   s     r   test_file_manager_reprr?   V   s9    Y[[F 33GW%%%%%%r   c                    t          j                    } t          j        t          |           }i }i }t          |d||          }||j                 dk    sJ |rJ |                                 t          |          dk    sJ t          d          5  ~t          j	                     d d d            n# 1 swxY w Y   |rJ |rJ d S )Nr   r   )r   
ref_countsr	   Fr3   )
r   r   r    r   _keyr$   lenr   r7   r8   )r+   r,   r   rA   r-   s        r   %test_file_manager_cache_and_refcountsrD   \   s   	IYDy999FEJ 5ZXXXGgl#q((((OOu::????	U	3	3	3  

               s   B77B;>B;c                 t   t          j                    } t          j        t          |           }i }t          |d|          }|                                 t          |          dk    sJ t          |d|          }|                                 t          |          dk    sJ t          d          5  ~t          j                     d d d            n# 1 swxY w Y   t          |          dk    sJ t          d          5  ~t          j                     d d d            n# 1 swxY w Y   |rJ d S )Nr   r   r2   r	   r
   Fr3   )	r   r   r    r   r$   rC   r   r7   r8   )r+   r,   r   r-   manager2s        r   %test_file_manager_cache_repeated_openrG   q   s   	IYDy999FE 5AAAGOOu::????!&*EBBBHu::????	U	3	3	3  

               u::????	U	3	3	3  

               s$   7CCCD))D-0D-c                D   t          |                     d                    }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   i }t	          j        d|          5  |rJ t          t          |d          }|                                 t          |          dk    sJ t          j
        t          j        |                    }|                                 t          |          dk    sJ t          d	          5  ~t          j                     d d d            n# 1 swxY w Y   t          d	          5  ~t          j                     d d d            n# 1 swxY w Y   |rJ 	 d d d            d S # 1 swxY w Y   d S )
Ntesting.txtwdataz'xarray.backends.file_manager.FILE_CACHEr)moder	   Fr3   )strjoinr    r%   r   patchr   r$   rC   pickleloadsdumpsr   r7   r8   )tmpdirpathr.   r   r-   rF   s         r   #test_file_manager_cache_with_picklerV      s   v{{=))**D	dC A	              E	=u	E	E  $T4c:::5zzQ<W 5 5665zzQ777 	 	JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 777 	 	JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 '                 sl   AAA7B$FD<0F<E 	 FE 	FE8,F8E<	<F?E<	 FFFc                   t          |                     d                    }t          |                     d                    }t          t          |d|          }t          t          |d|          }|                                }|                    d           |                                 |                                }|                    d           |                                 |                                }|                    d           t          |dt          d	                    d
k    ||u k    sJ |	                                 |	                                 t          |          5 }	|	
                                dk    sJ 	 d d d            n# 1 swxY w Y   t          |          5 }	|	
                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nztesting1.txtztesting2.txtrJ   rM   r   foobarbazr   infr	   foobaz)rN   rO   r   r    r$   r%   flushgetattrfloatr&   read)
rT   r   path1path2manager1rF   f1af2f1br.   s
             r   #test_file_manager_write_consecutiverh      s/   N++,,EN++,,E!$CzJJJH!$CzJJJH




CIIeIIKKK					BHHUOOOHHJJJ




CIIeJ	5<<881<#*MMMMNNNN	e $vvxx8#####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	e !vvxx5     ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s$   9F!!F%(F%;G$$G(+G(c                   t          |                     d                    }t          t          |d|          }|                                }|                                }|                                }||u sJ ||u sJ |                    d           |                                 |                    d           |                                 |                    d           |                                 |                                 t          |          5 }|                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NrI   rJ   rX   rY   rZ   r[   	foobarbaz)	rN   rO   r   r    r$   r%   r^   r&   ra   )rT   r   rU   r-   f1rf   f3r.   s           r   "test_file_manager_write_concurrentrm      sb   v{{=))**D t#ZHHHG			B			B			B88888888HHUOOOHHJJJHHUOOOHHJJJHHUOOOHHJJJMMOOO	d 'qvvxx;&&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   !E

EEc                h   t          |                     d                    }t          t          |d|          }|                                }|                    d           |                                 t          j        t          j	        |                    }|                                }|                    d           |
                                 |
                                 t          |          5 }|                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NrI   rJ   rX   rY   rZ   foobar)rN   rO   r   r    r$   r%   r^   rQ   rR   rS   r&   ra   )rT   r   rU   r-   r.   rF   rf   s          r   test_file_manager_write_picklerp      s;   v{{=))**D t#ZHHHGAGGENNNGGIII|FL1122H					BHHUOOONNMMOOO	d $qvvxx8#####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   >D''D+.D+c                v   t          |                     d                    }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t	          t          ||          }|                                }|                                dk    sJ |                                 d S )NrI   rJ   ro   r2   )rN   rO   r    r%   r   r$   ra   r&   )rT   r   rU   r.   r-   s        r   test_file_manager_readrr      s    v{{=))**D	dC A	               !t:>>>GA6688xMMOOOOOs   AAAc                   t          |                     d                    }t          |d          5 }|                    d           d d d            n# 1 swxY w Y    G d dt                    }t          t          ||          }t          j        |          5  |                                5 }|	                                dk    sJ |# 1 swxY w Y   	 d d d            n# 1 swxY w Y   |rJ |                                5 }|	                                dk    sJ 	 d d d            n# 1 swxY w Y   t          j        |          5  |                                5 }|
                    d           |	                                dk    sJ |# 1 swxY w Y   	 d d d            n# 1 swxY w Y   |sJ |                                 d S )NrI   rJ   ro   c                      e Zd ZdS );test_file_manager_acquire_context.<locals>.AcquisitionErrorN)__name__
__module____qualname__ r   r   AcquisitionErrorru      s        r   rz   r2   r   )rN   rO   r    r%   	Exceptionr   r4   raisesacquire_contextra   seekr&   )rT   r   rU   r.   rz   r-   s         r   !test_file_manager_acquire_contextr      s!   v{{=))**D	dC A	                  9    !t:>>>G	'	(	( # #$$&& 	#!6688x''''""	# 	# 	# 	# 	# 	# 	# 	# 	## # # # # # # # # # # # # # # 		 	 	"	" $avvxx8#####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
'	(	( # #$$&& 	#!FF1III6688x''''""	# 	# 	# 	# 	# 	# 	# 	# 	## # # # # # # # # # # # # # #
 MMOOOOOs   AAAC(3CC	C(C	C((C,/C,D33D7:D7F1'2FF	F1 F	!F11F58F5)r   r   ) 
__future__r   r7   rQ   r"   unittestr   r4   xarray.backends.file_managerr   xarray.backends.lru_cacher   xarray.core.optionsr   xarray.testsr   fixturer   r/   markparametrizer:   r<   r?   rD   rG   rV   rh   rm   rp   rr   r   ry   r   r   <module>r      s   " " " " " " 				             ; ; ; ; ; ; . . . . . . + + + + + + + + + + + + '''    (' @ @ @ @" 2T5MBB. . . CB.0   && & & &   *   4   8! ! ! !.' ' ' '($ $ $ $ 	 	 	 	     r   