
    dH                    6   d dl mZ d dlmZ d dlmZmZ d dl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 d d
lmZmZ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#  G d de          Z$d Z% G d de          Z& G d de          Z'de'fed<   dS )    )annotations)Iterable)TYPE_CHECKINGAnyN)Version)BACKEND_ENTRYPOINTSAbstractDataStoreBackendArrayBackendEntrypointrobust_getitem)StoreBackendEntrypoint)indexing)integer_types)Frozen
FrozenDictclose_on_erroris_dict_likeis_remote_uri)Variable)BufferedIOBase)Datasetc                  N    e Zd Zd Zed	d            Zed             Zd Zd ZdS )
PydapArrayWrapperc                    || _         d S N)array)selfr   s     6lib/python3.11/site-packages/xarray/backends/pydap_.py__init__zPydapArrayWrapper.__init__$   s    


    returntuple[int, ...]c                    | j         j        S r   )r   shaper   s    r   r$   zPydapArrayWrapper.shape'       zr    c                    | j         j        S r   )r   dtyper%   s    r   r(   zPydapArrayWrapper.dtype+   r&   r    c                b    t          j        || j        t           j        j        | j                  S r   )r   explicit_indexing_adapterr$   IndexingSupportBASIC_getitem)r   keys     r   __getitem__zPydapArrayWrapper.__getitem__/   s*    1X5;T]
 
 	
r    c                L   t          | j        d| j                  }t          ||t                    }t	          j        |          }t          d t          |          D                       }|j        t          |          z   |j        k    r|rt	          j
        ||          }|S )Nr   )catchc              3  J   K   | ]\  }}t          |t                    |V  d S r   )
isinstancer   ).0nks      r   	<genexpr>z-PydapArrayWrapper._getitem.<locals>.<genexpr>;   s5      RR41aZ=5Q5QRQRRRRRRr    )getattrr   r   
ValueErrornpasarraytuple	enumeratendimlensqueeze)r   r.   r   resultaxiss        r   r-   zPydapArrayWrapper._getitem4   s     
GTZ88s*===F##RR9S>>RRRRR;T"ej00T0Z--Fr    N)r!   r"   )	__name__
__module____qualname__r   propertyr$   r(   r/   r-    r    r   r   r   #   s|                 X      X 
 
 

    r    r   c                   t          |           } t          |           D ]Ŋ                                dk    s'                                                    d          r)|                     |                                          jt          |                    rF|                     fd|                                                               D                        | S )Nglobal_globalc                &    i | ]\  }} d | |S ).rG   )r4   k_childv_childr6   s      r   
<dictcomp>z#_fix_attributes.<locals>.<dictcomp>M   s=       ( $$7$$g  r    )dictlistlowerendswithupdatepopr   items)
attributesr6   s    @r   _fix_attributesrX   B   s    j!!J*  7799  AGGII$6$6y$A$A  jnnQ//0000*Q-(( 	    ,6NN1,=,=,C,C,E,E     r    c                  T    e Zd ZdZd Ze	 	 	 	 	 	 d	d            Zd Zd Zd Z	d Z
dS )
PydapDataStorezStore for accessing OpenDAP datasets with pydap.

    This store provides an alternative way to access OpenDAP datasets that may
    be useful if the netCDF4 library is not available.
    c                    || _         dS )zN
        Parameters
        ----------
        ds : pydap DatasetType
        N)ds)r   r\   s     r   r   zPydapDataStore.__init__\   s     r    Nc                ,   dd l }dd l}|ddlm}	 |	}||||pd|d}
