
    d                    p   d dl mZ d dlZd dlmZ d dlmZmZ d dlZ	d dl
mZmZmZmZmZ d dlmZ d dlmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZmZmZ d dl m!Z! erd dl"Z"d dl#m$Z$ d dl%m&Z&  e            Z' eeee'g          Z( G d de          Z) G d de          Z* G d de          Z+de+fed<   dS )    )annotationsN)Iterable)TYPE_CHECKINGAny)BACKEND_ENTRYPOINTSAbstractDataStoreBackendArrayBackendEntrypoint_normalize_path)CachingFileManager)	HDF5_LOCKNETCDFC_LOCKSerializableLockcombine_locksensure_lock)StoreBackendEntrypoint)indexing)Frozen
FrozenDictclose_on_error)Variable)BufferedIOBase)Datasetc                  (    e Zd Zd ZddZd Zd ZdS )NioArrayWrapperc                    || _         || _        |                                 }|j        | _        t	          j        |                                          | _        d S N)	datastorevariable_name	get_arrayshapenpdtypetypecode)selfr   r   arrays       6lib/python3.11/site-packages/xarray/backends/pynio_.py__init__zNioArrayWrapper.__init__*   sH    "*  [
Xenn..//


    Tc                d    | j         j                            |          }|j        | j                 S r   )r   _manageracquire	variablesr   )r%   
needs_lockdss      r'   r    zNioArrayWrapper.get_array1   s*    ^$,,Z88|D.//r)   c                b    t          j        || j        t           j        j        | j                  S r   )r   explicit_indexing_adapterr!   IndexingSupportBASIC_getitem)r%   keys     r'   __getitem__zNioArrayWrapper.__getitem__5   s*    1X5;T]
 
 	
r)   c                    | j         j        5  |                     d          }|dk    r+| j        dk    r |                                cd d d            S ||         cd d d            S # 1 swxY w Y   d S )NF)r.    r   )r   lockr    ndim	get_value)r%   r5   r&   s      r'   r4   zNioArrayWrapper._getitem:   s    ^  	 	NNeN44EbyyTY!^^((		 	 	 	 	 	 	 	 :	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;A)A))A-0A-N)T)__name__
__module____qualname__r(   r    r6   r4   r8   r)   r'   r   r   )   sU        0 0 00 0 0 0
 
 

    r)   r   c                  T    e Zd ZdZddZed             Zd Zd Zd Z	d	 Z
d
 Zd ZdS )NioDataStorez&Store for accessing datasets via PyNIOrNc                    dd l }t          j        dt                     |t          }t          |          | _        t          |j        ||||          | _	        | j
                            dd           d S )Nr   zThe PyNIO backend is Deprecated and will be removed from Xarray in a future release. See https://github.com/pydata/xarray/issues/4491 for more information)r9   modekwargsMaskedArrayModeMaskedNever)NiowarningswarnDeprecationWarning
PYNIO_LOCKr   r9   r   	open_filer+   r/   
set_option)r%   filenamerC   r9   rD   rG   s         r'   r(   zNioDataStore.__init__G   s    


T	
 	
 	
 <D%%	*M8$T&
 
 

 	,m<<<<<r)   c                4    | j                                         S r   )r+   r,   r%   s    r'   r/   zNioDataStore.dsZ   s    }$$&&&r)   c                |    t          j        t          ||                     }t          |j        ||j                  S r   )r   LazilyIndexedArrayr   r   
dimensions
attributes)r%   namevardatas       r'   open_store_variablez NioDataStore.open_store_variable^   s2    *?4+F+FGGcn===r)   c                r     t           fd j        j                                        D                       S )Nc              3  N   K   | ]\  }}|                     ||          fV   d S r   )rX   ).0kvr%   s      r'   	<genexpr>z-NioDataStore.get_variables.<locals>.<genexpr>c   sM       
 
48AqQ((A../
 
 
 
 
 
r)   )r   r/   r-   itemsrP   s   `r'   get_variableszNioDataStore.get_variablesb   sL     
 
 
 
<@G<M<S<S<U<U
 
 
 
 
 	
r)   c                4    t          | j        j                  S r   )r   r/   rT   rP   s    r'   	get_attrszNioDataStore.get_attrsg       dg()))r)   c                4    t          | j        j                  S r   )r   r/   rS   rP   s    r'   get_dimensionszNioDataStore.get_dimensionsj   rc   r)   c                8     d fd j         j        D             iS )Nunlimited_dimsc                H    h | ]}j                             |          |S r8   )r/   	unlimited)r[   r\   r%   s     r'   	<setcomp>z,NioDataStore.get_encoding.<locals>.<setcomp>o   s/    UUUQ@Q@QRS@T@TUqUUUr)   )r/   rS   rP   s   `r'   get_encodingzNioDataStore.get_encodingm   s,    UUUU$'*<UUU
 	
r)   c                8    | j                                          d S r   )r+   closerP   s    r'   rm   zNioDataStore.closer   s    r)   )rA   N)r<   r=   r>   __doc__r(   propertyr/   rX   r`   rb   re   rk   rm   r8   r)   r'   r@   r@   D   s        00= = = =& ' ' X'> > >
 
 

* * ** * *
 
 

    r)   r@   c            
      0    e Zd ZdZdddddddddd	ddZdS )PynioBackendEntrypointz
    PyNIO backend

        .. deprecated:: 0.20.0

        Deprecated as PyNIO is no longer supported. See
        https://github.com/pydata/xarray/issues/4491 for more information
    TNrA   )	mask_and_scaledecode_timesconcat_charactersdecode_coordsdrop_variables
use_cftimedecode_timedeltarC   r9   filename_or_obj;str | os.PathLike[Any] | BufferedIOBase | AbstractDataStorerv   str | Iterable[str] | Nonereturnr   c       	            t          |          }t          ||	|
          }t                      }t          |          5  |                    ||||||||          }d d d            n# 1 swxY w Y   |S )N)rC   r9   )rr   rs   rt   ru   rv   rw   rx   )r   r@   r   r   open_dataset)r%   ry   rr   rs   rt   ru   rv   rw   rx   rC   r9   storestore_entrypointr/   s                 r'   r~   z#PynioBackendEntrypoint.open_dataset   s     */::
 
 
 233E"" 
	 
	!..-)"3+-%!1 / 	 	B
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 	s   A))A-0A-)ry   rz   rv   r{   r|   r   )r<   r=   r>   rn   r~   r8   r)   r'   rq   rq   v   sY          59! ! ! ! ! ! ! !r)   rq   rG   pynio),
__future__r   rH   collections.abcr   typingr   r   numpyr"   xarray.backends.commonr   r   r	   r
   r   xarray.backends.file_managerr   xarray.backends.locksr   r   r   r   r   xarray.backends.storer   xarray.corer   xarray.core.utilsr   r   r   xarray.core.variabler   osior   xarray.core.datasetr   NCL_LOCKrK   r   r@   rq   r8   r)   r'   <module>r      sB   " " " " " "  $ $ $ $ $ $ % % % % % % % %                  < ; ; ; ; ;              9 8 8 8 8 8             @ @ @ @ @ @ @ @ @ @ ) ) ) ) ) ) ,III!!!!!!++++++ ]I|X>??
    l   6/ / / / /$ / / /d+ + + + +. + + +\ !&'=> G   r)   