
    Lpj{                    2   % S SK Jr  S SKJrJrJrJrJr  S SKJ	r	J
r
  S SKJrJrJrJrJrJr  S SKrS SKJr  S SKJrJr  S SKJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$  S S	K%J&r&  S S
K'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/  S SK0J1r1  S SK2J3r3J4r4  \(       a  S SK5J6r6  S SK7J8r8  S SK9J:r:  S SKJ;r;  S SK<r=S SK>r?S SK@JArAJBrB  S SKCJDrDJErE  S SKFJGrG  S SKHJIrI  S SKJJKrK  S SKLJMrM  S SKNJOrO  S SKPJQrQJRrR  S SK'JSrSJTrT  S SKUJVrV  S SKWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_J`r`JaraJbrbJcrc  \S\=R                  4   reS\fS'    " S S \S!S"9rg\h" \R                  " S#5      \R                  " S$5      \R                  " S%5      \R                  " S&5      \R                  " S'5      \R                  " S(5      \R                  " S)5      \R                  " S*5      \R                  " S+5      \R                  " S,5      \R                  " S-5      \R                  " S.5      \R                  " S/5      \R                  " S05      \R                  " S15      \R                  " S25      \R                  " S35      \R                  " S45      \R                  " S55      \R                  " S65      /5      rjS7\fS8'    " S9 S:\S;   5      rkg)<    )annotations)CallableIterableIteratorMappingSequence)chainproduct)TYPE_CHECKINGAnyLiteral	TypedDictcastoverloadN)EagerDataFrame)PANDAS_TO_NUMPY_DTYPE_MISSINGPandasLikeSeries)align_and_extract_nativebroadcast_series_to_indexget_dtype_backendimport_array_moduleiter_dtype_backendsnarwhals_to_native_dtypenative_to_narwhals_dtypeobject_native_to_narwhals_dtyperenameselect_columns_by_name	set_index)assert_never)Implementation_into_arrow_table_remap_full_join_keyscheck_column_names_are_uniqueexclude_column_namesgenerate_temporary_column_nameparse_columns_to_dropscale_bytesis_pandas_like_dataframe)InvalidOperationError
ShapeError)BytesIO)Path)
ModuleType)	TypeAlias)SelfTypeIs)CompliantDataFrameAnyCompliantLazyFrameAny)PandasLikeExprPandasLikeGroupByPandasLikeNamespace)SparkSession)IntoArrowTable)_EagerAllowedImpl_LazyAllowedImpl)Version_LimitedContext)DType)AsofJoinStrategyDTypeBackend	IntoDTypeJoinStrategyPivotAggSizedMultiIndexSelectorSizedMultiNameSelectorSizeUnitUniqueKeepStrategy_2DArray_SliceIndex
_SliceName.r/   Constructorc                       \ rS rSr% S\S'   Srg)
CopyKwargsJ   boolcopy N)__name__
__module____qualname____firstlineno____annotations____static_attributes__rR       [/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_pandas_like/dataframe.pyrN   rN   J   s    
rY   rN   F)totalfloat64float32int64int32int16int8uint64uint32uint16uint8rP   zdatetime64[s]zdatetime64[ms]zdatetime64[us]zdatetime64[ns]ztimedelta64[s]ztimedelta64[ms]ztimedelta64[us]ztimedelta64[ns]objectzfrozenset[np.dtype[Any]]CLASSICAL_NUMPY_DTYPESc                      \ rS rSrSS.           S`S jjr\SaS j5       r\        SbS j5       r\        ScS j5       r\	SdS j5       r
\SeS	 j5       r\        SfS
 j5       rSgS jrSgS jrShS jrSiS jrSjS jrSkS jrSS.SlS jjrSmS jr\S 5       rSnS jrSoSS.SpS jjjrSqS jrSrS jrSsS jrStS jr    SuS jrSvS jr\SwS  j5       r\ SxS! j5       r!\ SyS" j5       r!\ SzS# j5       r!SzS$ jr!S{S% jr"\"r#      S|S& jr$\S}S' j5       r%S}S( jr&S~S) jr'SS* jr(SS+ jr)SS, jr*SS- jr+SS. jr,SS/ jr-SS0 jr.SS1 jr/SS2 jr0SS3 jr1SS4 jr2      SS5 jr3      SS6 jr4          SS7 jr5          SS8 jr6          SS9 jr7SS: jr8        SS; jr9        SS< jr:        SS= jr;            SS> jr<                SS? jr=SS@ jr>SSA jr?SSB.         SSC jjr@ SoSSD.     SSE jjjrA\SSF j5       rBSSG jrCSoSS.SpSH jjjrDSSI jrESSJ jrFSSK jrG\ SSL j5       rH\ SSM j5       rHSSN jrHSSO jrISSP jrJSgSQ jrKSSR jrL        SSS jrM\	SST j5       rN\	        SSU j5       rO          SSV jrP          SSW jrQ          SSX jrR          SSY jrS              SSZ jrTSS[ jrUSS\ jrV          SS] jrWSS^ jrXS_rYg)PandasLikeDataFrameh   Fvalidate_backend_versionc                   Xl         X l        X0l        U(       a  [        UR                  5        U(       a  U R                  5         g g N)_native_frame_implementation_versionr#   columns_validate_backend_version)selfnative_dataframeimplementationversionvalidate_column_namesrl   s         rZ   __init__PandasLikeDataFrame.__init__k   s;     .- )*:*B*BC#**, $rY   c                 UR                   n[        X5      nUR                  5       (       a  UR                  5       nOUR	                  5       (       a*  UR                  5       S:  a  SSKJn  OSSKJn  U" U5      nOLUR                  5       (       a*  UR                  5       R                  R                  U5      nOSn[        U5      eU R                  XRS9$ )N)r      r   r   )
from_arrowzCcongratulations, you entered unreachable code - please report a bugcontext)rp   r!   	is_pandas	to_pandasis_modin_backend_versionmodin.pandas.ior}   modin.pandas.utilsis_cudfto_native_namespace	DataFrameAssertionErrorfrom_native)clsdatar   rv   tblnativempd_from_arrowmsgs           rZ   r}   PandasLikeDataFrame.from_arrow|   s     00.##%%]]_F$$&& ..0J>H $C(F##%%#779CCNNsSFWC %%v77rY   c              `   UR                   nUR                  5       n[        SUR                  5      n[        SUR                  5      n0 nS n	UR                  5        HJ  u  p[        X5      (       a1  [        R                  " XS9nU	c  Un	XU
'   M4  [        X5      S   X'   MF  XU
'   ML     U(       d  U(       d  UR                  U5      nO"UR                  U Vs0 s H  o/ _M     sn5      nU(       a  U(       a  [        UR                  U5      nOS [        [        U5      5       5       n[        UR                  5       USS9 VVVs0 s H/  u  u  nnnUc  M  U[!        UUUR                   UR"                  S9_M1     nnnnUR%                  U5      nU R                  XS9$ s  snf s  snnnf )	Nztype[pd.Series[Any]]type[pd.DataFrame]r~      c              3  &   #    U  H  nS v   M	     g 7frn   rR   ).0_s     rZ   	<genexpr>0PandasLikeDataFrame.from_dict.<locals>.<genexpr>   s     =*<QD*<s   Fstrictrv   rw   )rp   r   r   Seriesr   items
isinstancer   r   r   	from_dictr   dtypesrangelenzipr   rq   astype)r   r   r   schemarv   pdxr   r   aligned_data	left_mostnameseries	compliantr   colbackendskeydtypebackendnative_schemas                       rZ   r   PandasLikeDataFrame.from_dict   s    !00002,cjj9-s}}=	8:-1	 JJLLD&)),88Q	$ )I)/&)A))WXY)ZL&%+T" ) v((6F((V)DVcr'V)DEF.v}}nM=%F*<= 036<<>8TY/Z	 0[+\c57-#*#:#:#,,	  0[  	 ]]=1Fv77% *E	s   F$
F)%F)c              F   UR                   nUR                  5       n[        SUR                  5      nU" U5      nU(       a  UR	                  5       (       a  UR                  5       S:  a  SS0O0 nUR                  " S	S[        U5      0UD6n[        UR                  U5      n	[        UR                  5       U	SS9 V
VVs0 s H.  u  u  pnUc  M  U
[        UUUR                   UR                  S9_M0     nnn
nUR                  " U40 UD6nU R                  XrS9$ s  snnn
f )
Nr   )   rQ   Frr   r   r   r~   rR   )rp   r   r   r   r   r   reindexlistr   r   r   r   r   rq   r   r   )r   r   r   r   rv   nsr   r   kwdsr   r   r   r   r   s                 rZ   
from_dictsPandasLikeDataFrame.from_dicts   s/    !00//1-r||<	 4 "++--.2Q2Q2SVZ2Z   ^^ADLADAF*6==.IH 036<<>8TY/Z	 0[+\c7-#*#:#:#,,	  0[  	 ]]=9D9Fv77	s   D%Dc                    [        U 5      $ rn   r(   )objs    rZ   
_is_nativePandasLikeDataFrame._is_native   s    ',,rY   c              <    U " UUR                   UR                  SS9$ )NTrv   rw   rx   )rp   rq   )r   r   r   s      rZ   r   PandasLikeDataFrame.from_native   s'    "22$$"&	
 	
rY   c              x  ^ SSK Jn  UR                  mTR                  5       R                  n[        U[        U45      (       aS  U4S jUR                  5        5       nU" XR                  5       S9R                  U" U5      R                  U5      5      nOU" XR                  X5      S9nU R                  XrS9$ )Nr   )Schemac              3  <   >#    U  H  n[        UT5      v   M     g 7frn   )r   )r   native_typerv   s     rZ   r   1PandasLikeDataFrame.from_numpy.<locals>.<genexpr>  s"      *#2K "+~>>#2s   rr   r~   )narwhals.schemar   rp   r   r   r   r   valueskeysr   r   _numpy_column_namesr   )	r   r   r   r   r   r   itr   rv   s	           @rZ   
from_numpyPandasLikeDataFrame.from_numpy   s     	+ 00!/!C!C!E!O!O	fw/00*#)==?*B t[[];BBv((,F t-D-DT-RSFv77rY   c                    U $ rn   rR   rt   s    rZ   __narwhals_dataframe__*PandasLikeDataFrame.__narwhals_dataframe__      rY   c                    U $ rn   rR   r   s    rZ   __narwhals_lazyframe__*PandasLikeDataFrame.__narwhals_lazyframe__  r   rY   c                D    SSK Jn  U" U R                  U R                  S9$ )Nr   r7   )rw   )narwhals._pandas_like.namespacer8   rp   rq   )rt   r8   s     rZ   __narwhals_namespace__*PandasLikeDataFrame.__narwhals_namespace__  s    G"4#7#7OOrY   c                    U R                   [        R                  [        R                  [        R                  1;   a  U R                   R                  5       $ S[        U R                   5       3n[        U5      e)Nz!Expected pandas/modin/cudf, got: )rp   r    PANDASMODINCUDFr   typer   rt   r   s     rZ   __native_namespace__(PandasLikeDataFrame.__native_namespace__  sj    !!  $
 

 '';;==1$t7K7K2L1MNS!!rY   c                ,    [        U R                  5      $ rn   )r   r   r   s    rZ   __len__PandasLikeDataFrame.__len__&  s    4;;rY   c                N    U R                  U R                  U R                  USS9$ )NFr   )	__class__r   rp   )rt   rw   s     rZ   _with_version!PandasLikeDataFrame._with_version)  s.    ~~KK//"'	  
 	