t          |j        j                  t          d          k    r2||
                    d|i           ||
                    d|i            |j        j        di |
} | |          S )	Nr   )DEFAULT_TIMEOUTT)urlapplicationsessionoutput_gridtimeoutz3.3.0verifyuser_charsetrG   )	pydap.client	pydap.libr^   r   lib__version__rT   clientopen_url)clsr_   r`   ra   rb   rc   rd   re   pydapr^   kwargsr\   s               r   openzPydapDataStore.opend   s     	?111111%G &&.$
 
 59())WW-=-===!x0111'~|<==="U\",,V,,s2wwr    c                    t          j        t          |                    }t          |j        |t          |j                            S r   )r   LazilyIndexedArrayr   r   
dimensionsrX   rW   )r   vardatas      r   open_store_variablez"PydapDataStore.open_store_variable   s9    *+<S+A+ABBocn.M.MNNNr    c                h     t           fd j                                        D                       S )Nc              3  \   K   | ]&}|                     j        |                   fV  'd S r   )ru   r\   )r4   r6   r   s     r   r7   z/PydapDataStore.get_variables.<locals>.<genexpr>   sM       
 
:;Q((445
 
 
 
 
 
r    )r   r\   keysr%   s   `r   get_variableszPydapDataStore.get_variables   sE     
 
 
 
?Cw||~~
 
 
 
 
 	
r    c                N    t          t          | j        j                            S r   )r   rX   r\   rW   r%   s    r   	get_attrszPydapDataStore.get_attrs   s    odg&899:::r    c                4    t          | j        j                  S r   )r   r\   rr   r%   s    r   get_dimensionszPydapDataStore.get_dimensions   s    dg()))r    )NNNNNN)rC   rD   rE   __doc__r   classmethodro   ru   ry   r{   r}   rG   r    r   rZ   rZ   U   s                [BO O O
 
 

; ; ;* * * * *r    rZ   c                  H    e Zd ZdZdZdZddZd	d	d	d	d
d
d
d
d
d
d
d
d
dddZd
S )PydapBackendEntrypointa^  
    Backend for steaming datasets over the internet using
    the Data Access Protocol, also known as DODS or OPeNDAP
    based on the pydap package.

    This backend is selected by default for urls.

    For more information about the underlying library, visit:
    https://www.pydap.org

    See Also
    --------
    backends.PydapDataStore
    z6Open remote datasets via OPeNDAP using pydap in XarrayzWhttps://docs.xarray.dev/en/stable/generated/xarray.backends.PydapBackendEntrypoint.htmlfilename_or_obj;str | os.PathLike[Any] | BufferedIOBase | AbstractDataStorer!   boolc                J    t          |t                    ot          |          S r   )r3   strr   )r   r   s     r   guess_can_openz%PydapBackendEntrypoint.guess_can_open   s!     /3//RM/4R4RRr    TN)mask_and_scaledecode_timesconcat_charactersdecode_coordsdrop_variables
use_cftimedecode_timedeltar`   ra   rb   rc   rd   re   r   str | Iterable[str] | Noner   c                   t                               ||	|
||||          }t                      }t          |          5  |                    ||||||||          }|cd d d            S # 1 swxY w Y   d S )N)r_   r`   ra   rb   rc   rd   re   )r   r   r   r   r   r   r   )rZ   ro   r   r   open_dataset)r   r   r   r   r   r   r   r   r   r`   ra   rb   rc   rd   re   storestore_entrypointr\   s                     r   r   z#PydapBackendEntrypoint.open_dataset   s    $ ####% $ 
 
 233E"" 	 	!..-)"3+-%!1 / 	 	B 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A++A/2A/)r   r   r!   r   )r   r   r   r   r!   r   )rC   rD   rE   r~   descriptionr_   r   r   rG   r    r   r   r      s          KK
cCS S S S 59!( ( ( ( ( ( ( (r    r   rm   )(
__future__r   collections.abcr   typingr   r   numpyr:   packaging.versionr   xarray.backends.commonr   r	   r
   r   r   xarray.backends.storer   xarray.corer   xarray.core.pycompatr   xarray.core.utilsr   r   r   r   r   xarray.core.variabler   osior   xarray.core.datasetr   r   rX   rZ   r   rG   r    r   <module>r      s   " " " " " " $ $ $ $ $ $ % % % % % % % %     % % % % % %              9 8 8 8 8 8             . . . . . .              * ) ) ) ) ) ,III!!!!!!++++++       >  &>* >* >* >* >*& >* >* >*BA A A A A. A A AH !()?@ G   r    