
    bih*                       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,                  j/                  d
e
j0                  e
j2                  j4                  fe
j6                  e
j2                  j8                  fe
j:                  e
j2                  j<                  fg      d        Zd Z ejB                  d        Z"ej,                  jG                  d      ej,                  jI                  ed      d               Z%d Z&d Z'd Z(d Z)d Z*ej,                  j/                  dddg      d        Z+d Z,d Z-ej,                  j/                  dddg      d        Z.ej,                  j/                  dddg      d         Z/ej,                  jI                  d!      d"        Z0ej,                  j/                  d#dd ggd$d%g&      d'        Z1d( Z2y))    )annotationsNpandas)PANDAS_GE_210PANDAS_GE_300)to_pyarrow_string)	assert_eqpyarrow_strings_enabledc              #     K   	 d 	 t        | |       | j                  j                  |       y# t        $ r Y 'w xY w# 	 t        | |       n# t        $ r Y nw xY w| j                  j                  |       w xY ww)zVEnsure that an attribute added to 'obj' during the test is
    removed when we're doneN)delattrAttributeError
_accessorsdiscard)objattrs     ^/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/dataframe/tests/test_accessors.pyensure_removedr      sx     %	C 	t$  			C 		t$sU   A=A  1 A=	=A==A= A:AA:	AA:AA::A=c                  (    e Zd Zd Zed        Zd Zy)
MyAccessorc                     || _         d| _        y )Nitem)r   r   )selfr   s     r   __init__zMyAccessor.__init__   s    	    c                    | j                   S Nr   r   s    r   propzMyAccessor.prop"   s    yyr   c                    | j                   S r   r   r   s    r   methodzMyAccessor.method&   s    yyr   N)__name__
__module____qualname__r   propertyr   r     r   r   r   r      s       r   r   zobj, registrarc                   | t         j                  u rt        j                  d       t	        | d      5  t        t        |             }  |d      t               t        j                  | 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        y # 1 sw Y   y xY w)Nz!from_pandas doesn't support Indexminedtype   r   )ddIndexpytestskipr   setdirr   from_pandas_partition_typefloatr'   r   r   )r   	registrarbeforeinstanceafters        r   test_registerr8   *   s     bhh78	V	$ (SX	&*%>>#"5"5b"5"FJ}}!!V+++CHF8+++'''( ( (s   BCC#c                    t        t        j                  d      5  t        j                  j	                  d      t
               t        j                  ddg      } t        j                  | d      }|j                  j                  |u sJ |j                  j                  dk(  sJ |j                  j                         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr'      r*   r   )r   r+   Series
extensionsregister_series_accessorr   pdr1   r'   r   r   r    )abs     r   test_accessor_worksrA   ?   s    			6	* )
..v6zBIIq!fNN1a vvzzQvv{{f$$$vv}}&((() ) )s   B*CCc                 J   dd l } t        j                  g dg d | j                  t	        d      t	        d      t	        d      d gd      d	g d
      }|d   j                  d      |d<   t        j                  |j                  d<   t        j                  |d      }||fS )Nr   )abcbcdcdefDEFG)r:   r*         g    eAg   *dAg    AzM8[ns]r(   )str_colint_coldt_col)EfghindexrI   string
string_col)rL   rS   r*   )
numpyr>   	DataFramearrayintastypeNAlocr+   r1   )npdfddfs      r   df_ddfr^   K   s    	5#bhhS3u:s5z48	
 # 
 	
