
    d-               
         d dl mZ d dlmZ d dl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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        ej        f          d+d            Zd+dZed+d            Zd+dZej                            d edddg           edd           edddg           edd          g          d+d            Zej                            d ej        ddg           ej        ddg e
j         e!                    g          d+d            Z"ej                            ddg edddg          df edddgddi           dfg          d+d!            Z#d+d"Z$d+d#Z%d+d$Z&d+d%Z'd+d&Z(d+d'Z)ed+d(            Z*d+d)Z+ed+d*            Z,dS ),    )annotations)suppressN)Variable)strings)indexing)IndexerMakerassert_array_equalassert_identicalrequires_daskreturnNonec                    t          j        t                    } | j        d         t          k    sJ t          j        |           sJ t          j        |           rJ t          j        |           t          u sJ t          j        t                    } | j        d         t          k    sJ t          j        |           rJ t          j        |           sJ t          j        |           t          u sJ t          j	        ddt          i          } t          j        |           t          u sJ t          j        t          j	        t                              J d S )Nelement_typeOvlen)metadata)r   create_vlen_dtypestrr   is_unicode_dtypeis_bytes_dtypecheck_vlen_dtypebytesnpdtypeobjectr   s    @lib/python3.11/site-packages/xarray/tests/test_coding_strings.pytest_vlen_dtyper      sC   %c**E>.)S0000#E*****%e,,,,,#E**c1111%e,,E>.)U2222'.....!%(((((#E**e3333 HSFC=111E#E**c1111#BHV$4$455=====    numpy_str_typec                    t          j        t          d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )Nzunsupported type for vlen_dtypematch)pytestraises	TypeErrorr   r   )r    s    r   test_numpy_subclass_handlingr'   *   s    	y(I	J	J	J 2 2!.1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   >AAc                    t          j                    } t          j        dd                                g          }t          d|ddi          }|                     |          }t          dt          j        ddgt                              }t          ||           t          |                     |d                   |d                    d S 	N   abc
   ß∂µ∆x	_Encodingutf-8abcr   r   )	r   EncodedStringCoderr   arrayencoder   decoder   r
   )coderraw_datarawactualexpecteds        r   test_EncodedStringCoder_decoder:   0   s    &((Ex!4!4!6!6788H
68k7%;
<
<C\\#F%)>f M M MNNHVX&&&U\\&),,hqk:::::r   c                 L   t          j                    } t          j        dd                                g          }t          d|ddi                                          }|                     |          }t          |j	        t          j                  sJ t          dt          j        ddgt                              }t          ||           |                     |d                   }t          |j	        t          j                  sJ t          ||d                    d S r)   )r   r1   r   r2   r3   r   chunkr4   
isinstancedatadaArrayr   r
   )r5   r6   r7   r8   r9   actual_indexeds         r   #test_EncodedStringCoder_decode_daskrB   =   s    &((Ex!4!4!6!6788H
68k7%;
<
<
B
B
D
DC\\#Ffk28,,,,,%)>f M M MNNHVX&&&\\&),,Nn)2844444^Xa[11111r   c                 L   t          j        t                    } t          j        ddg|           }t          j        d |D             t
                    }t          j        d          }t          d|dd	i
          }|                    |          }t          d|ddi          }t          ||           t          d|          }t          |                    |          |           t          j        d          }t          |                    |          |           d S )Nr0   r+   r   c                8    g | ]}|                     d           S )r/   )r3   ).0rs     r   
<listcomp>z2test_EncodedStringCoder_encode.<locals>.<listcomp>Q   s$    BBBAahhw//BBBr   T)allows_unicoder,   r   S1encodingr.   r/   )attrsF)
r   r   r   r   r2   r   r1   r   r3   r
   )r   r6   expected_datar5   r7   r8   r9   s          r   test_EncodedStringCoder_encoderN   N   s   %c**Ex-U;;;HHBBBBB&QQQM&d;;;E
