
    >ie)                       d dl mZ d dlZd dlZd dlZ ej        d          Zd dlm	Z
 d dlmZmZ d dlmZ d dlmZmZ ej        d             Z G d d	          Zej                            d
e
j        e
j        j        fe
j        e
j        j        fe
j        e
j        j        fg          d             Zd Z ej!        d             Z"d Z#d Z$d Z%d Z&d Z'd Z(ej        )                    e d          ej                            dddg          d                         Z*d Z+d Z,ej                            dddg          d             Z-ej                            dddg          d             Z.ej        /                    d           d!             Z0ej                            d"dd ggd#d$g%          d&             Z1d' Z2dS )(    )annotationsNpandas)PANDAS_GE_140PANDAS_GE_210)to_pyarrow_string)	assert_eqpyarrow_strings_enabledc              #    K   	 dV  	 t          | |           n# t          $ r Y nw xY w| j                            |           dS # 	 t          | |           n# t          $ r Y nw xY w| j                            |           w xY w)zVEnsure that an attribute added to 'obj' during the test is
    removed when we're doneN)delattrAttributeError
_accessorsdiscard)objattrs     Clib/python3.11/site-packages/dask/dataframe/tests/test_accessors.pyensure_removedr      s      %	C 	 	 	D	t$$$$$		C 	 	 	D	t$$$$s;   A  
''BAB
A&#B%A&&Bc                  0    e Zd Zd Zed             Zd ZdS )
MyAccessorc                "    || _         d| _        d S )Nitem)r   r   )selfr   s     r   __init__zMyAccessor.__init__   s    			    c                    | j         S Nr   r   s    r   propzMyAccessor.prop"   s
    yr   c                    | j         S r   r   r   s    r   methodzMyAccessor.method&   s
    yr   N)__name__
__module____qualname__r   propertyr   r     r   r   r   r      sM             X    r   r   zobj, registrarc                   t          | d          5  t          t          |                     }  |d          t                     t	          j        |                     g t                    d          }|j        j	        dk    sJ t          t          |                     }||z  dhk    sJ d| j
        v sJ 	 d d d            d S # 1 swxY w Y   d S )Nminedtype   r   )r   setdirr   ddfrom_pandas_partition_typefloatr'   r   r   )r   	registrarbeforeinstanceafters        r   test_registerr5   *   s    
V	$	$ ( (SXX		&*%%%>#"5"5b"5"F"FJJ}!V++++CHHF8++++'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   B*C		CCc                    t          t          j        d          5  t          j                            d          t
                     t                              ddg          } t          j        | d          }|j        j	        |u sJ |j        j
        dk    sJ |j                                        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr'      r*   r   )r   r-   Series
extensionsregister_series_accessorr   pdr.   r'   r   r   r    )abs     r   test_accessor_worksr>   =   s    		6	*	* ) )
..v66zBBBIIq!fN1a  vzQv{f$$$$v}}&((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   BCCCc                 b   dd l } t                              g dg d | j        t	          d          t	          d          t	          d          d gd          d	g d
          }|d                             d          |d<   t          j        |j        d<   t          j	        |d          }||fS )Nr   )abcbcdcdefDEFG)r7   r*         g    eAg   *dAg    AzM8[ns]r(   )str_colint_coldt_col)EfghindexrF   string
string_col)rI   rP   r*   )
numpyr;   	DataFramearrayintastypeNAlocr-   r.   )npdfddfs      r   df_ddfr[   I   s    	555#||bhS3u::s5zz48  	
 	
 #"" 
 	
 	
B )}++H55B| "BF
.Q

