
    dW                       U d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
Zd dlmZ d dlmZmZmZ eej        fZere	d         Zeee         d	f         Z G d
 d          Zi Zded<   ddZddZddZd Zd Z ddZ!d Z"dS )    )annotations)import_module)
ModuleType)TYPE_CHECKINGAnyLiteralN)Version)is_duck_array	is_scalarmodule_available)daskpintcupysparsecubed.c                  D    e Zd ZU dZded<   ded<   ded<   ded	<   ddZdS )DuckArrayModulez
    Solely for internal isinstance and version checks.

    Motivated by having to only import pint when required (as pint currently imports xarray)
    https://github.com/pydata/xarray/pull/5561#discussion_r664815718
    zModuleType | Nonemoduler	   versionDuckArrayTypestypebool	availablemodModTypereturnNonec                   	 t          |          }t          |j                  }|dk    rt          d          j        f}nC|dk    r	|j        f}n4|dk    r	|j        f}n%|dk    r	|j        f}n|dk    r	|j        f}nt          n*# t          t          f$ r d }t          d          }d}Y nw xY w|| _
        || _        || _        |d u| _        d S )	Nr   z
dask.arrayr   r   r   r   z0.0.0 )r   r	   __version__ArrayQuantityndarraySparseArrayNotImplementedErrorImportErrorAttributeErrorr   r   r   r   )selfr   duck_array_moduleduck_array_versionduck_array_types        4lib/python3.11/site-packages/xarray/core/pycompat.py__init__zDuckArrayModule.__init__    s   	! -c 2 2!():)F!G!Gf}}#0#>#>#D"F#4#="?#4#<">#4#@"B#4#:"<))^, 	! 	! 	! $!(!1!1 OOO	!
 ()#	*$6s   BB $B,+B,N)r   r   r   r   )__name__
__module____qualname____doc____annotations__r-   r       r,   r   r      sc           OOO7 7 7 7 7 7r3   r   zdict[ModType, DuckArrayModule]_cached_duck_array_modulesr   r   r   c                d    | t           vrt          |           }|t           | <   |S t           |          S N)r4   r   )r   duckmods     r,   _get_cached_duck_array_moduler8   C   s6    
,,,!#&&*1"3')#..r3   r   c                *    t          |           j        S )z3Quick wrapper to get the array class of the module.)r8   r   r   s    r,   
array_typer;   L   s    (--22r3   r	   c                *    t          |           j        S )z/Quick wrapper to get the version of the module.)r8   r   r:   s    r,   mod_versionr=   Q   s    (--55r3   c                F    t          d          rddlm}  ||           S dS )Nr   r   )is_dask_collectionF)r   	dask.baser?   )xr?   s     r,   r?   r?   V   s:     %000000!!!$$$5r3   c                >    t          |           ot          |           S r6   )r
   r?   rA   s    r,   is_duck_dask_arrayrD   ^   s    5 21 5 55r3   r   c                ^    t          |           pt          |           ot          | d          S )Nchunks)rD   r
   hasattrrC   s    r,   is_chunked_arrayrH   b   s,    a  O]1%5%5%N'!X:N:NOr3   c                >    t          |           ot          |           S r6   )rD   r   rC   s    r,   is_0d_dask_arrayrJ   f   s    a  1Yq\\1r3   )r   r   r   r   )r   r   r   r   )r   r   r   r	   )r   r   )#
__future__r   	importlibr   typesr   typingr   r   r   numpynppackaging.versionr	   xarray.core.utilsr
   r   r   intintegerinteger_typesr   tupler   r   r   r4   r2   r8   r;   r=   r?   rD   rH   rJ   r   r3   r,   <module>rW      s   " " " " " " " # # # # # #       . . . . . . . . . .     % % % % % % H H H H H H H H H Hbj! +?@G49c>*N*7 *7 *7 *7 *7 *7 *7 *7Z >@  ? ? ? ?/ / / /3 3 3 3
6 6 6 6
  6 6 6P P P P2 2 2 2 2r3   