68wo
>
>
>C\\#Fk75KLLLHVX&&&
68
$
$CU\\#&&,,,&e<<<EU\\#&&11111r   originalr,      abs   cdef    a   bc                    t          j                    }|                    |                    |                     }t	          | |           d S )N)r   CharacterArrayCoderr4   r3   r
   )rO   r5   roundtrippeds      r   "test_CharacterArrayCoder_roundtriprW   `   sE     '))E<<X 6 677LX|,,,,,r   r>   s   bcr   c                    t          j                    }t          d|           }|                    |          }t          dt	          j        ddgddgg                    }t          ||           d S )Nr,   )r-   string2rR   r   rS      c)r   rU   r   r3   r   r2   r
   )r>   r5   r7   r8   r9   s        r   test_CharacterArrayCoder_encoder[   o   so     '))E
64
 
 C\\#F("(T3K$3N*O*OPPHVX&&&&&r   expected_char_dim_namestring4char_dim_namefoorJ   c                   t          j                    }|                    |           }|                    |          }|j        d         |k    sJ |j        d         |k    sJ |j        d         | j        d         k    sJ d S )Nr^   )r   rU   r3   r4   dimsrK   )rO   r\   r5   encodedrV   s        r   &test_CharacterArrayCoder_char_dim_namerd   ~   s     '))Ell8$$G<<((L<55555 15KKKKKR HM"$5555555r   c                    t          j        g dg dgd          } t          j        |           }t          j        ddgd          }|j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ t          |          t          |          k    sJ t          ||           t          t          j                  }t          |d d         ||d d                             t          j        t                    5  ||d d d df                   d d d            d S # 1 swxY w Y   d S )	NrR   rS   rZ      d   e   fSr   r*      def      )r   r2   r   StackedBytesArrayr   shapesizendimlenr	   r   r   BasicIndexerr$   r%   
IndexErrorr2   r8   r9   Bs       r   test_StackedBytesArrayrx      s   H(((*<*<*<=SIIIE&u--Fx(444H<8>))))<8>))));(-'''';(-''''v;;#h--''''x(((X*++Ax|VAbqbE]333	z	"	"  qBQBx                 s   D==EEc                    t          j        g dd          } t          j        |           }t          j        d          }|j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ t          j	        t                    5  t          |           d d d            n# 1 swxY w Y   t           j                            ||           t          t          j                  }t          j	        t"                    5  ||d d                   d d d            d S # 1 swxY w Y   d S )Nrf   rk   r   r*   rn   )r   r2   r   ro   r   rp   rq   rr   r$   r%   r&   rs   testingr	   r   r   rt   ru   rv   s       r   test_StackedBytesArray_scalarr{      s   H'''s333E&u--FxH<8>))))<8>))));(-'''';(-''''	y	!	!  F              J!!(F333X*++A	z	"	"  q!u                 s$   "B>>CCD99D= D=c                 <   t          j        g dg dgd          } t          j        |           }t          j        ddgddgg          }t	          t
          j                  }|t          j        ddgddgg                   }||         }t          ||           d S )	Nrf   rg   rk   r   r*   rl   r   rm   )r   r2   r   ro   r   r   VectorizedIndexerr	   )r2   stackedr9   Vindexerr8   s         r   *test_StackedBytesArray_vectorized_indexingr      s    H(((*<*<*<=SIIIE'..Gx&&)FF+;<==HX/00A1a&1a&)**+GWFvx(((((r   c                 ,   t          j        g dg dg          } t          j        ddg          }t          j        |           }t	          ||           t          j        g d          }t          j        | j                  }t	          ||           d S )Nrf   rg   r*   rl   )s   ads   bes   cf)r   r2   r   char_to_bytesr	   Tr2   r9   r8   s      r   test_char_to_bytesr      s    H(((*<*<*<=>>Ex())H"5))Fvx(((x---..H"57++Fvx(((((r   c                 v    t          j        d          } t          j        |           }t	          ||            d S )NrR   )r   r2   r   r   r	   )r9   r8   s     r   test_char_to_bytes_ndim_zeror      s5    x~~H"8,,Fvx(((((r   c                     t          j        dd          } t          j        g d          }t          j        |           }t          ||           d S )N)   r   rI   r   )r   r   r   )r   zerosr2   r   r   r	   r   s      r   test_char_to_bytes_size_zeror      sO    HV4(((Ex((H"5))Fvx(((((r   c                    t          j        g dg dg          } t          j        | d          }t          j        ddg          }t	          j        |          }t          |t          j                  sJ |j        dk    sJ |j	        dk    sJ t          t          j        |          |           t          j        t          d	          5  t	          j        |                    d
                     d d d            d S # 1 swxY w Y   d S )Nrf   rg   )rn   )r   r*   rl   )r   S3zstacked dask character arrayr"   rm   )r   r2   r?   
from_arrayr   r   r=   r@   chunksr   r	   r$   r%   
ValueErrorrechunknumpy_arrayr2   r9   r8   s       r   test_char_to_bytes_daskr      sH   (...0B0B0BCDDKM+|44Ex())H"5))Ffbh'''''=G####<4rx''222	z)H	I	I	I 0 0emmA..///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   (DD	Dc                 \   t          j        ddgddgg          } t          j        ddgddggd	d
gddggg          }t          j        |           }t	          ||           t          j        ddgd	d
ggddgddggg          }t          j        | j                  }t	          ||           d S )NrP      cds   efs   ghrR   rS   rZ   rh   ri   rj      g   h)r   r2   r   bytes_to_charr	   r   r   s      r   test_bytes_to_charr      s    Huenuen566Ex4,t5ttTl7STUUH"5))Fvx(((x4,t5ttTl7STUUH"57++Fvx(((((r   c                 h   t          j        ddg          } t          j        | d          }t          j        ddgddgg          }t	          j        |          }t          |t          j                  sJ |j        dk    sJ |j	        d	k    sJ t          t          j        |          |           d S )
NrP   r   )rm   rm   rR   rS   rZ   rh   )r   r   rI   )r   r2   r?   r   r   r   r=   r@   r   r   r	   r   s       r   test_bytes_to_char_daskr      s    (E5>**KM+y11Ex$d|455H"5))Ffbh'''''=,,,,,<4rx''22222r   )r   r   )-
__future__r   
contextlibr   numpyr   r$   xarrayr   xarray.codingr   xarray.corer   xarray.testsr   r	   r
   r   ImportError
dask.arrayr2   r?   r   markparametrizestr_bytes_r'   r:   rB   rN   rW   r   r   r[   rd   rx   r{   r   r   r   r   r   r   r   rQ   r   r   <module>r      s   " " " " " "                  ! ! ! ! ! !                        Xk                > > > >( )BGRY+?@@2 2 2 A@2

; 
; 
; 
; 2 2 2 2 2 2 2 2$ %)**U$&&T	 - - - - 
$$&?g&?&F&FGGG ' ' ' ' )*	&5'*	+	+Y7	&5'*ou5M	N	N	NPUV 6 6 6 6   "   $) ) ) )) ) ) )) ) ) )) ) ) ) 0 0 0 0) ) ) ) 3 3 3 3 3 3s   AAA