rY   Trx   c               N    U R                  UU R                  U R                  US9$ )Nr   )r   rp   rq   )rt   dfrx   s      rZ   _with_native PandasLikeDataFrame._with_native1  s.    ~~//MM"7	  
 	
rY   c                   U R                   R                  nUR                  (       a:  UR                   nUR                  R	                  5       n[        X2U[        U5      S9$ [        U5      =n[        U5      =n:w  a  SU SU S3n[        U5      eUR                   R                  ULa  [        UR                   X!R                  S9$ UR                   $ )N)	is_nestedseries_classzExpected object of length z, got: .)rv   )r   index
_broadcastr   r   r   r   r   r+   r   rp   )rt   otherr   r   r   	len_otherlen_idxr   s           rZ   _extract_comparand&PandasLikeDataFrame._extract_comparand9  s    !!\\F--/I,f  U#ICJ)>?.wiwykKCS/!<<U*U\\5AVAVWW||rY   c                N    [         (       a  SS KnU$ [        U R                  5      $ Nr   )r   numpyr   rp   )rt   nps     rZ   _array_funcs PandasLikeDataFrame._array_funcsI  s     =I"4#7#788rY   c                F    [         R                  " U R                  U   U S9$ Nr~   )r   r   r   )rt   r   s     rZ   
get_columnPandasLikeDataFrame.get_columnQ  s    ++DKK,=tLLrY   NrQ   c                    U R                  XS9$ )Nr   rQ   )to_numpy)rt   r   rQ   s      rZ   	__array__PandasLikeDataFrame.__array__T  s    }}5}44rY   c                    [        U[        5      (       a  [        U5      OUnU R                  U R                  R
                  US S 24   5      $ rn   r   tupler   r   r   iloc)rt   rowsr   s      rZ   _gatherPandasLikeDataFrame._gatherW  s=    (u55T
4  !1!1%(!;<<rY   c                    U R                  U R                  R                  [        UR                  UR
                  UR                  5      S S 24   SS9$ NFr   )r   r   r  slicestartstopstep)rt   r  s     rZ   _gather_slice!PandasLikeDataFrame._gather_slice[  sI      KKU4::tyy$))DaGH"' ! 
 	
rY   c                   UR                   b/  U R                  R                  R                  UR                   5      OS nUR                  b2  U R                  R                  R                  UR                  5      S-   OS n[        X#UR                  5      nU R                  U R                  R                  S S 2U4   SS9$ )Nr   Fr   )	r  r   rr   get_locr  r  r  r   r  )rt   rr   r  r  selectors        rZ   _select_slice_name&PandasLikeDataFrame._select_slice_namea  s     }}( KK''6 	 ||' KK''59 	
 gll3  KKQ[) ! 
 	
rY   c                X    U R                  U R                  R                  S S 2U4   SS9$ r  r   r   r  rt   rr   s     rZ   _select_slice_index'PandasLikeDataFrame._select_slice_indexq  s2      KKQZ( ! 
 	
rY   c                    [        U[        5      (       a  [        U5      OUnU R                  U R                  R
                  S S 2U4   SS9$ r  r  r!  s     rZ   _select_multi_index'PandasLikeDataFrame._select_multi_indexv  sK     $.gu#=#=$w-7  KKQZ( ! 
 	
rY   c                Z    U R                  U R                  R                  S S 2U4   5      $ rn   )r   r   locr!  s     rZ   _select_multi_name&PandasLikeDataFrame._select_multi_name~  s$      G!<==rY   c                J    U R                   R                  R                  5       $ rn   )r   rr   tolistr   s    rZ   rr   PandasLikeDataFrame.columns  s    {{""))++rY   c                   g rn   rR   rt   nameds     rZ   r  PandasLikeDataFrame.rows  s    EHrY   c                   g rn   rR   r/  s     rZ   r  r1    s    GJrY   c                   g rn   rR   r/  s     rZ   r  r1    s    TWrY   c               :   U(       dw  U R                   [        R                  L a7  U R                  SS9 Vs/ s H  n[	        UR                  5       5      PM     sn$ [        U R                  R                  SS S95      $ U R                  R                  SS9$ s  snf )NT)r0  Fr   r   recordsorient)
rp   r    r   r  r  r   r   r   
itertuplesto_dict)rt   r0  rows      rZ   r  r1    s    ##~':'::7;yyty7LM7Lcjjl+7LMM..U.FGG{{"")"44	 Ns   #Bc              #  ~   #    U R                   R                  5        H  u  p[        R                  " X S9v   M     g 7fr  )r   r   r   r   )rt   _namer   s      rZ   iter_columns PandasLikeDataFrame.iter_columns  s/     ![[..0ME"..vDD 1s   ;=c          	   #     #    U(       d#  U R                   R                  SS S9 S h  vN   g U R                   R                  nU R                   R                  SS9 H  n[        [	        X4SS95      v   M     g  NQ7f)NFr5  r   r   )r   r9  rr   dictr   )rt   r0  buffer_size	col_namesr;  s        rZ   	iter_rowsPandasLikeDataFrame.iter_rows  sj     
 {{--E-EEE++I{{--E-:3ye<== ; Fs   %A;A9AA;c           
     &   U R                   R                  R                  5        VVs0 s HZ  u  pUUS:w  a   [        X R                  U R
                  5      O-[        U R                   U   U R                  U R
                  5      _M\     snn$ s  snnf )Nrf   )r   r   r   r   rq   rp   r   )rt   r   r   s      rZ   r   PandasLikeDataFrame.schema  s     #kk00668
 9
   *%@T@TU0C $--1E1E
 9
 	
 
s   A!Bc                    U R                   $ rn   )r   r   s    rZ   collect_schema"PandasLikeDataFrame.collect_schema  s    {{rY   c                r    U R                  [        U R                  [        U5      U R                  5      SS9$ r  )r   r   r   r   rp   )rt   column_namess     rZ   simple_select!PandasLikeDataFrame.simple_select  s8      "4;;\0BDDXDXY"' ! 
 	
rY   c                   U R                   " U6 nU(       d(  U R                  [        U R                  5      " 5       SS9$ US   R                  " U6 nU R                  5       nUR                  U Vs/ s H  oDR                  PM     sn5      nU R                  R                  R                  UR                  l        U R                  USS9$ s  snf )NFr   r   T)	_evaluate_exprsr   r   r   _align_full_broadcastr   _concat_by_indexrr   r   )rt   exprs
new_series	namespacesr   s         rZ   selectPandasLikeDataFrame.select  s    ))51
$$T$++%6%8PU$VV]88*E
//1	'':(F:a:(FG++--22

  4 @@ )Gs   0Cc                    Uc'  U R                  U R                  R                  SS9SS9$ U R                  5       nUR	                  UR
                  " U6 R                  5       SS9) nU R                  U5      $ )Nr   axisFr   T)ignore_nulls)r   r   dropnar   any_horizontalr   is_nullfilter)rt   subsetplxmasks       rZ   
drop_nullsPandasLikeDataFrame.drop_nulls  s    >$$"""*% %   ))+""377F#3#;#;#=D"QQ{{4  rY   c                b    U R                   R                  SS9R                  5       n[        X!S9$ )NT)deep)unit)r   memory_usagesumr'   )rt   ri  szs      rZ   estimated_size"PandasLikeDataFrame.estimated_size  s-    [[%%4%04462))rY   c                   U R                  5       nUR                  R                  U R                  R	                  [        U 5      5      U U R                  R                  US9nUbY  [        SU5      nU R                  " U6 R                  US S9R                  " USSS.6R                  U5      nUR                  XdSS9  UR                  R                  U5      nU R!                  XsR#                  5       5      $ )N)r   r   r      order_byF
descending
nulls_lastT)in_place)r   _seriesfrom_iterabler   aranger   r   r   r%   rN  with_row_indexsortr  scatter_expr_from_seriesrX  all)rt   r   rr  rc  r   tokensorting_indices	row_indexs           rZ   rz  "PandasLikeDataFrame.with_row_index  s    ))+{{(($$SY/++##	 ) 
 21h?E""H-5EeE E"	  LLL>II**40	{{9ggi00rY   c                T    [        S U R                  R                  U    5       5      $ )Nc              3  $   #    U  H  ov   M     g 7frn   rR   )r   xs     rZ   r   *PandasLikeDataFrame.row.<locals>.<genexpr>  s     8 71Q 7s   )r  r   r  )rt   r   s     rZ   r;  PandasLikeDataFrame.row  s"    8 0 0 7888rY   c                    U R                  U5      nU R                  U5      nU R                  U R                  R                  U   SS9$ r  )_evaluate_single_output_exprr   r   r   r(  )rt   	predicaterd  mask_natives       rZ   ra  PandasLikeDataFrame.filter  sL    00;--d3  KKOOK( ! 
 	
rY   c                p  ^  T R                   " U6 nU(       d  [        T 5      S:X  a  T $ U Vs0 s H  o3R                  U_M     nn/ nT R                  R                   HI  nXd;   a!  T R                  UR                  U5      5      nOT R                  U   nUR                  U5        MK     UR                  U 4S jUR                  5        5       5        T R                  5       nUR                  U5      n	T R                  R                  R                  U	R                  l        T R                  U	SS9$ s  snf )Nr   c              3  F   >#    U  H  nTR                  U5      v   M     g 7frn   )r   )r   rW  rt   s     rZ   r   3PandasLikeDataFrame.with_columns.<locals>.<genexpr>  s!     S=R0033=Rs   !Fr   )rQ  r   r   r   rr   r   popappendextendr   r   rS  r   )
rt   rT  rr   rW  name_columns	to_concatr   r   rV  r   s
   `         rZ   with_columns PandasLikeDataFrame.with_columns  s	   &&.3t9>KHO4P1VVQY4P	KK''D#001A1A$1GHT*V$ ( 	S\=P=P=RSS//1	''	2++--22

  5 AA 5Qs   D3c                \    U R                  [        U R                  XR                  S95      $ )Nrr   rv   )r   r   r   rp   )rt   mappings     rZ   r   PandasLikeDataFrame.rename  s)      4;;@T@TU
 	
rY   c               d    [        XUS9nU R                  U R                  R                  US9SS9$ )Nr   r   Fr   )r&   r   r   drop)rt   rr   r   to_drops       rZ   r  PandasLikeDataFrame.drop  s=    'fE  KKW-U ! 
 	
rY   c                   U R                   n[        U[        5      (       a  U(       + nOU Vs/ s H	  of(       + PM     nnU(       a  SOSnU R                  UR	                  [        U5      XWS9SS9$ s  snf )Nlastfirst)	ascendingna_positionFr   )r   r   rP   r   sort_valuesr   )rt   rt  ru  byr   r  dr  s           rZ   r{  PandasLikeDataFrame.sort  sp    [[j$''/9>I(23
1
I3 *f  NN48yNR"' ! 
 	
 4s   A2c                 ^ U R                   nU R                  m[        U[        5      (       aa  [	        U4S jU 5       5      (       aG  U(       a   U R                  UR                  X5      5      $ U R                  UR                  X5      5      $ U R                  UR                  [        U5      US9R                  U5      SS9$ )Nc              3  J   >#    U  H  nTU   R                  5       v   M     g 7frn   )
is_numeric)r   r  r   s     rZ   r   ,PandasLikeDataFrame.top_k.<locals>.<genexpr>'  s!     ,PRVAY-A-A-C-CRs    #)r  Fr   )r   r   r   rP   r  r   	nsmallestnlargestr  r   head)rt   kr  reverser   r   s        @rZ   top_kPandasLikeDataFrame.top_k$  s    [[gt$$,PR,P)P)P((a)<==$$R[[%788  NN48wN7<<Q?"' ! 
 	
rY   c                2   Uc*  [        U R                  U R                  U R                  SS9$ U[        R
                  L aU  [        R
                  U R                  SS.nXR                  La  UR                  SS9  [        U R                  5       40 UD6$ U[        R                  L a'  SSK	J
n  U" U R                  5       SU R                  SS9$ U[        R                  L a&  SSKJn  U" U R                  5       SU R                  S	9$ S
U 3n[!        U5      e)NFr   Trk   r   )ArrowDataFrame)ru   rl   rw   rx   )PolarsDataFramer   rl   rw   zUnsupported `backend` value: )ri   r   rp   rq   r    r   updater   PYARROWnarwhals._arrow.dataframer  to_arrowPOLARSnarwhals._polars.dataframer  	to_polars
ValueError)rt   r   kwargsr   r  r  r   s          rZ   collectPandasLikeDataFrame.collect1  s    ?&#33&+	  n+++"0"7"7==).$D
 222T:&t~~'7@4@@n,,,@!!%)-&+	  n+++B">>#dDMM  .gY7orY   c                   SSK Jn  U" XUS9$ )Nr   r5   )drop_null_keys)narwhals._pandas_like.group_byr6   )rt   r   r  r6   s       rZ   group_byPandasLikeDataFrame.group_by[  s     	E NKKrY   c               p    U R                   R                  USS9R                  UR                   UUSSU4S9$ )Nanyrb  howinner left_onright_onr  suffixes)r   r^  merge)rt   r   r  r  suffixs        rZ   _join_innerPandasLikeDataFrame._join_innerb  sH     {{!!e!<BBLL&\ C 
 	
rY   c                  U R                   R                  UR                   R                  USS9SUUSU4S9n[        X#SS9 VVs/ s H#  u  pgXv:w  d  M  XpR                  ;  a  UOU U 3PM%     nnnU R
                  n	U	R                  5       (       a&  U	R                  5       S:  a  UR                  USS	9  U$ UR                  US
9$ s  snnf )Nr  r  leftr  r  r  r  r  Tr   r   r   rr   inplacer   )	r   r  r^  r   rr   rp   r   r   r  )
rt   r   r  r  r  result_nativeleft_key	right_keyextraimpls
             rZ   
_join_leftPandasLikeDataFrame._join_leftm  s     ))LLxU;&\ * 
 (+7T'J
'J#$ S,,6Iyk&<RR'J 	 

 ##>> 5 5 7& @ud;  !!%!00
s   CCc                  U R                  5       nU R                  n[        X#U5      nUR                  R                  US9n[	        UR
                  5        [        UR                  5       5      n	U[        U5         R                  5       R                  SS9n
X   R                  5       R                  SS9n[        UR
                  5      R                  U R
                  5      R                  U5      nX   R                  U Vs0 s H	  oU U 3_M     snS9nXj)    R                  X)    UU	SSU4S9nUR                  XU
   U/5      $ s  snf )Nr   r   r[  outerr  r  )r   r   r"   r   r#   rr   r   r   isnar  setintersection
differencer  _concat_diagonal)rt   r   r  r  r  r   self_nativeright_on_mapperother_nativeright_suffixedleft_null_maskright_null_mask	to_renamer   right_null_rowsjoin_results                   rZ   
_join_fullPandasLikeDataFrame._join_full  s`    ((*kk/6J||**?*C%l&:&:;o4467$T']388:>>A>F&6;;=AAqAI &33DLLALLXV	&7>>6?@isSE&**i@ ? 
 "/288)*#&\ 9 
 ""n5G
 	
 As   Ec               j   U R                   nUR                  5       nUR                  5       (       d0  UR                  5       (       d  UR	                  5       (       a  US:  a  [        S/ U R                  QUR                  Q7S9nU R                  R                  " S0 US0D6R                  UR                  R                  " S0 US0D6SUUSU4S9nUR	                  5       (       a  US:  a  UR                  US	S
9  U$ UR                  US9$ U R                  R                  UR                  SSU4S9$ )N)r      rp  n_bytesrr   r   r  r  r  r  Tr  r   cross)r  r  rR   )rp   r   r   r   r   r%   rr   r   assignr  r  )rt   r   r  r  backend_version	key_tokenr  s          rZ   _join_crossPandasLikeDataFrame._join_cross  s$   ##//1MMOOt||~~NN6!96#BT\\#BEMM#BI !KK..@)Q@FF##5y!n5!"f G M ~~Of$<""9d"C$$ %%i%88{{  7b&\ RRrY   c                   U R                  U[        U5      [        [        X2SS95      S9nU R                  R                  USS9R                  USX"S9$ )NFr   r   columns_to_selectcolumns_mappingr  r  r  r  r  r  )_join_filter_renamer   rB  r   r   r^  r  )rt   r   r  r  r  s        rZ   
_join_semiPandasLikeDataFrame._join_semi  sh     //"8n Xu!EF 0 

 {{!!e!<BBgw C 
 	
rY   c                 ^ U R                   nUR                  5       (       a4  U R                  R                  UR                  R	                  USS9SUUS9$ [        S/ U R                  QUR                  Q7S9mU R                  U[        U5      [        [        X2SS95      S	9nU R                  R                  UR	                  USS9UR                  5       (       a  S
OSTUUS9R                  U4S j   nUR                  5       (       a&  UR                  5       S:  a  UR                  TSS9  U$ UR                  TS9$ )Nr  r  leftantir  rp  r  Tr   r   r  r  )r  	indicatorr  r  c                   > U T   S:H  $ )N	left_onlyrR   )tindicator_tokens    rZ   <lambda>0PandasLikeDataFrame._join_anti.<locals>.<lambda>  s    /*k9rY   r  r  r   )rp   r   r   r  r^  r%   rr   r  r   rB  r   r   r(  r   r  )rt   r   r  r  r  r  r  r  s          @rZ   
_join_antiPandasLikeDataFrame._join_anti  sN    ##<<>>;;$$##7#>!	 %   9>>>
 //"8n Xt!DE 0 

 ))wE:..**% * 
 #9; >> 5 5 7& @E  !!/!::rY   c                r    U R                   n[        [        UR                  UUS9UUS9R	                  5       $ )zHelper function to avoid creating extra columns and row duplication.

Used in `"anti"` and `"semi`" join's.

Notice that a native object is returned.
)rM  rv   r  )rp   r   r   r   drop_duplicates)rt   r   r  r  rv   s        rZ   r  'PandasLikeDataFrame._join_filter_rename  sC     --".-
 $)
 /
	rY   c               n   US:X  a  U R                  XS9nOUb  Uc  [        X45      eUS:X  a  U R                  XXES9nOgUS:X  a  U R                  XUS9nOPUS:X  a  U R	                  XUS9nO9US:X  a  U R                  XXES9nO"US	:X  a  U R                  XXES9nO[        U5        U R                  W5      $ )
Nr  )r   r  r  )r   r  r  r  anti)r   r  r  semir  full)	r  r  r  r  r  r  r  r   r   )rt   r   r  r  r  r  results          rZ   joinPandasLikeDataFrame.join  s     '>%%E%AF_ 0W//G^%%x & F F]__5H_UFF]__5H_UFF]__x % F F]__x % F   ((rY   c                   U R                  5       nU R                  UR                  U R                  UR                  UUUUUSU4S95      $ )Nr  )r  r  left_byright_by	directionr  )r   r   
merge_asofr   )	rt   r   r  r  by_leftby_rightstrategyr  rc  s	            rZ   	join_asofPandasLikeDataFrame.join_asof&  sZ     '')  NN!!"f  	
 	
rY   c                T    U R                  U R                  R                  U5      SS9$ r  )r   r   r  rt   ns     rZ   r  PandasLikeDataFrame.headA  '      !1!1!!4E RRrY   c                T    U R                  U R                  R                  U5      SS9$ r  )r   r   tailr'  s     rZ   r,  PandasLikeDataFrame.tailD  r*  rY   )maintain_orderc               ,   SSS.R                  X"5      nU(       a  U R                  U5      =n(       a  UeU(       a  U(       a  [        SU R                  5      nU R	                  US S9R
                  " USSS.6R                  R                  U=(       d    U R                  US9R                  U5      nU R                  R                  5       (       a/  U R                  R                  5       S:  a  UR                  US	S
9  OUR                  US9nOsU(       a?  U R
                  " USSS.6R                  R                  U=(       d    U R                  US9nO-U R                  R                  U=(       d    U R                  US9nU R                  USS9$ )NFr  )noner  rp  rq  )ru  rt  keepr  Tr  r   r   )get_check_columns_existr%   rr   rz  r{  r   r  r  rp   r   r   r  r   )	rt   rb  r2  r.  rr  mapped_keeperrorr  ress	            rZ   uniquePandasLikeDataFrame.uniqueG  s]     %W599$E 9 9& AAuAK21dllCE##ED#9EeE(>$,,[QU#	  $$..00((99;fD5hhuh-))ef__V%;t||+_N  ++--f.D;-WC  E BBrY   )sessionc                  U R                  5       nUc  U $ U[        R                  L a+  SS KnSSKJn  U" UR                  S5      SU R                  S9$ U[        R                  L a:  SS K	nSSK
Jn  U" UR                  " U5      R                  5       SU R                  S9$ U[        R                  L a-  SS KJn  SSKJn	  U	" UR                  U5      SU R                  S9$ U[        R&                  L a3  SS Kn
SS	KJn  U" U
R/                  X0R0                  S
9SU R                  S9$ UR3                  5       (       a8  SSKJn  Uc  Sn[9        U5      eU" UR;                  U5      U R                  USS9$ [<        e)Nr   )DuckDBLazyFrame	pandas_dfTr  )PolarsLazyFrame)DaskLazyFrame)ru   rl   rw   )IbisLazyFramer   )rl   rw   )SparkLikeLazyFramez5Spark like backends require `session` to be not None.)rw   rv   rl   )r   r    DUCKDBduckdbnarwhals._duckdb.dataframer<  tablerq   r  polarsr  r>  from_pandaslazyDASKdask.dataframe	dataframenarwhals._dask.dataframer?  IBISibisnarwhals._ibis.dataframer@  memtablerr   is_spark_likenarwhals._spark_like.dataframerA  r  createDataFramer   )rt   r   r:  r=  rC  r<  plr>  ddr?  rN  r@  rA  r   s                 rZ   rH  PandasLikeDataFrame.lazyl  sc    NN$	?Kn+++B"<<,)- 
 n+++B">>),113)- 
 n)))'> !#	!:)- 
 n)))> i>)-    ""IM o%%''	2&)-	  rY   c                .    U R                   R                  $ rn   )r   shaper   s    rZ   rX  PandasLikeDataFrame.shape  s    {{   rY   c          	         U(       a>  U R                    Vs0 s H&  nU[        R                  " U R                  U   U S9_M(     sn$ U R                  R	                  SS9$ s  snf )Nr~   r   r7  )rr   r   r   r   r:  )rt   	as_seriesr   s      rZ   r:  PandasLikeDataFrame.to_dict  sf      <<'C %11$++c2BDQQ'  {{""&"11	s   -Ac               >   U R                   R                  nUc  U R                  [        R                  L nUR                  [        5      R                  5       (       a5  Ub  U R                   R                  XS9$ U R                   R                  US9$ U R                  R                  R                  nU R                  R                  5        VVs/ s H(  u  pV[        Xd5      (       d  M  UR                  c  M&  UPM*     nnnU(       ai  U R                  U R!                  5       R"                  " U6 R$                  R'                  S5      R$                  R)                  S 5      5      R                   nOU R                   nUb  UR                  XS9$ U Ho  n	[+        U	5      [,        ;   d  M  [.        R0                  " U R2                   V
s/ s H)  n
U R5                  U
5      R                  US S9S S 2S 4   PM+     sn
5      nUs  $    UR                  US9$ s  snnf s  sn
f )Nr  r  UTC)rQ   r   )r   r   rp   r    r   isinrg   r  r  rq   Datetimer   r   r   	time_zoner  r   r   dtconvert_time_zonereplace_time_zonestrr   r   hstackrr   r  )rt   r   rQ   native_dtypesdtype_datetimer   val
to_convertr   	col_dtyper   arrs               rZ   r  PandasLikeDataFrame.to_numpy  s   **<''>+>+>>D4599;; {{++%+CC;;''T'22--66 !KK--/
/#. 36== / 	 

 ""++- "%%e,%%d+	
 f  B;;U;66 'I9~!>>99 $(<<#/C ,554t5LQPTWU#/ 
 ' {{{%%?
2s   H*H9H0H
c                d   U R                   [        R                  L a  U R                  $ U R                   [        R                  L a  U R                  R                  5       $ U R                   [        R                  L a  U R                  R                  5       $ SU R                    3n[        U5      e)NzUnknown implementation: )	rp   r    r   r   r   r   r   
_to_pandasr   r   s     rZ   r   PandasLikeDataFrame.to_pandas  s    >#8#88;;>#6#66;;((**>#7#77;;))++()=)=(>?S!!rY   c                J    SS K nUR                  " U R                  5       5      $ r   )rF  rG  r   )rt   rT  s     rZ   r  PandasLikeDataFrame.to_polars  s    ~~dnn.//rY   c                :    U R                   R                  U5        g rn   )r   
to_parquetrt   files     rZ   write_parquet!PandasLikeDataFrame.write_parquet  s    t$rY   c                    g rn   rR   ru  s     rZ   	write_csvPandasLikeDataFrame.write_csv  s    ,/rY   c                    g rn   rR   ru  s     rZ   rz  r{    s    =@rY   c                6    U R                   R                  USS9$ )NFrA  )r   to_csvru  s     rZ   rz  r{    s    {{!!$e!44rY   c                \    [         R                  " U R                  R                  SS9) U S9$ )NFr1  r~   )r   r   r   
duplicatedr   s    rZ   	is_uniquePandasLikeDataFrame.is_unique  s/    ++[[###//
 	
rY   c                D   Uc?  Uc<  U R                   =nS:w  a  SU< 3n[        U5      eU R                  R                  S   $ Ub  Uc  Sn[        U5      e[	        U[
        5      (       a  U R                  R                  U5      OUnU R                  R                  X4   $ )N)r   r   zfcan only call `.item()` without "row" or "column" values if the DataFrame has a single element; shape=)r   r   z8cannot call `.item()` with only one of `row` or `column`)rX  r  r   r  r   re  rr   r   )rt   r;  columnrX  r   _cols         rZ   itemPandasLikeDataFrame.item
  s    ;6>#.==BIG  !o%;;##D));&.LCS/!-7-D-Dt||!!&)&{{	**rY   c                R    U R                  U R                  R                  5       SS9$ r  )r   r   rQ   r   s    rZ   clonePandasLikeDataFrame.clone  s%      !1!1!35 QQrY   c                V    U R                  U R                  R                  US U2   SS9$ r  r   )rt   r(  offsets      rZ   gather_every PandasLikeDataFrame.gather_every  s.      !1!1&)!)!<TY ZZrY   c                   U=(       d"    U(       a  [        U 1 UkUk5      O
[        X5      nU=(       d    [        U 1 UkUk5      nX#4$ rn   )r$   )rt   onr   r   s       rZ   _pivot_into_index_values,PandasLikeDataFrame._pivot_into_index_values!  sT      
 !~~f~6%d/ 	
 D/mmUmD}rY   c               F    Su  pnSR                  U 5      nU U U U U 3$ )N){}"z",")r  )unique_valuesLBRBQbodys        rZ   _pivot_multi_on_name(PandasLikeDataFrame._pivot_multi_on_name0  s4    !	zz-(aSqc"&&rY   c                   US:  a/  U  Vs/ s H!  o2R                  U5      R                  5       PM#     sn$ U  Vs/ s H  o3S   PM	     sn$ s  snf s  snf )Nr   )r  strip)rM  n_values	separatorr   s       rZ   _pivot_single_on_names*PandasLikeDataFrame._pivot_single_on_names6  sP     a<;GH<CNN3'--/<HH#/0<CB<00 I0s
   (AAc             #     #    US:  a7  U H0  nXR* S  nUS   nUR                  XpR                  U5      45      v   M2     g U H  nU R                  XR* S  5      v   M     g 7f)Nr   r   )r  r  )rt   rM  n_onr  r  r   namesprefixs           rZ   _pivot_multi_on_names)PandasLikeDataFrame._pivot_multi_on_names>  sl      a<#EFQnnf.G.G.N%OPP $
 $//EF<< $s   AA c               h    US:X  a  U R                  XU5      $ [        U R                  XX45      5      $ )zReformat output column names from a native pivot operation, to match `polars`.

Note:
    `column_names` is a `pd.MultiIndex`, but not in the stubs.
r   )r  r   r  )rt   rM  r  r  r  s        rZ   _pivot_remap_column_names-PandasLikeDataFrame._pivot_remap_column_namesO  s6     19..|yQQD..|8WXXrY   c          	         U R                   [        R                  L a  0 OSS0nU R                  R                  " SUUUUSS.UD6$ )NobservedTF)r   r   rr   aggfuncmarginsrR   )rp   r    r   r   pivot_table)rt   r  r   r   aggregate_functionr   s         rZ   _pivot_table PandasLikeDataFrame._pivot_table[  s^     &&.*=*==BJPTCU 	 {{&& 
&
 
 	
rY   c               
   Uc  U R                   R                  XUS9$ US:X  aO  U R                   R                  / UQUQSS9R                  [        R                  US5      5      R                  XUS9$ U R                  XX45      $ )N)rr   r   r   r   F)as_indexsize)r   pivotgroupbyaggrB  fromkeysr  )rt   r  r   r   r  s        rZ   _pivotPandasLikeDataFrame._pivotq  s     %;;$$RV$LL&##MbM5ME#BT]]6623rv>
   FGGrY   c                 ^  T R                   nUR                  5       (       a  Sn[        U5      eT R                  XU5      u  p#T R	                  XX45      n	U(       a  U 4S jU 5       OU 4S jU 5       n
[        [        U/[        U
5      Q76 5      nU	R                  S S 2U4   n	U	R                  nT R                  U[        U5      [        U5      US9nXl	        S/U	R                  l        T R                  U	R                  5       5      $ )Nzcpivot is not supported for Modin backend due to https://github.com/modin-project/modin/issues/7409.c              3     >#    U  H@  nTR                  U5      R                  5       R                  S S S9R                  5       v   MB     g7f)Frs  N)r  r8  r{  to_listr   r   rt   s     rZ   r   ,PandasLikeDataFrame.pivot.<locals>.<genexpr>  sF      
 C	 $59 s   AAc              3  ~   >#    U  H2  nTR                  U5      R                  5       R                  5       v   M4     g 7frn   )r  r8  r  r  s     rZ   r   r    s/     HRc$//#&--/7799Rs   :=)r  r  r  r  )rp   r   NotImplementedErrorr  r  r   r
   r	   r(  rr   r  r   r  r   reset_index)rt   r  r   r   r  sort_columnsr  rv   r   r  uniquesordered_colsrr   remappeds   `             rZ   r  PandasLikeDataFrame.pivot  s    --""$$wC%c**55bHRC 
  IRH 	 GF<U7^<=A|O,..11#b'CK9 2 
 " "t  !3!3!566rY   c                    U R                   [        R                  L a  U R                  R	                  SS9$ SS KnUR                  R                  U R                  5      $ )NF)preserve_indexr   )rp   r    r   r   r  pyarrowTablerG  )rt   pas     rZ   r  PandasLikeDataFrame.to_arrow  sJ    >#6#66;;''u'==xx##DKK00rY   c               R    U R                  U R                  R                  XUS9SS9$ )N)r(  replacerandom_stateFr   )r   r   sample)rt   r(  with_replacementseeds       rZ   r  PandasLikeDataFrame.sample  s4      KK4P"' ! 
 	
rY   c           	     X    U R                  U R                  R                  UUUUS95      $ )N)id_vars
value_varsvar_name
value_name)r   r   melt)rt   r  r   variable_namer  s        rZ   unpivotPandasLikeDataFrame.unpivot  s:       KK&%	  
 	
rY   c                :  ^^ U R                   R                  nU R                  5       nU H'  nX4   nXRR                  :w  d  M  SU S3n[	        U5      e   [        U5      S:X  a,  U R                  U R                  R                  US   5      SS9$ U R                  mTUS      R                  R                  5       m[        UU4S jUSS   5       5      (       d  Sn[        U5      eU R                  nU Vs/ s H  oU;  d  M
  UPM     n	nT/ U	QUS   P   R                  US   5      n
USS   Vs/ s H$  nTU   R                  5       R                  5       PM&     nnU R                  5       nU R                  UR                  U
/UQSS	9U   SS9$ s  snf s  snf )
Nz-`explode` operation not supported for dtype `z`, expected List typer   r   Fr   c              3     >#    U  H3  nTU   R                   R                  5       T:H  R                  5       v   M5     g 7frn   )r   r   r  )r   col_nameanchor_seriesnative_frames     rZ   r   .PandasLikeDataFrame.explode.<locals>.<genexpr>  s=      
' (#((,,.-?DDFF's   ;>z2exploded columns must have matching element countsr[  )rq   r   rJ  Listr*   r   r   r   exploder   r  r+   rr   to_framer   concat)rt   rr   r   r   col_to_exploder   r   original_columnscother_columnsexploded_framer  exploded_seriesrc  r  r  s                 @@rZ   r  PandasLikeDataFrame.explode  s   %%$$&%N*E#CE7 K) )  ,C00 & w<1$$##GAJ/u %   {{$WQZ05599; 
#ABK
 
 
 GCS/!<<$4I$4q8H$4I%&B&Bwqz&BCKKGTUJWHOPQPR
HSHL"**,557 	 
 '')  JJ99JBCST"' ! 
 	
 J
s   8	FF2+F)rp   ro   rq   )ru   r   rv   r    rw   r=   rx   rP   rl   rP   returnNone)r   r:   r   r>   r  r0   )r   zMapping[str, Any]r   r>   r   %Mapping[str, IntoDType | None] | Noner  r0   )r   zSequence[Mapping[str, Any]]r   r>   r   r  r  r0   )r   r   r  zTypeIs[Any])r   r   r   r>   r  r0   )r   rI   r   r>   r   z.Mapping[str, IntoDType] | Sequence[str] | Noner  r0   )r  r0   )r  r8   )r  r.   )r  int)rw   r=   r  r0   )r   r   rx   rP   r  r0   )r   r   r  pd.Series[Any])r   re  r  r   rn   )r   r   rQ   bool | Noner  rI   )r  'SizedMultiIndexSelector[pd.Series[Any]]r  r0   )r  _SliceIndex | ranger  r0   )rr   rK   r  r0   )rr   r  r  r0   )rr   r  r  r0   )rr   z&SizedMultiNameSelector[pd.Series[Any]]r  r0   )r  	list[str])r0  zLiteral[True]r  zlist[dict[str, Any]])r0  zLiteral[False]r  zlist[tuple[Any, ...]])r0  rP   r  z,list[tuple[Any, ...]] | list[dict[str, Any]])r  zIterator[PandasLikeSeries])r0  rP   rC  r  r  z4Iterator[tuple[Any, ...]] | Iterator[dict[str, Any]])r  zdict[str, DType])rM  re  r  r0   )rT  r4   r  r0   )rb  Sequence[str] | Noner  r0   )ri  rG   r  zint | float)r   re  rr  r  r  r0   )r   r  r  ztuple[Any, ...])r  r4   r  r0   )r  zMapping[str, str]r  r0   )rr   Sequence[str]r   rP   r  r0   )r  re  rt  bool | Sequence[bool]ru  rP   r  r0   )r  r  r  Iterable[str]r  r  r  r0   )r   z_EagerAllowedImpl | Noner  r   r  r2   )r   z(Sequence[str] | Sequence[PandasLikeExpr]r  rP   r  r6   )
r   r0   r  r  r  r  r  re  r  pd.DataFrame)r   r0   r  re  r  r   )r   r0   r  r  r  r  r  r   )r   r0   r  r  r  zdict[str, str]r  r   )r   r0   r  rC   r  r  r  r  r  re  r  r0   )r   r0   r  re  r  re  r!  r  r"  r  r#  r@   r  re  r  r0   )r(  r  r  r0   )
rb  r  r2  rH   r.  r  rr  r  r  r0   )r   z_LazyAllowedImpl | Noner:  zSparkSession | Noner  r3   )r  ztuple[int, int])r[  rP   r  zdict[str, Any])r  r   )r  zpl.DataFrame)rv  zstr | Path | BytesIOr  r  )rv  r  r  re  )rv  zstr | Path | BytesIO | Noner  z
str | None)r  r   )r;  
int | Noner  zint | str | Noner  r   )r(  r  r  r  r  r0   )r  r  r   r  r   r  r  z#tuple[Sequence[str], Sequence[str]])r  ztuple[str, ...]r  re  )rM  r  r  r  r  re  r  r  )
rM  zIterable[tuple[str, ...]]r  r  r  r  r  re  r  zIterator[str])
rM  zIterable[Any]r  r  r  r  r  re  r  r  )
r  r  r   r  r   r  r  z?Literal['min', 'max', 'first', 'last', 'sum', 'mean', 'median']r  r   )
r  r  r   r  r   r  r  PivotAgg | Noner  r   )r  r  r   r  r   r  r  r  r  rP   r  re  r  r0   )r  r   )r(  r  r  rP   r  r  r  r0   )
r  r  r   r  r  re  r  re  r  r0   )rr   r  r  r0   )ZrS   rT   rU   rV   ry   classmethodr}   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   propertyr   r  r	  r  r  r  r"  r%  r)  rr   r   r  r>  _iter_columnsrE  r   rJ  rN  rX  re  rm  rz  r;  ra  r  r   r  r{  r  r  r  r  r  r  r  r  r  r  r  r$  r  r,  r8  rH  rX  r:  r  r   r  rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rX   rR   rY   rZ   ri   ri   h   s     */-- '	-
 -  $- #'- 
-" 8 8. -8-8
 !-8 6-8 
-8 -8^ #8)#8
 !#8 6#8 
#8 #8J - - 
 
 88
 !8 ?8 
8 80P
	" 
 FJ 
  9 9M5$ 5 5=

 


>
	
> , , H HJ JW W	5E !M
>
>+.
>	=
> 
 


A!*1(9
B(






'/';>'	'TL<LQUL	L	
	
'4	
@M	
WZ	
		
11'41@M1WZ1	1.

'4
@M
WZ
	
@S0



'4

@M

	

$;$;'4$;@M$;	$;L.7JX	(")") 	")
 &") '") ") 
")H

 	

 
 &
 '
 #
 
 

6SS '+"C$"C !	"C
 $"C '"C 
"CN ,0@ (,	@(@ %	@
 
@D ! !2-& -& -&^"0
% / /@ @5

+"R[ $ %	 
- ' '
 1#1/21?B1	1 1=/= = 	=
 = 
="
Y)
Y47
YCF
YSV
Y	
Y

 
 	



 

,HH H 	H
 ,H 
H$&7&7 $	&7
 %&7 ,&7 &7 &7 
&7P1

 
 $
 	

 
 

 (
rY   ri   )r   r4   r   r  )l
__future__r   collections.abcr   r   r   r   r   	itertoolsr	   r
   typingr   r   r   r   r   r   r   r   narwhals._compliantr   narwhals._pandas_like.seriesr   r   narwhals._pandas_like.utilsr   r   r   r   r   r   r   r   r   r   r   narwhals._typing_compatr   narwhals._utilsr    r!   r"   r#   r$   r%   r&   r'   narwhals.dependenciesr)   narwhals.exceptionsr*   r+   ior,   pathlibr-   typesr.   r/   pandaspdrF  rT  typing_extensionsr0   r1   narwhals._compliant.typingr2   r3   narwhals._pandas_like.exprr4   r  r6   r   r8   narwhals._spark_like.utilsr9   narwhals._translater:   narwhals._typingr;   r<   r=   r>   narwhals.dtypesr?   narwhals.typingr@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   r   rL   rW   rN   	frozensetr   rg   ri   rR   rY   rZ   <module>r      s   " K K $ I I  . X    1	 	 	 ; A  .W9@C72D8%    &c2<<&78K8Ye  4=











!
!"
!"
!"
!"
"#
"#
"#
)4 0 4I
PQI
rY   