
    d*                        d dl mZ d dlmZ d dlZd dlZd dlZd dl	Z
d dlmZ d dlmZmZ d dlmZmZmZmZ  ee          5  d dlmZ ddd           n# 1 swxY w Y   d%d	Z ej        d
           ej        d           ej        d          dZ ej        d           ej        d          dZg defg def ej        dd          efdZ ej!        "                    de #                                 e$e %                                                    d%d            Z&d%dZ'ed%d            Z(d%dZ)ej!        "                    dd*                                          d%d            Z+ej!        "                    dddgf          ej!        "                    dddgf          d%d                         Z,ej!        "                    d!g d"          d%d#            Z-ej!        "                    d!g d"          d%d$            Z.dS )&    )annotations)suppressN)	variables)decode_cf_variableencode_cf_variable)assert_allcloseassert_equalassert_identicalrequires_daskreturnNonec                     t          j        dg dddi          } t          j        ddt          j        dg          }t	          j                    }|                    |           }t          ||           d S Nx)r      
_FillValuer   r   r   )xrVariablenpnanr   CFMaskCoderdecoder
   originalexpectedcoderencodeds       8lib/python3.11/site-packages/xarray/tests/test_coding.pytest_CFMaskCoder_decoder!      sl    {6:::b/ABBH{6Arvq>22H!##Ell8$$GXw'''''    float64g@xD)dtyper   missing_value)r   r%   )        g            ?2000   )periods)znumeric-with-dtypeznumeric-without-dtypeztimes-with-dtype)dataencoding)idsc                t   t          j        d| |          }t          |          }|j        |j        d         j        k    sJ |j        |j        d         j        k    sJ t          j        t          j                  5  t          d|          }t          ||           d d d            d S # 1 swxY w Y   d S )Nr   r,   r%   r   foo)r   r   r   r$   attrspytestwarnsr   SerializationWarningr   r
   )r+   r,   r   r   roundtrippeds        r    4test_CFMaskCoder_encode_missing_fill_values_conflictr6   *   s     {64(;;;H **G=GM/:@@@@@=GM,7=====	i4	5	5 1 1)%99x0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   ?!B--B14B1c                 4   t          j        t          j        g dg dg          ddgd          } d| j        d<   t          j        |                                           }t           j                            |j	        |j                  \  }}t          |d         | j                   d	|j        j        d
<   t          j        t                     5  t           j                            |j	        |j                  \  }}d d d            d S # 1 swxY w Y   d S )N)i#i  ikl  i9l  )ic  r8   in  r8   nptsntimestmpk)dimsnamer8   r%   i,r   )r   	DataArrayr   arrayr1   	decode_cf
to_datasetconventions
cf_encoderr   r	   variabler;   r,   r2   raises
ValueError)r   decodedr   _s       r    test_CFMaskCoder_missing_valuerI   ;   sZ   |
...0L0L0LMNNh  H
 ',HN?#l8..0011G**7+<gmLLJGQ("3444*/GL,'	z	"	" Q Q^..w/@'-PP
Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   .DDDc                 T   t          j        dg dddi                                          } t          j        ddt          j        dg          }t          j                    }|                    |           }t          |j	        t          j                  sJ t          ||           d S r   )r   r   chunkr   r   r   r   r   
isinstancer+   daArrayr
   r   s       r    test_CFMaskCoder_decode_daskrO   M   s    {6:::b/ABBHHJJH{6Arvq>22H!##Ell8$$GglBH-----Xw'''''r"   c                     t          j        ddt          j        dg          } t	          j                    }|                    |                    |                     }t          | |           d S )Nr   r&   r'   )	r   r   r   r   r   r   r   encoder
   )r   r   r5   s      r    test_coder_roundtriprR   [   s]    {6C#566H!##E<<X 6 677LX|,,,,,r"   r$   zu1 u2 i1 i2 f2 f4c                n   t          j        dt          j        d|           t	          d                    }t          j                    }|                    |          }|j        t          j	        k    sJ |
                    |          }t          ||           |j        t          j	        k    sJ d S )Nr   
   r$   )scale_factorr/   )r   r   r   arangedictr   CFScaleOffsetCoderrQ   r$   float32r   r
   )r$   r   r   r   r5   s        r     test_scaling_converts_to_float32r[   b   s    {	"E***Tr5J5J5J  H (**Ell8$$G=BJ&&&&<<((LX|,,,++++++r"   rV   rT   
add_offsetg?c                   t          | |          }t          j        dt          j        d          |          }t          j                    }|                    |          }|                    |          }t          ||           d S )N)rV   r\   r   g      $@r/   )
rX   r   r   r   rW   r   rY   rQ   r   r   )rV   r\   r,   r   r   r   r5   s          r    test_scaling_offset_as_listr^   o   sz     *EEEH{629T??XFFFH(**Ell8$$G<<((LHl+++++r"   bits)r            c                   t          j        d|            }t          j        d|            }t          j        t          j        |          j        g|          }t          j        d|                    |          ddi          }t          j	                    }|
                    |          }|j        |k    sJ |j        |k    sJ d S )NuirU   r   	_Unsignedtruer1   )r   r$   r?   iinfomaxr   r   astyper   UnsignedIntegerCoderr   valuesr_   unsigned_dtypesigned_dtypeoriginal_valuesr   r   rG   s          r     test_decode_unsigned_from_signedrr   {   s    Xj$jj))N8JJJ''Lh 8 8 <=^TTTOk&&|44[&<Q  G *,,Ell7##G=N****>_,,,,,,r"   c                l   t          j        d|            }t          j        d|            }t          j        dg|          }t          j        d|                    |          ddi          }t          j                    }|                    |          }|j        |k    sJ |j	        |k    sJ d S )	Nrd   re   r   rU   r   rf   falserh   )
r   r$   r?   r   r   rk   r   rl   r   rm   rn   s          r     test_decode_signed_from_unsignedru      s    Xj$jj))N8JJJ''Lht<888Ok&&~66{G>T  G *,,Ell7##G=L((((>_,,,,,,r"   )r   r   )/
__future__r   
contextlibr   numpyr   pandaspdr2   xarrayr   xarray.codingr   xarray.conventionsr   r   xarray.testsr   r	   r
   r   ImportError
dask.arrayr?   rM   r!   r$   rZ   r#   encoding_with_dtypeencoding_without_dtype
date_range'CFMASKCODER_ENCODE_DTYPE_CONFLICT_TESTSmarkparametrizerm   listkeysr6   rI   rO   rR   splitr[   r^   rr   ru    r"   r    <module>r      s   " " " " " "                    # # # # # # E E E E E E E E W W W W W W W W W W W WXk                ( ( ( ( RXi  "*T""RZ%%   "*T""RZ%%  
 ,++-@A...0FG&vq999;NO+ + ' +2244499;;<<   
	1 	1 	1 
	1Q Q Q Q$ ( ( ( (- - - - "5";";"="=>>	, 	, 	, ?>	, "rd44cU|44, , , 54 54, ..
- 
- 
- /.
- ..
- 
- 
- /.
- 
- 
-s   AAA