Cs7Nr   c                    | \  }}dt          |j        j                  v sJ t          |j        j        j        |j        j        j        d           t
          rt          nd }t          j        |d          5  |j        j        	                                }d d d            n# 1 swxY w Y   t          j        |d          5  t                              |j        j        	                                |j        t                    }d d d            n# 1 swxY w Y   t          ||           t          |j        j        j        j                  t          |j        j        j        j                  k    sJ t          j        |d          5  t          |j        j        	                                j                  t          |j        j        	                                j                  k    sJ 	 d d d            d S # 1 swxY w Y   d S )NdateF)check_nameszwill return a Seriesmatch)rN   r)   )r,   rH   dtr   r]   r   FutureWarningpytestwarnsto_pydatetimer;   r8   rN   objectr+   dask)r[   rY   rZ   warning
ddf_result	pd_results         r   test_dt_accessorrk   `   s   GBS'''''' cjm "),"3GGGG,6mm$G 
g%;	<	<	< 3 3Z]0022
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	g%;	<	<	< 
 
IIIL&&((  
 
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 j)$$$sz}!&''3sz}/A/F+G+GGGGG	g%;	<	<	< 
 
3:=..00566#JM'')).;
 ;
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s8   9B$$B(+B(ADDDA%HH
Hc                    | \  }}t          j        t                    5 }|j        j         d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nz.dt accessor)rc   raisesr   rF   ra   strvaluer[   rY   rZ   excs       r   test_dt_accessor_not_availablerr   {   s    GB 
~	&	& #              S^^++++++   8<<c                   | \  }}dt          |j        j                  v sJ dt          |j        j                  v sJ dt          |j        j                  v sJ dt          |j        j                  vsJ t          |j        j        d          rJ t          |j        j                                        |j        j                                                   t          |j        j                                        j	                  t          |j        j                                        j	                  k    sJ t          |j        j                                        |j        j                                                   t          |j        j                                        j	                  t          |j        j                                        j	                  k    sJ t          |j        j                                        |j        j                                                   t          |j        j                                        j	                  t          |j        j                                        j	                  k    sJ t          j                    }t                      rEt          |j                  |_        t          s%t          j        t"          j        j        d          }t          |j        j                            d          |j        j                            d                     t          |j        j                            d          |j        j                            d                     t          |j        j                            d          j	                  t          |j        j                            d          j	                  k    sJ |5  |j        j                            dd          }d d d            n# 1 swxY w Y   t          |j        j                            dd          |           t          |j        j                            dd          j	                  t          |j        j                            dd          j	                  k    sJ d	D ]}t          |j        j                            d|
          |j        j                            d|
                     t          |j        j                            d|
          j	                  t          |j        j                            d|
          j	                  k    sJ d	D ]}t          |j        j                            d|          |j        j                            d|                     t          |j        j                            d|          j	                  t          |j        j                            d|          j	                  k    sJ d S )Nupperget_dummieszFalling back on a non-pyarrowr_   r<   dF)case)TF)na)regex)r,   rF   rn   rP   rN   hasattrr   ru   r+   rg   
contextlibnullcontextr	   r   r   rc   rd   r;   errorsPerformanceWarningcontains)r[   rY   rZ   ctxexpectedry   rz   s          r   test_str_accessorr      s   GB c#+/******c#.,------c#)-(((((( CKO 4 44444s{66666 cko##%%rz~';';'='=>>>s{$$&&+,,CKO4I4I4K4K4P0Q0QQQQQcn &&(("-*;*A*A*C*CDDDs~!'')).//3s~7I7O7O7Q7Q7V3W3WWWWWcim!!##RX\%7%7%9%9:::sy}""$$)**c#)-2E2E2G2G2L.M.MMMMM 
 
"
"C   &rz22
 	,	,4S  C   %%

$$   cn ))#..0A0J0J30O0OPPPs{'',,122c  %%*7 7     
 < <:>**3U*;;< < < < < < < < < < < < < < <  5 11   s{''%'88=>>#  5 116C C      
 
KO$$SR$00JN##CB#//	
 	
 	
 3;?++CB+77<==KO$$SR$005B
 B
 
 
 
 
 
  
 
KO$$S$66JN##Cu#55	
 	
 	
 3;?++Cu+==BCCsKO$$S$66;H
 H
 
 
 
 
 

 
s   <"P**P.1P.c                    | \  }}t          j        t                    5 }|j        j         d d d            n# 1 swxY w Y   dt	          |j                  v sJ dt          |j                  vsJ d S )Nz.str accessorrn   )rc   rm   r   rG   rn   ro   r,   rp   s       r   test_str_accessor_not_availabler      s    GB 
~	&	& #              c#)nn,,,,CK((((((((rs   c                    | \  }}t          |j        j        d d         |j        j        d d                    t          |j        j        d         |j        j        d                    d S )Nr*   r7   )r   rF   rn   r[   rY   rZ   s      r   test_str_accessor_getitemr      s]    GBckobqb!2:>"1"#5666ckoa "*."344444r   c                    | \  }}t          |j        j                            d          |j        j                            d                     d S )Nz	(.*)b(.*))r   rF   rn   
extractallr   s      r   test_str_accessor_extractallr      sP    GB"";//1J1J;1W1W    r   zrequires pandas >= 1.4.0)reasonr    removeprefixremovesuffixc                `   | \  }}|j         j        d         d d         }|j         j        d         dd          }d}fd}t           |||           |||                     t           |||           |||                     t           |||           |||                     d S )Nr   r*   z"definitely a missing prefix/suffixc                J     t          | j        j                  |          S r   )getattrrF   rn   )rY   argr    s     r   callz9test_str_accessor_removeprefix_removesuffix.<locals>.call   s!    .wrz~v..s333r   )rF   ilocr   )r[   r    rY   rZ   prefixsuffixmissingr   s    `      r   +test_str_accessor_removeprefix_removesuffixr      s     GBZ_Q#FZ_Q$F2G4 4 4 4 4 dd3b&!1!1222dd3b&!1!1222dd3  $$r7"3"344444r   c                   | \  }}|j         j                            |j         j                                        d          }t	          |j         j                            |j         j                                        d          |           t	          |j         j                            |j         j                                        d          |           t	          |j         j                            |j         j                                        |j         j                                        gd          |j         j                            |j         j                                        |j         j                                        gd                     t	          |j         j                            d          |j         j                            d                     ddgfD ]R}t          j        t                    5  |j         j                            |           d d d            n# 1 swxY w Y   Sd S )N:)sepfoo)	rF   rn   catru   r   lowerrc   rm   	TypeError)r[   rY   rZ   solos        r   test_str_accessor_catr      s   GB
*.

