
    O3jh                       U d dl mZ d dlmZmZmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZ d dlZd dlmZ d dlmZ d dlmZmZmZmZmZmZ d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d d	l+m,Z, d d
l-m.Z. erd dlm/Z/m0Z0 d dl1m2Z2 d dlm3Z3 d dl4Z5d dl6Z7d dl8m9Z9m:Z: d dl;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZHmIZI d dlmJZJmKZK d dlLmMZMmNZN d dlOmPZP d dlQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY  ed      ZZ ed      Z[dZ\de]d<   dZ^de]d <   	  e_g d!      Z` ed"ej                  ej                        Za G d# d$eea         Zb G d% d&ebej                           Zc G d' d(ebej                           Zdy))    )annotations)IteratorMappingSequenceSized)TYPE_CHECKINGAnyFinalGenericLiteralTypeVarcastoverloadN)PolarsNamespace)PolarsSeries)FROM_DICTS_ACCEPTS_MAPPINGSRESPECT_JOIN_NULL_SEMI_ANTIcatch_polars_exceptionextract_args_kwargsnarwhals_to_native_dtypenative_to_narwhals_dtype)Implementation_into_arrow_tableconvert_str_slice_to_int_slicegenerate_temporary_column_nameis_boolean_selectoris_compliant_seriesis_index_selectoris_rangeis_sequence_likeis_slice_indexis_slice_noneparse_columns_to_droprequires)is_numpy_array_1d)ColumnNotFoundError)CallableIterable)
ModuleType)	TypeAlias)SelfTypeIs)CompliantDataFrameAnyCompliantLazyFrameAny)
PolarsExpr)PolarsGroupByPolarsLazyGroupBy)SparkSession)IntoArrowTable)_EagerAllowedImpl_LazyAllowedImpl)Version_LimitedContext)	DataFrame	LazyFrame)DType)
IntoSchemaJoinStrategyMultiColSelectorMultiIndexSelectorPivotAggSingleIndexSelectorUniqueKeepStrategy_2DArrayTRFr
   MYPYzCallable[..., R]r*   Method)clone
drop_nullsestimated_sizeexplodefiltergather_everyhead	is_uniqueitem	iter_rows	join_asofrenamerowrowssampleselectsink_parquetsorttailto_arrow	to_pandaswith_columns	write_csvwrite_parquetNativePolarsFramec                     e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ej
                  Zded<   dd	 	 	 	 	 	 	 d(dZd)dZe	d*d       Z
e	d+d       Ze	d,d       Zd-dZd.dZd/dZd0dZed1d       Zd2dZd3dZddd 	 	 	 	 	 	 	 	 	 d4d!Ze	d5d"       Z	 	 	 	 	 	 	 	 	 	 	 	 d6d#Z	 	 	 	 	 	 	 	 d7d$Z	 	 	 	 	 	 	 	 	 	 d8d%Zd5d&Zd9d'Zy):PolarsBaseFrameMethod[Self]rH   rJ   rK   rL   rM   rQ   rR   rV   rX   rY   r\   r_   _native_framer6   _versionF)validate_backend_versionc               F    || _         || _        |r| j                          y y N)rc   rd   _validate_backend_version)selfdfversionre   s       G/DATA/.local/lib/python3.12/site-packages/narwhals/_polars/dataframe.py__init__zPolarsBaseFrame.__init__~   s'      #**, $    c                8    | j                   j                         }y)zRaise if installed version below `nw._utils.MIN_VERSIONS`.

        **Only use this when moving between backends.**
        Otherwise, the validation will have taken place already.
        N_implementation_backend_version)ri   _s     rl   rh   z)PolarsBaseFrame._validate_backend_version   s       113rn   c                6    | j                   j                         S rg   rp   ri   s    rl   rr   z PolarsBaseFrame._backend_version   s    ##4466rn   c                    | j                   S rg   )rc   ru   s    rl   nativezPolarsBaseFrame.native   s    !!!rn   c                .    | j                   j                  S rg   )rw   columnsru   s    rl   ry   zPolarsBaseFrame.columns   s    {{"""rn   c                .    t        | j                        S N)rk   )r   rd   ru   s    rl   __narwhals_namespace__z&PolarsBaseFrame.__narwhals_namespace__   s    t}}55rn   c                    | j                   t        j                  u r| j                   j                         S dt	        | j                          }t        |      )NzExpected polars, got: )rq   r   POLARSto_native_namespacetypeAssertionError)ri   msgs     rl   __native_namespace__z$PolarsBaseFrame.__native_namespace__   sN    >#8#88'';;==&tD,@,@'A&BCS!!rn   c                <    | j                  || j                        S r{   )	__class__rd   )ri   rj   s     rl   _with_nativezPolarsBaseFrame._with_native   s    ~~b$--~88rn   c                <    | j                  | j                  |      S r{   )r   rw   )ri   rk   s     rl   _with_versionzPolarsBaseFrame._with_version   s    ~~dkk7~;;rn   c              *     | ||j                         S r{   )rd   )clsdatacontexts      rl   from_nativezPolarsBaseFrame.from_native   s    4!1!122rn   c                R    | j                   | j                  j                  |       S rg   )r   rw   rV   )ri   column_namess     rl   simple_selectzPolarsBaseFrame.simple_select   s%      !3!3!3\!BCCrn   c                      | j                   | S rg   )rV   )ri   exprss     rl   	aggregatezPolarsBaseFrame.aggregate   s    t{{E""rn   N)maintain_orderorder_byc                  |r|rt        d| j                  d      }| j                  j                  |      j	                  |d      j                  |xs | j                  |      j	                  |      j                  |      }nQ|r-| j                  j	                  |      j                  ||      }n"| j                  j                  |||xs d      }| j                  |      S )N   
row_index_)prefixF)
nulls_last)keep)r   r   )r   ry   rw   with_row_indexrX   uniquedropr   )ri   subsetr   r   r   tokenress          rl   r   zPolarsBaseFrame.unique   s     21dll<XE**51h51.$,,T:ee  ++""8,33F3FC++$$T.2IE % C   %%rn   c                "    | j                         S rg   )collect_schemaru   s    rl   schemazPolarsBaseFrame.schema   s    ""$$rn   c          	         | j                   dk  r|dk(  rdn|}|j                  }|dv }|rt        s|j                  |      }| j	                  | j                  j                  |||||            S )N)r         fullouter>   antisemi)r   otherhowleft_onright_onsuffix)rr   rw   r   rH   r   join)	ri   r   r   r   r   r   
how_nativeother_nativeis_semi_or_antis	            rl   r   zPolarsBaseFrame.join   s     --;vGTW 	 ||!11#>'22(2CL  KK"!  
 	
rn   c                   | j                   dk  r-| j                  | j                  j                  |||            S | j                  | j                  j                  |||            S )N   r   r   )kby
descendingr   r   reverse)rr   r   rw   top_k)ri   r   r   r   s       rl   r   zPolarsBaseFrame.top_k   sn       9,$$!!& "     !2!2Q2w!2!OPPrn   c                    | j                   dk  r.| j                  | j                  j                  ||||            S | j                  | j                  j	                  ||||            S )Nr   )id_vars
value_varsvariable_name
value_name)onindexr   r   )rr   r   rw   meltunpivot)ri   r   r   r   r   s        rl   r   zPolarsBaseFrame.unpivot   s}       9,$$  !!"/)	 !     KKU-J   
 	
rn   c           	         | j                   }| j                  dk  r|j                  n|j                         }|j	                         D ci c]  \  }}|t        || j                         c}}S c c}}w )Nr   )rw   rr   r   r   itemsr   rd   )ri   rj   r   namedtypes        rl   r   zPolarsBaseFrame.collect_schema  sn    [["33d:@Q@Q@S  &||~
-e *5$--@@-
 	
 
s   !A0c                4   | j                   }||j                  |      }nh|j                  t        j                  t        j
                               j                  |      j                  |      t        j                               }| j                  |      S )N)r   )
rw   r   rV   pl	int_rangelenoveraliasallr   )ri   r   r   frameresults        rl   r   zPolarsBaseFrame.with_row_index  su    ))$/F\\RVVX&++X+>DDTJBFFHF   ((rn   )rj   r_   rk   r6   re   boolreturnNone)r   r   )r   ztuple[int, ...])r   r_   )r   z	list[str])r   r   )r   r)   )rj   r_   r   r+   )rk   r6   r   r+   )r   r_   r   r7   r   r+   )r   strr   r+   )r   r	   r   r+   )
r   Sequence[str] | Noner   rA   r   bool | Noner   r   r   r+   r   zdict[str, DType])r   z"PolarsBaseFrame[NativePolarsFrame]r   r<   r   r   r   r   r   r   r   r+   r   intr   zstr | Iterable[str]r   zbool | Sequence[bool]r   r+   )
r   r   r   r   r   r   r   r   r   r+   )r   r   r   r   r   r+   )__name__
__module____qualname____annotations__r   r~   rq   rm   rh   propertyrr   rw   ry   r|   r   r   r   classmethodr   r   r   r   r   r   r   r   r   r    rn   rl   ra   ra   m   s   


$$$++O */
-
- 	
-
 #'
- 

-4 7 7 " " # #6"9< 3 3D# '+)-&$& !	&
 $& '& 
&2 % %
1
 	

 &
 '
 
 

4QQ0Q;PQ	Q
 
 $
 	

 
 

,
	)rn   ra   c                      e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ed<d       Ze	 	 	 	 	 	 	 	 d=d       Ze	 	 	 	 	 	 	 	 d>d       Zed?d       Z	e	 	 	 	 	 	 	 	 d@d       Z
dAdZdBdZdCd ZedDd!       ZedEd"       ZedFd#       Z	 	 	 	 dGd$ZdHd%ZdId&Z	 dJd'd(	 	 	 	 	 dKd)ZdJd'd(dLd*ZedMd+       Z	 	 	 	 dNd,ZdOd-ZdPd.Z	 dJd'd/	 	 	 	 	 dQd0ZedRd1       ZedSd2       Z	 	 	 	 dTd3Z	 	 	 	 	 	 dUd4ZdVd5Z ej<                  d6      	 	 	 	 	 	 	 	 	 	 	 	 	 	 dWd7       ZdXd8Z 	 	 	 	 	 	 	 	 	 	 	 	 dY fd9Z!	 	 	 	 	 	 	 	 dZ fd:Z"d[d;Z# xZ$S )\PolarsDataFramerb   rG   zMethod[CompliantDataFrameAny]collectzMethod[int | float]rI   rL   z?Method[Iterator[tuple[Any, ...]] | Iterator[Mapping[str, Any]]]rP   zMethod[PolarsSeries]rN   zMethod[tuple[Any, ...]]rS   z?Method[Sequence[tuple[Any, ...]] | Sequence[Mapping[str, Any]]]rT   rU   zMethod[pa.Table]rZ   zMethod[pd.DataFrame]r[   zMethod[Any]r]   Method[None]r^   c         	         |j                   j                         dk\  rt        j                  |      }n)t	        dt        j
                  t        ||                  }| j                  ||      S )N)r      pl.DataFramer   )rq   rr   r   r8   r   
from_arrowr   r   )r   r   r   rw   s       rl   r   zPolarsDataFrame.from_arrow7  sX    ""335?\\$'F."--8I$PW8X*YZFvw77rn   c         	         |r<|j                         D ci c]   \  }}||t        ||j                        nd " c}}nd }| j                  t	        j
                  ||      |      S c c}}w Nr   )r   r   rd   r   r   	from_dict)r   r   r   r   keyr   	pl_schemas          rl   r   zPolarsDataFrame.from_dict?  s       %+LLN	 %3LS% $ .eW5E5EF %3	  	 r||D)<gNNs   %A(c         	        |r<|j                         D ci c]   \  }}||t        ||j                        nd " c}}nd }|st        j                  |      }nat
        st        |d   t              rt        j                  ||      }n1|xs t        |d         }t        j                  d |D        |d      }| j                  ||      S c c}}w )N)r   r   c              3  N   K   | ]  }t        |j                                 y wrg   )tuplevalues).0rS   s     rl   	<genexpr>z-PolarsDataFrame.from_dicts.<locals>.<genexpr>n  s     5szz|$s   #%rS   )r   orientr   )r   r   rd   r   r8   r   
isinstancedict
from_dictsr   r   )	r   r   r   r   r   r   r   rw   ry   s	            rl   r   zPolarsDataFrame.from_dictsT  s       %+LLN	 %3LS% $ .eW5E5EF %3	  	 \\3F(JtAw,E]]43F15a>G\\55geF vw77's   %Cc                6    t        | t        j                        S rg   )r   r   r8   objs    rl   
_is_nativezPolarsDataFrame._is_natives      #r||,,rn   c                  ddl m} t        |t        |f      r ||      j	                         n|}| j                  t        j                  ||      |      S )Nr   )Schemar   )narwhals.schemar  r   r   	to_polarsr   r   
from_numpy)r   r   r   r   r  r   s         rl   r  zPolarsDataFrame.from_numpyw  sR     	+ &7F"34 6N$$& 	
 r}}T9=wOOrn   c                <    | j                   j                  | d      S )Nr   level)rd   	dataframeru   s    rl   to_narwhalszPolarsDataFrame.to_narwhals      }}&&t6&::rn   c                     y)Nr   r   ru   s    rl   __repr__zPolarsDataFrame.__repr__       rn   c                    | S rg   r   ru   s    rl   __narwhals_dataframe__z&PolarsDataFrame.__narwhals_dataframe__      rn   c                     y rg   r   ri   r   s     rl   _from_native_objectz#PolarsDataFrame._from_native_object  s    CFrn   c                     y rg   r   r  s     rl   r  z#PolarsDataFrame._from_native_object  s    >Arn   c                     y rg   r   r  s     rl   r  z#PolarsDataFrame._from_native_object  s    03rn   c                    t        |t        j                        rt        j                  ||       S | j                  |      r| j                  |      S |S r   )r   r   Seriesr   r   r  r   r  s     rl   r  z#PolarsDataFrame._from_native_object  sG     c299%++C>>??3$$S))
rn   c                ,    t        | j                        S rg   )r   rw   ru   s    rl   __len__zPolarsDataFrame.__len__  s    4;;rn   c                v     t         vr' j                  j                   d d}t        |      d fd}|S )N has not attribute ''.c                 0   t        | |      \  }}	 j                   t        j                        |i |      S # t        j
                  j                  $ r#}|dj                   d}t        |      |d }~wt        $ r}t        |      d d }~ww xY w)Nz+

Hint: Did you mean one of these columns: ?)
r   r  getattrrw   r   
exceptionsr&   ry   	Exceptionr   )argskwargsposkwdser   attrri   s         rl   funcz)PolarsDataFrame.__getattr__.<locals>.func  s    +D&9IC://0JT0JC0XSW0XYY==44 6J4<<.XYZ)#.A5 :,Q/T9:s!   *= BA88BBBr%  r	   r&  r	   r   r	   INHERITED_METHODSr   r   AttributeErrorri   r*  r   r+  s   ``  rl   __getattr__zPolarsDataFrame.__getattr__  sA    ((^^,,--A$rJC %%	: rn   N)copyc                   | j                   dk  r|d}t        |      | j                   dk  r| j                  j                  |      S | j                  j                  |      S )N)r   r      z=`copy` in `__array__` is only supported for 'polars>=0.20.28')rr   NotImplementedErrorrw   	__array__)ri   r   r2  r   s       rl   r6  zPolarsDataFrame.__array__  s_       ;.43CQC%c**  ;.;;((//{{$$U++rn   c               6    | j                   j                         S rg   )rw   to_numpy)ri   r   r2  s      rl   r8  zPolarsDataFrame.to_numpy  s    {{##%%rn   c                .    | j                   j                  S rg   )rw   shaperu   s    rl   r:  zPolarsDataFrame.shape  s    {{   rn   c                   |\  }}| j                   dkD  rbt        |      r|j                  n|}t        |      r|j                  n|}||f}| j                  j                  |      }| j	                  |      S t        |t              rt        |      n|}t        |t              rt        |      n|}t        |      r|j                         }| j                  }t        |      st        |t              rt        |      dk(  r| j                         S t        |      r. |j                  d t        |j                   |d      D         }nyt#        |      rt%        |      st'        |      rI|j                  | j                   t)        |j*                  |j,                  |j.                                 }nt        |t0              r"|d d |j                  j3                         f   }n|d d |f   }nt        |t(              rXt4        rt7        || j                         }	nt7        || j                         }	|j                  | j                   t)        |	          }nkt        |      r*|j                  |j                  j3                               }n6t9        |      r|j                  |      }ndt;        |       }
t=        |
      t        |      st        |t>              r||gd d f   }nmt        |t(        t@        f      r
||d d f   }nMt        |      r||j                  d d f   }n.t9        |      r
||d d f   }ndt;        |       }
t=        |
      | jC                  |      S )N)r   r      r   c              3  *   K   | ]  \  }}|r|  y wrg   r   )r   colrV   s      rl   r   z.PolarsDataFrame.__getitem__.<locals>.<genexpr>  s      /YV%  /Ys   Fstrictz'Unreachable code, got unexpected type: )"rr   r   rw   __getitem__r  r   r   listr%   tolistr"   r   r   rV   r   zipry   r   r!   r   slicestartstopstepr   to_listrE   r   r    r   r   r   ranger   )ri   rO   rT   ry   rows_nativecolumns_nativeselectorselectedrw   	int_slicer   s              rl   rA  zPolarsDataFrame.__getitem__  s    g  ;.)<T)B$++K/B7/KW^^QXN"N2H{{..x8H++H55
 ",D%!84:dD'1'5'Ad7mwG )!..*[[F )gu-#g,!2C;;=(&w/*V]]/26>>7SX/YF 'w/%g.(72C!' LLw}}gllGLL)YZ"
 $G\:!'7>>+A+A+C(C!D!'7
!3/$B7DLL$Y	$B7DLL$Y	#]]4<<y8I+JKF(1#]]7>>+A+A+CDF%g.#]]73FCDM?SC(-- &dC(#TFAI.Fuen5#D!G_F(.#DKKN3F%d+#D!G_FCDJ<PC(--$$V,,rn   c                b    t        j                  | j                  j                  |      |       S r   )r   r   rw   
get_column)ri   r   s     rl   rQ  zPolarsDataFrame.get_column  s$    ''(>(>t(DdSSrn   c              #  |   K   | j                   j                         D ]  }t        j                  ||         y wr   )rw   iter_columnsr   r   )ri   seriess     rl   rS  zPolarsDataFrame.iter_columns  s0     kk..0F**64@@ 1s   :<)sessionc                  ||t         j                  u r/t        j                  | j                  j                         |       S |t         j                  u r:dd l}ddlm	} | j                  } ||j                  d      d| j                        S |t         j                  u rHdd lm} ddlm}  ||j#                  | j                  j%                               d| j                        S |t         j&                  u rDdd l}ddlm}	  |	|j/                  | j                  | j0                  	      d| j                        S |j3                         r4dd
lm}
 |d}t9        |      |
j;                  | ||| j                        S t<        )Nr   r   )DuckDBLazyFrame_dfT)re   rk   )DaskLazyFrame)IbisLazyFrame)ry   )SparkLikeLazyFramez5Spark like backends require `session` to be not None.)rU  implementationrk   )r   r~   PolarsLazyFramer   rw   lazyDUCKDBduckdbnarwhals._duckdb.dataframerW  tablerd   DASKdask.dataframer  narwhals._dask.dataframerY  from_pandasr[   IBISibisnarwhals._ibis.dataframerZ  memtablery   is_spark_likenarwhals._spark_like.dataframer[  
ValueError_from_compliant_dataframer   )ri   backendrU  r`  rW  rX  ddrY  rh  rZ  r[  r   s               rl   r^  zPolarsDataFrame.lazy  sX    ?g)>)>>"..t{{/?/?/A4.PPn+++B++C"U#dDMM  n)))'> t{{4467)- 
 n)))> dkk4<<@)-    "IM o%%??&	 @   rn   c                    y rg   r   ri   	as_seriess     rl   to_dictzPolarsDataFrame.to_dictR  s    ORrn   c                    y rg   r   rr  s     rl   rt  zPolarsDataFrame.to_dictU  s    MPrn   c          	         |rQ| j                   j                         j                         D ci c]  \  }}|t        j                  ||        c}}S | j                   j                  d      S c c}}w )Nr   F)rs  )rw   rt  r   r   r   )ri   rs  r   r>  s       rl   rt  zPolarsDataFrame.to_dictX  st      "&!4!4!6!<!<!>!>ID# l..sDAA!>  {{""U"33	s   "A0c               $    ddl m}  || ||      S )Nr   )r0   drop_null_keys)narwhals._polars.group_byr0   )ri   keysry  r0   s       rl   group_byzPolarsDataFrame.group_byb  s     	<T4GGrn   c               r    t        | ||      }| j                  | j                  j                  |            S )Nr?  )r#   r   rw   r   )ri   ry   r@  to_drops       rl   r   zPolarsDataFrame.dropi  s0    'gfE  !1!1'!:;;rn   r   c                   	 | j                   j                  ||||||      }| j	                  |      S # t        $ r}t        |      d d }~ww xY w)N)r   r   aggregate_functionsort_columns	separator)rw   pivotr$  r   r  )	ri   r   r   r   r  r  r  r   r)  s	            rl   r  zPolarsDataFrame.pivotm  sd    
	6[[&&#5)# ' F ''//  	6(+5	6s   !4 	AA		Ac                    | j                   S rg   )rw   ru   s    rl   r  zPolarsDataFrame.to_polars  s    {{rn   c               h    	 t         |   |||||      S # t        $ r}t        |      d d }~ww xY w)Nr   )superr   r$  r   )ri   r   r   r   r   r   r)  r   s          rl   r   zPolarsDataFrame.join  sI    	67<gQW      	6(+5	6s    	1,1c               d    	 t         |   |||      S # t        $ r}t        |      d d }~ww xY w)Nr   )r  r   r$  r   )ri   r   r   r   r)  r   s        rl   r   zPolarsDataFrame.top_k  s:    	67=1W=== 	6(+5	6s    	/*/c                    | j                   dk  r%|#|!| j                  x}dk7  rd|}t        |      | j                  j	                  ||      S )N)r   $   )r   r   zfcan only call `.item()` without "row" or "column" values if the DataFrame has a single element; shape=)rS   column)rr   r:  rm  rw   rO   )ri   rS   r  r:  r   s        rl   rO   zPolarsDataFrame.item  sf    !!G+**$/99>	C  S/!{{C77rn   )r   r3   r   r7   r   r+   )r   zMapping[str, Any]r   r7   r   .IntoSchema | Mapping[str, DType | None] | Noner   r+   )r   zSequence[Mapping[str, Any]]r   r7   r   r  r   r+   )r   zpl.DataFrame | Anyr   zTypeIs[pl.DataFrame])r   rB   r   r7   r   z!IntoSchema | Sequence[str] | Noner   r+   )r   zDataFrame[pl.DataFrame]r   r   r   r+   )r   z	pl.Seriesr   r   )r   r   r   r+   )r   rC   r   rC   )r   zpl.Series | pl.DataFrame | Tr   zSelf | PolarsSeries | T)r   r   r*  r   r   r	   rg   )r   z
Any | Noner2  r   r   rB   )r   r	   r2  r   r   rB   )r   ztuple[int, int])rO   z]tuple[SingleIndexSelector | MultiIndexSelector[PolarsSeries], MultiColSelector[PolarsSeries]]r   r	   )r   r   r   r   r   zIterator[PolarsSeries])ro  z_LazyAllowedImpl | NonerU  zSparkSession | Noner   r.   )rs  zLiteral[True]r   zdict[str, PolarsSeries])rs  zLiteral[False]r   zdict[str, list[Any]])rs  r   r   z.dict[str, PolarsSeries] | dict[str, list[Any]])r{  $Sequence[str] | Sequence[PolarsExpr]ry  r   r   r0   ry   Sequence[str]r@  r   r   r+   )r   r  r   r   r   r   r  zPivotAgg | Noner  r   r  r   r   r+   )r   r   )r   zPolarsBaseFrame[pl.DataFrame]r   r<   r   r   r   r   r   r   r   r+   r   )rS   z
int | Noner  zint | str | Noner   r	   )%r   r   r   r   r   r   r   r   staticmethodr  r  r  r  r  r   r  r  r1  r6  r8  r   r:  rA  rQ  rS  r^  rt  r|  r   r$   backend_versionr  r  r   r   rO   __classcell__r   s   @rl   r   r   &  s]   **''NN##	  
II## 8 8 OO
 !O ?O 