B )}++H5B| "BFF
..Q
Cs7Nr   z)ignore:The behavior of DatetimePropertieszdivisions are incorrect)reasonc                V   | \  }}dt        |j                  j                        v sJ t        |j                  j                  j                  |j                  j                  j                  d       t
        rt        j                  t        d      }nt        j                         }|5  |j                  j                  j                         }d d d        |5  t        j                  |j                  j                  j                         |j                  t              }d d d        t               t!        |j                  j                  j                  j"                        t!        |j                  j                  j                  j"                        k(  sJ t!        |j                  j                  j                         j"                        t!        |j                  j                  j                         j"                        k(  sJ y # 1 sw Y   DxY w# 1 sw Y   xY w)NdateF)check_nameszwill return a Seriesmatch)rQ   r)   )r0   rK   dtr   ra   r   r-   warnsFutureWarning
contextlibnullcontextto_pydatetimer>   r;   rQ   objectr/   dask)r^   r\   r]   warning_ctx
ddf_result	pd_results         r   test_dt_accessorrp   b   s    GBS'''' cjjmm  ")),,"3"3Gll=8NO ,,. 
 3ZZ]]002
3	 
IIIILL&&(  
	
 j)$szz}}!!&&'3szz}}/A/A/F/F+GGGGszz}}**,112c

##%**7   3 3
 
s   +%HA	HHH(c                    | \  }}t        j                  t              5 }|j                  j                   d d d        dt        j                        v sJ y # 1 sw Y   #xY w)Nz.dt accessor)r-   raisesr   rI   re   strvaluer^   r\   r]   excs       r   test_dt_accessor_not_availablerw      sQ    GB 
~	& #S^+++ s   AA!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                  j                  j                                t        |j                  j                  j                         j                        t        |j                  j                  j                         j                        k(  sJ t        |j                  j                  j                         |j                  j                  j                                t        |j                  j                  j                         j                        t        |j                  j                  j                         j                        k(  sJ t        |j                  j                  j                         |j                  j                  j                                t        |j                  j                  j                         j                        t        |j                  j                  j                         j                        k(  sJ t        j                         }t               rOt        |j                        |_        t        s/t        j                   t"        j$                  j&                  d      }t        |j                  j                  j)                  d      |j                  j                  j)                  d             t        |j                  j                  j)                  d      |j                  j                  j)                  d             t        |j                  j                  j)                  d      j                        t        |j                  j                  j)                  d      j                        k(  sJ |5  |j                  j                  j)                  dd      }t        |j                  j                  j)                  dd      |       t        |j                  j                  j)                  dd      j                        t        |j                  j                  j)                  dd      j                        k(  sJ 	 d d d        d	D ]  }t        |j                  j                  j)                  d|
      |j                  j                  j)                  d|
             t        |j                  j                  j)                  d|
      j                        t        |j                  j                  j)                  d|
      j                        k(  rJ  d	D ]  }t        |j                  j                  j)                  d|      |j                  j                  j)                  d|             t        |j                  j                  j)                  d|      j                        t        |j                  j                  j)                  d|      j                        k(  rJ  y # 1 sw Y   xY w)Nupperget_dummieszFalling back on a non-pyarrowrc   r?   dF)case)TF)na)regex)r0   rI   rs   rS   rQ   hasattrr   ry   r/   rl   rh   ri   r	   r   r   r-   rf   r>   errorsPerformanceWarningcontains)r^   r\   r]   ctxexpectedr}   r~   s          r   test_str_accessorr      s   GB c#++//****c#..,,----c#))--(((( CKKOO 4444s{{666 ckkoo##%rzz~~';';'=>s{{$$&++,CKKOO4I4I4K4P4P0QQQQcnn  &&("--*;*;*A*A*CDs~~!!'')../3s~~7I7I7O7O7Q7V7V3WWWWciimm!!#RXX\\%7%7%9:syy}}""$))*c#))--2E2E2G2L2L.MMMM 
 
 
"C &rzz2
,,		,,4SC   %


$ cnn  ))#.0A0A0J0J30OPs{{'',112c  %**7    
 
::>>**3U*;KKOO$$Su$5	
 3;;??++Ce+<AABcKKOO$$Su$5::G
 
 	
 

  
KKOO$$SR$0JJNN##CB#/	
 3;;??++CB+7<<=KKOO$$SR$055B
 
 	
 

  
KKOO$$S$6JJNN##Cu#5	
 3;;??++Cu+=BBCsKKOO$$S$6;;H
 
 	
 

'
 
s   =C[??\	c                    | \  }}t        j                  t              5 }|j                  j                   d d d        dt	        j
                        v sJ dt        |j                        vsJ y # 1 sw Y   <xY w)Nz.str accessorrs   )r-   rr   r   rJ   rs   rt   r0   ru   s       r   test_str_accessor_not_availabler      sh    GB 
~	& #c#))n,,,CKK((((	 s   A11A:c                    | \  }}t        |j                  j                  d d |j                  j                  d d        t        |j                  j                  d   |j                  j                  d          y )Nr*   r:   )r   rI   rs   r^   r\   r]   s      r   test_str_accessor_getitemr      sW    GBckkoobq!2::>>"1#56ckkooa "**.."34r   c                    | \  }}t        |j                  j                  j                  d      |j                  j                  j                  d             y )Nz	(.*)b(.*))r   rI   rs   
extractallr   s      r   test_str_accessor_extractallr      s>    GB"";/1J1J;1Wr   r    removeprefixremovesuffixc                *   | \  }}|j                   j                  d   d d }|j                   j                  d   dd  }d}fd}t         |||       |||             t         |||       |||             t         |||       |||             y )Nr   r*   z"definitely a missing prefix/suffixc                P     t        | j                  j                        |      S r   )getattrrI   rs   )r\   argr    s     r   callz9test_str_accessor_removeprefix_removesuffix.<locals>.call   s    .wrzz~~v.s33r   )rI   ilocr   )r^   r    r\   r]   prefixsuffixmissingr   s    `      r   +test_str_accessor_removeprefix_removesuffixr      s    GBZZ__Q#FZZ__Q$F2G4 d3b&!12d3b&!12d3 $r7"34r   c                   | \  }}|j                   j                  j                  |j                   j                  j                         d      }t	        |j                   j                  j                  |j                   j                  j                         d      |       t	        |j                   j                  j                  |j                   j                  j                         d      |       t	        |j                   j                  j                  |j                   j                  j                         |j                   j                  j                         gd      |j                   j                  j                  |j                   j                  j                         |j                   j                  j                         gd             t	        |j                   j                  j                  d      |j                   j                  j                  d             ddgfD ]I  }t        j                  t              5  |j                   j                  j                  |       d d d        K y # 1 sw Y   VxY w)N:)sepfoo)	rI   rs   catry   r   lowerr-   rr   	TypeError)r^   r\   r]   solos        r   test_str_accessor_catr      s   GB
**..

RZZ^^113

=Cckkoo!!#++//"7"7"9s!CSIckkoo!!"**.."6"6"8c!BCHS[[__224bjjnn6J6J6LMSVW


BJJNN002BJJNN4H4H4JKQTU ckkoo!!c!*BJJNN,>,>3,>,GHeW #]]9% 	#KKOO"	# 	##	# 	#s   &I==J	c                    t         j                  dddddt        j                  gd      } t	        j
                  | d      }t        |j                  j                         | j                  j                                t        |j                  j                  d	      | j                  j                  d	             t        |j                  j                  d
d      | j                  j                  d
d             y )Nr?   r@   cr   namer*   npartitions-)na_rep_)r   r   )	r>   r;   r[   nanr+   r1   r   rs   r   sdss     r   test_str_accessor_cat_noner     s    
		3S#sBFF3%	@A	q	)BbffjjlAEEIIK(bffjjj$aeeiisi&;<bffjjSj-quuyySy/MNr   splitrsplitc           	           fd}t         j                  g dd      }t        j                  |d      }dD ]   }t	         |||d	       |||d	             "  ||d
d	      j
                  dk(  sJ y )Nc                <     t        | j                        |i |S r   r   rs   r   argskwargsr    s      r   r   z.test_str_accessor_split_noexpand.<locals>.call       'wsww'888r   a b c dzaa bb cc ddaaa bbb ccc ddddr   r   r*   r   r:   r*   rG   Fnexpandr:   )r>   r;   r+   r1   r   r   )r    r   r   r   r   s   `    r    test_str_accessor_split_noexpandr     sy    9 			@u	MA	q	)B K$qAe,d25.IJK a&++u444r   c           
     
     fd}t         j                  g dg d      }t        j                  |d      }dD ]   }t	         |||d	       |||d	             " t        j                  t              5 } ||d
       d d d        dt        j                        v sJ t         j                  g d      }t        j                  |d      }dD ]"  }t	         ||d|d       ||d|d             $ y # 1 sw Y   xxY w)Nc                <     t        | j                        |i |S r   r   r   s      r   r   z,test_str_accessor_split_expand.<locals>.call   r   r   r   )row1row2row3rP   r*   r   r   Tr   )r   zn=)z
a,bcd,zz,fzaabb,ccdd,z,kkzaaabbb,cccdddd,l,pp,)patr   r   )
r>   r;   r+   r1   r   r-   rr   NotImplementedErrorrs   rt   )r    r   r   r   r   infos   `     r   test_str_accessor_split_expandr     s    9 			6>V 	 	A 
q	)B I$qAd+T"$-GHI 
*	+ tR 3tzz?"""
		IJA	q	)B 
q.RSAd0S	

 s   7C99DzNeed to pad columnsc                    t         j                  g d      } t        j                  | d      }t	        | j
                  j                  dd      |j
                  j                  dd             t         j                  g d      } t        j                  | d      }t	        |j
                  j                  dd      | j
                  j                  dd             y )	N)r   aar   r*   r   rG   Tr   )za b czaa bb cczaaa bbb ccc
   )r>   r;   r+   r1   r   rs   r   r   s     r   +test_str_accessor_split_expand_more_columnsr   9  s    
		78A	q	)BaeekkAdk+RVV\\Ad\-KL
		67A	q	)B
r$'	b&r   rQ   range_indexzother index)idsc                   t         j                  ddgi|       }t        j                  |d      }|d   j                  j                  ddd      }|d   j                  j                  ddd      }t        ||       y )	Nr?   za
brP   r:   r   
Tr   )r>   rU   r+   r1   rs   r   r   )rQ   r\   r]   pd_add_as        r   test_str_split_no_warningr   I  sr    	sVHoU	3B
..
+Cc7;;TQt4Ds8<<da5DdDr   c                R   | \  }}t        |j                  j                  j                  d      |j                  j                  j                  d             t        |j                  j                  j	                         |j                  j                  j	                                y )NA)r   rS   rs   countisalphar   s      r   test_string_nullable_typesr   T  so    GBcnn  &&s+R]]->->-D-DS-IJcnn  ((*BMM,=,=,E,E,GHr   )3
__future__r   rh   rT   r[   r-   importorskipr>   dask.dataframe	dataframer+   dask.dataframe._compatr   r   dask.dataframe._pyarrowr   dask.dataframe.utilsr   r	   contextmanagerr   r   markparametrizer;   r<   r=   rU   register_dataframe_accessorr,   register_index_accessorr8   rA   fixturer^   filterwarningsxfailrp   rw   r   r   r   r   r   r   r   r   r   r   r   r   r%   r   r   <module>r      s(   "   V"  ? 5 C 
% 
%
 
 	BMM::;	r}}@@A	2==889
(
(	)  , GH=)BC D I8,D
N)5 NN#CD5 E5# O GX#67
5 8
5 GX#67
 8
4 /0 1 4!+M=3QR SIr   