RZ^1133

=
=Ccko!!#+/"7"7"9"9s!CCSIIIcko!!"*."6"6"8"8c!BBCHHHS[_2244bjn6J6J6L6LMSVWW

BJN0022BJN4H4H4J4JKQTUU   cko!!c!**BJN,>,>3,>,G,GHHHeW # #]9%% 	# 	#KO"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	## #s    H33H7	:H7	c                    t                               dddddt          j        gd          } t	          j        | d          }t          |j                                        | j                                                   t          |j                            d	          | j                            d	                     t          |j                            d
d          | j                            d
d                     d S )Nr<   r=   cr   namer*   npartitions-)na_rep_)r   r   )	r;   r8   rX   nanr-   r.   r   rn   r   sdss     r   test_str_accessor_cat_noner     s    
		3S#sBF3%	@@A	q	)	)	)BbfjjllAEIIKK(((bfjjj$$aeiisi&;&;<<<bfjjSj--quyySy/M/MNNNNNr   splitrsplitc           	          fd}t                               g dd          }t          j        |d          }dD ]*}t	           |||d	           |||d	                     + ||d
d	          j        dk    sJ d S )Nc                :     t          | j                  |i |S r   r   rn   r   argskwargsr    s      r   r   z.test_str_accessor_split_noexpand.<locals>.call  $    'wsw''8888r   a b c dzaa bb cc ddaaa bbb ccc ddddr   r   r*   r   r7   r*   rD   Fnexpandr7   )r;   r8   r-   r.   r   r   )r    r   r   r   r   s   `    r    test_str_accessor_split_noexpandr     s    9 9 9 9 9 			@@@u	MMA	q	)	)	)B K K$$qAe,,,dd25.I.I.IJJJJ4a&&&+u444444r   c           
     F     fd}t                               g dg d          }t          j        |d          }dD ]*}t	           |||d	           |||d	                     +t          j        t                    5 } ||d
           d d d            n# 1 swxY w Y   dt          |j	                  v sJ t                               g d          }t          j        |d          }dD ],}t	           ||d|d           ||d|d                     -d S )Nc                :     t          | j                  |i |S r   r   r   s      r   r   z,test_str_accessor_split_expand.<locals>.call  r   r   r   )row1row2row3rM   r*   r   r   Tr   )r   zn=)z