O O( 8)8
 !8 ?8 
8 8< - - PP
 !P 2P 
P P";! F FA A3 3/	  $ #',?C,,1<,	,& & ! !I-
I- 
I-VTA ,04 (,	4(4 %	4
 
4l R RP P4 4	74H8HMQH	H< Xd#00 $	0
 %0 ,0 0 0 
0 $0.6,6 	6
 &6 '6 6 
6 6606;P6	68rn   r   c                       e Zd ZU ded<   edd       ZddZddZddZddZ	ddZ
d fd	Z	 	 	 	 	 	 dd
Z	 	 	 	 	 	 ddZddZ xZS )r]  r   rW   c                6    t        | t        j                        S rg   )r   r   r9   r   s    rl   r  zPolarsLazyFrame._is_native  r  rn   c                <    | j                   j                  | d      S )Nr^  r	  )rd   	lazyframeru   s    rl   r  zPolarsLazyFrame.to_narwhals  r  rn   c                     y)Nr]  r   ru   s    rl   r  zPolarsLazyFrame.__repr__  r  rn   c                    | S rg   r   ru   s    rl   __narwhals_lazyframe__z&PolarsLazyFrame.__narwhals_lazyframe__  r  rn   c                v     t         vr' j                  j                   d d}t        |      d fd}|S )Nr  r  c                     t        | |      \  }}	 j                   t        j                        |i |      S # t        j
                  j                  $ r}t        t        |            |d }~ww xY wrg   )r   r   r"  rw   r   r#  r&   r   )r%  r&  r'  r(  r)  r*  ri   s        rl   r+  z)PolarsLazyFrame.__getattr__.<locals>.func  sl    +D&9IC9(()Cd)CS)QD)QRR==44 9)#a&1q89s   *= A4A//A4r,  r-  r0  s   ``  rl   r1  zPolarsLazyFrame.__getattr__  sA    ((^^,,--A$rJC %%	9 rn   c              #  z   K   | j                  t        j                        j                         E d {    y 7 wrg   )r   r   r~   rS  ru   s    rl   _iter_columnszPolarsLazyFrame._iter_columns  s'     << 5 56CCEEEs   1;9;c                \    	 t         |          S # t        $ r}t        |      d d }~ww xY wrg   )r  r   r$  r   )ri   r)  r   s     rl   r   zPolarsLazyFrame.collect_schema  s3    	67)++ 	6(+5	6s    	+&+c                   	  | j                   j                  d