a,bcd,zz,fzaabb,ccdd,z,kkzaaabbb,cccdddd,l,pp,)patr   r   )
r;   r8   r-   r.   r   rc   rm   NotImplementedErrorrn   ro   )r    r   r   r   r   infos   `     r   test_str_accessor_split_expandr     s   9 9 9 9 9 			666>V>V>V 	 	 	A 
q	)	)	)B I I$$qAd+++TT"$-G-G-GHHHH	*	+	+ tR               3tz??""""
		IIIJJA	q	)	)	)B 
 
Dq...RSAd0S0S0S	
 	
 	
 	

 
s   BB!$B!zNeed to pad columnsc                    t                               g d          } t          j        | d          }t	          | j                            dd          |j                            dd                     t                               g d          } t          j        | d          }|j                            dd                                           d S )	N)r   aar   r*   r   rD   Tr   )za b czaa bb cczaaa bbb ccc
   )r;   r8   r-   r.   r   rn   r   computer   s     r   +test_str_accessor_split_expand_more_columnsr   5  s    
		77788A	q	)	)	)BaekkAdk++RV\\Ad\-K-KLLL
		66677A	q	)	)	)BFLL2dL##++-----r   rN   range_indexzother index)idsc                   t                               ddgi|           }t          j        |d          }|d         j                            ddd          }|d         j                            ddd          }t          ||           d S )	Nr<   za
brM   r7   r   
Tr   )r;   rR   r-   r.   rn   r   r   )rN   rY   rZ   pd_add_as        r   test_str_split_no_warningr   B  s    	sVHoU	3	3B
.
+
+
+Cc7;TQt44Ds8<da55DdDr   c                4   | \  }}t          |j        j                            d          |j        j                            d                     t          |j        j                                        |j        j                                                   d S )NA)r   rP   rn   countisalphar   s      r   test_string_nullable_typesr   M  sy    GBcn &&s++R]->-D-DS-I-IJJJcn ((**BM,=,E,E,G,GHHHHHr   )3
__future__r   r|   rQ   rX   rc   importorskipr;   dask.dataframe	dataframer-   dask.dataframe._compatr   r   dask.dataframe._pyarrowr   dask.dataframe.utilsr   r	   contextmanagerr   r   markparametrizer8   r9   r:   rR   register_dataframe_accessorIndexregister_index_accessorr5   r>   fixturer[   rk   rr   r   r   r   r   skipifr   r   r   r   r   xfailr   r   r   r%   r   r   <module>r      sA   " " " " " "         V""       ? ? ? ? ? ? ? ? 5 5 5 5 5 5 C C C C C C C C 
% 
% 
%
 
 
 
 
 
 
 
 	BM:;	r}@A	2=89 ( ( (	) 	) 	)   ,
 
 
6, , ,D
 D
 D
N) ) )5 5 5   %.HIINN#CDD5 5 ED JI5# # # O O O GX#677
5 
5 87
5 GX#677
 
 87
4 /00	. 	. 10	. 4!+M=3QRR  SRI I I I Ir   