i |}||t        j
                  u rt        j                  ||       S |t        j                  u r9ddl	m
}  ||j                         t        j                  d| j                  d      S |t        j                  u r*ddlm}  ||j!                         d| j                  d      S d	| }t#        |      # t        $ r}t        |      d d }~ww xY w)Nr   r   )PandasLikeDataFrameTF)r\  re   rk   validate_column_names)ArrowDataFrame)re   rk   r  zUnsupported `backend` value: r   )rw   r   r$  r   r   r~   r   r   PANDASnarwhals._pandas_like.dataframer  r[   rd   PYARROWnarwhals._arrow.dataframer  rZ   rm  )ri   ro  r&  r   r)  r  r  r   s           rl   r   zPolarsLazyFrame.collect  s    	6(T[[((262F ?g)>)>>"..vt.DDn+++K&  "-44)-&+  n,,,@!!)-&+	  .gY7o9  	6(+5	6s   C   	C:)C55C:c               $    ddl m}  || ||      S )Nr   )r1   rx  )rz  r1   )ri   r{  ry  r1   s       rl   r|  zPolarsLazyFrame.group_by  s     	@ tNKKrn   c                   | j                   dk  r*| j                  | j                  j                  |            S | j                  | j                  j                  ||            S )Nr   r?  )rr   r   rw   r   )ri   ry   r@  s      rl   r   zPolarsLazyFrame.drop   sU      9,$$T[[%5%5g%>??  !1!1'&!1!IJJrn   )r   zpl.LazyFrame | Anyr   zTypeIs[pl.LazyFrame])r   zLazyFrame[pl.LazyFrame]r  r  r  r  r   )ro  z_EagerAllowedImpl | Noner&  r	   r   r-   )r{  r  ry  r   r   r1   r  )r   r   r   r   r  r  r  r  r  r1  r  r   r   r|  r   r  r  s   @rl   r]  r]    s    - -;!F6!/!;>!	!FL8LMQL	LKrn   r]  )e
__future__r   collections.abcr   r   r   r   typingr   r	   r
   r   r   r   r   r   polarsr   narwhals._polars.namespacer   narwhals._polars.seriesr   narwhals._polars.utilsr   r   r   r   r   r   narwhals._utilsr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   narwhals.dependenciesr%   narwhals.exceptionsr&   r'   r(   typesr)   r*   pandaspdpyarrowpatyping_extensionsr+   r,   narwhals._compliant.typingr-   r.   narwhals._polars.exprr/   rz  r0   r1   narwhals._spark_like.utilsr2   narwhals._translater3   narwhals._typingr4   r5   r6   r7   narwhals.dataframer8   r9   narwhals.dtypesr:   narwhals.typingr;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   r   rF   	frozensetr.  r_   ra   r   r]  r   rn   rl   <module>r     s$   " > > W W W  6 0     4 32  .W0J72D87%	 	 	 	AAe &	 &  : /r||L v)g/0 v)rF8obll3 F8RTKobll3 TKrn   