
    }if                       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 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 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- d dl.m/Z/ d dlm0Z0 d dl1Z2d dl3Z4d dl5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d dl<m=Z= d dl>m?Z?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZFmGZG d dlmHZHmIZI d dlJmKZKmLZL d dlMmNZN d dlOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW  ed          ZX ed          ZYdZZde[d<   	  e\g d          Z] edejK        ejL                  Z^ G d  d!e
e^                   Z_ G d" d#e_ejK                           Z` G d$ d%e_ejL                           ZadS )&    )annotations)IteratorMappingSequenceSized)TYPE_CHECKINGAnyGenericLiteralTypeVarcastoverloadN)PolarsNamespace)PolarsSeries)FROM_DICTS_ACCEPTS_MAPPINGS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)Iterable)
ModuleType)Callable)Self	TypeAliasTypeIs)CompliantDataFrameAnyCompliantLazyFrameAny)
PolarsExpr)PolarsGroupByPolarsLazyGroupBy)SparkSession)IntoArrowTable)_EagerAllowedImpl_LazyAllowedImpl)Version_LimitedContext)	DataFrame	LazyFrame)DType)
IntoSchemaJoinStrategyMultiColSelectorMultiIndexSelectorPivotAggSingleIndexSelectorUniqueKeepStrategy_2DArrayTRz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dTdZdUdZe	dVd            Z
e	dWd            Ze	dXd            ZdYd!ZdZd#Zd[d%Zd\d&Zed]d*            Zd^d-Zd_d0Zd1d1d2d`d:Ze	dad<            ZdbdDZdcdKZdddPZdadQZdedSZd1S )fPolarsBaseFrameMethod[Self]rE   rG   rH   rI   rJ   rN   rO   rS   rU   rV   rY   r\   _native_framer4   _versionF)validate_backend_versiondfversionrb   boolreturnNonec               R    || _         || _        |r|                                  d S d S N)r`   ra   _validate_backend_version)selfrc   rd   rb   s       N/home/jrussi/.local/lib/python3.11/site-packages/narwhals/_polars/dataframe.py__init__zPolarsBaseFrame.__init__{   s=      # 	-**,,,,,	- 	-    c                8    | j                                         }dS )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)rk   _s     rl   rj   z)PolarsBaseFrame._validate_backend_version   s      1133rn   tuple[int, ...]c                4    | j                                         S ri   rp   rk   s    rl   rr   z PolarsBaseFrame._backend_version   s    #44666rn   c                    | j         S ri   )r`   rv   s    rl   nativezPolarsBaseFrame.native   s    !!rn   	list[str]c                    | j         j        S ri   )rx   columnsrv   s    rl   r{   zPolarsBaseFrame.columns   s    {""rn   r   c                ,    t          | j                  S N)rd   )r   ra   rv   s    rl   __narwhals_namespace__z&PolarsBaseFrame.__narwhals_namespace__   s    t}5555rn   r&   c                    | j         t          j        u r| j                                         S dt	          | j                    }t          |          )NzExpected polars, got: )rq   r   POLARSto_native_namespacetypeAssertionError)rk   msgs     rl   __native_namespace__z$PolarsBaseFrame.__native_namespace__   sN    >#888';;===CtD,@'A'ACCS!!!rn   r(   c                :    |                      || j                  S r}   )	__class__ra   )rk   rc   s     rl   _with_nativezPolarsBaseFrame._with_native   s    ~~b$-~888rn   c                :    |                      | j        |          S r}   )r   rx   )rk   rd   s     rl   _with_versionzPolarsBaseFrame._with_version   s    ~~dk7~;;;rn   datacontextr5   c              &     | ||j                   S r}   )ra   )clsr   r   s      rl   from_nativezPolarsBaseFrame.from_native   s    s4!12222rn   column_namesstrc                F    |                       | j        j        |           S ri   )r   rx   rS   )rk   r   s     rl   simple_selectzPolarsBaseFrame.simple_select   s#      !3!3\!BCCCrn   exprsr	   c                     | j         | S ri   )rS   )rk   r   s     rl   	aggregatezPolarsBaseFrame.aggregate   s    t{E""rn   N)maintain_orderorder_bysubsetSequence[str] | Nonekeepr?   r   bool | Noner   c                  |r|rt          d| j        d          }| j                            |                              |d                              |p| j        |                              |                              |          }nQ|r0| j                            |                              ||          }n| j                            |||pd          }|                     |          S )N   
row_index_)prefixF)
nulls_last)r   )r   r   )r   r{   rx   with_row_indexrU   uniquedropr   )rk   r   r   r   r   tokenress          rl   r   zPolarsBaseFrame.unique   s      	 	21dl<XXXE**511h511.$,T::ee C  	+""8,,33F3FFCC+$$T.2IE %  C   %%%rn   dict[str, DType]c                *    |                                  S ri   )collect_schemarv   s    rl   schemazPolarsBaseFrame.schema   s    ""$$$rn   other"PolarsBaseFrame[NativePolarsFrame]howr:   left_onright_onsuffixc          	         | j         dk     r|dk    rdn|}|                     | j                            |j        ||||                    S )N)r         fullouterr   r   r   r   r   )rr   r   rx   join)rk   r   r   r   r   r   
how_natives          rl   r   zPolarsBaseFrame.join   sk     -;;vGGTW 	   Kl!   
 
 	
rn   kintbystr | Iterable[str]reversebool | Sequence[bool]c                   | j         dk     r0|                     | j                            |||                    S |                     | j                            |||                    S )N   r   r   )r   r   
descendingr   r   r   )rr   r   rx   top_k)rk   r   r   r   s       rl   r   zPolarsBaseFrame.top_k   sz      9,,$$!!& "       !2!2Q2w!2!O!OPPPrn   onindexvariable_name
value_namec                    | j         dk     r1|                     | j                            ||||                    S |                     | j                            ||||                    S )Nr   )id_vars
value_varsr   r   )r   r   r   r   )rr   r   rx   meltunpivot)rk   r   r   r   r   s        rl   r   zPolarsBaseFrame.unpivot   s      9,,$$  !!"/)	 !       KU-J    
 
 	
rn   c                      j         } j        dk     r|j        n|                                } fd|                                D             S )Nr   c                B    i | ]\  }}|t          |j                  S  )r   ra   ).0namedtyperk   s      rl   
<dictcomp>z2PolarsBaseFrame.collect_schema.<locals>.<dictcomp>  s<     
 
 
e *5$-@@
 
 
rn   )rx   rr   r   r   items)rk   rc   r   s   `  rl   r   zPolarsBaseFrame.collect_schema  sa    ["3d::@Q@Q@S@S
 
 
 
%||~~
 
 
 	
rn   r   c                L   | j         }||                    |          }nq|                    t          j        t          j                                                  |                              |          t          j                              }| 	                    |          S )N)r   )
rx   r   rS   pl	int_rangelenoveraliasallr   )rk   r   r   frameresults        rl   r   zPolarsBaseFrame.with_row_index  s    ))$//FF\\RVXX&&++X+>>DDTJJBFHH F   (((rn   )rc   r\   rd   r4   rb   re   rf   rg   )rf   rg   )rf   rt   )rf   r\   )rf   ry   )rf   r   )rf   r&   )rc   r\   rf   r(   )rd   r4   rf   r(   )r   r\   r   r5   rf   r(   )r   r   rf   r(   )r   r	   rf   r(   )
r   r   r   r?   r   r   r   r   rf   r(   rf   r   )r   r   r   r:   r   r   r   r   r   r   rf   r(   r   r   r   r   r   r   rf   r(   )
r   r   r   r   r   r   r   r   rf   r(   )r   r   r   r   rf   r(   )__name__
__module____qualname____annotations__r   r   rq   rm   rj   propertyrr   rx   r{   r~   r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   rn   rl   r^   r^   j   s        $$$$$+O */
- 
- 
- 
- 
- 
-4 4 4 4 7 7 7 X7 " " " X" # # # X#6 6 6 6" " " "9 9 9 9< < < < 3 3 3 [3D D D D# # # # '+)-& & & & & &2 % % % X%
 
 
 
,Q Q Q Q
 
 
 
,
 
 
 
	) 	) 	) 	) 	) 	)rn   r^   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dd            Zedd#            Zedd%            Zedd)            Z	edd,            Z
dd.Zdd0Zdd1Zedd4            Zedd6            Zedd8            Zdd;Zdd=Zdd@Z	 ddAdBddGZddAdBddHZeddJ            ZddMZddOZddQZ	 ddAdRddXZedd\            Zedd_            ZddbZddgZddkZ ej        dl          ddu            ZddvZ d fd~Z!d fdZ"ddZ# xZ$S )PolarsDataFramer_   rD   zMethod[CompliantDataFrameAny]collectzMethod[int | float]rF   rI   z?Method[Iterator[tuple[Any, ...]] | Iterator[Mapping[str, Any]]]rM   zMethod[PolarsSeries]rK   zMethod[tuple[Any, ...]]rP   z?Method[Sequence[tuple[Any, ...]] | Sequence[Mapping[str, Any]]]rQ   rR   zMethod[pa.Table]rW   zMethod[pd.DataFrame]rX   zMethod[Any]rZ   Method[None]r[   r   r1   r   r5   rf   r(   c         	         |j                                         dk    rt          j        |          }n0t	          dt          j        t          ||                              }|                     ||          S )N)r      pl.DataFramer   )rq   rr   r   r6   r   
from_arrowr   r   )r   r   r   rx   s       rl   r   zPolarsDataFrame.from_arrow0  sh    "3355??\$''FF."-8I$PW8X8X*Y*YZZFvw777rn   Mapping[str, Any]r   .IntoSchema | Mapping[str, DType | None] | Nonec                  |r fd|                                 D             nd }|                     t          j        ||                    S )Nc                J    i | ]\  }}||t          |j                  nd  S ri   r   ra   r   keyr   r   s      rl   r   z-PolarsDataFrame.from_dict.<locals>.<dictcomp>B  M        !S% $ .eW5EFFF  rn   r   )r   r   r   	from_dict)r   r   r   r   	pl_schemas     `  rl   r   zPolarsDataFrame.from_dict8  sp           %+LLNN	     	 r|D)<<gNNNrn   Sequence[Mapping[str, Any]]c                 |r fd|                                 D             nd }|st          j        |          }npt          st	          |d         t
                    rt          j        ||          }n8|pt          |d                   }t          j        d |D             |d          }|                     |          S )Nc                J    i | ]\  }}||t          |j                  nd  S ri   r   r   s      rl   r   z.PolarsDataFrame.from_dicts.<locals>.<dictcomp>W  r   rn   )r   r   c              3  X   K   | ]%}t          |                                          V  &d S ri   )tuplevalues)r   rP   s     rl   	<genexpr>z-PolarsDataFrame.from_dicts.<locals>.<genexpr>g  s2      55szz||$$555555rn   rP   )r   orientr   )	r   r   r6   r   
isinstancedict
from_dictsr   r   )r   r   r   r   r   rx   r{   s     `    rl   r  zPolarsDataFrame.from_dictsM  s           %+LLNN	     	  	\333FF( 	JtAw,E,E 	]433FF15a>>G\55555ge  F vw777rn   objpl.DataFrame | AnyTypeIs[pl.DataFrame]c                6    t          | t          j                  S ri   )r  r   r6   r  s    rl   
_is_nativezPolarsDataFrame._is_nativel      #r|,,,rn   r@   !IntoSchema | Sequence[str] | Nonec                  ddl m} t          |t          |f          r ||                                          n|}|                     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_numpyp  st     	+***** &7F"344FF6NN$$&&& 	
 r}T9==wOOOrn   DataFrame[pl.DataFrame]c                :    | j                             | d          S )Nr   level)ra   	dataframerv   s    rl   to_narwhalszPolarsDataFrame.to_narwhals      }&&t6&:::rn   r   c                    dS )Nr   r   rv   s    rl   __repr__zPolarsDataFrame.__repr__        rn   c                    | S ri   r   rv   s    rl   __narwhals_dataframe__z&PolarsDataFrame.__narwhals_dataframe__      rn   	pl.Seriesr   c                    d S ri   r   rk   r  s     rl   _from_native_objectz#PolarsDataFrame._from_native_object  s    CF3rn   r   c                    d S ri   r   r"  s     rl   r#  z#PolarsDataFrame._from_native_object  s    >Acrn   rA   c                    d S ri   r   r"  s     rl   r#  z#PolarsDataFrame._from_native_object  s    03rn   pl.Series | pl.DataFrame | TSelf | PolarsSeries | Tc                    t          |t          j                  rt          j        ||           S |                     |          r|                     |          S |S Nr   )r  r   Seriesr   r   r  r   r"  s     rl   r#  z#PolarsDataFrame._from_native_object  s[     c29%% 	?+C>>>>??3 	*$$S)))
rn   r   c                *    t          | j                  S ri   )r   rx   rv   s    rl   __len__zPolarsDataFrame.__len__  s    4;rn   attrr	   c                l     t           vr! j        j         d d}t          |          d fd}|S )	N has not attribute ''.argsr	   kwargsrf   c                 4   t          | |          \  }}	                      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#  getattrrx   r   
exceptionsr$   r{   	Exceptionr   )r1  r2  poskwdser   r-  rk   s         rl   funcz)PolarsDataFrame.__getattr__.<locals>.func  s    +D&99IC://0JT0J0JC0XSW0X0XYYY=4 6 6 6ZZ4<ZZZ)#..A5 : : :,Q//T9:s#   -A BA55BBBr1  r	   r2  r	   rf   r	   INHERITED_METHODSr   r   AttributeErrorrk   r-  r   r;  s   ``  rl   __getattr__zPolarsDataFrame.__getattr__  sc    (((^,JJ$JJJC %%%	: 	: 	: 	: 	: 	: 	: rn   N)copyr   
Any | NonerB  r   c                   | j         dk     r|d}t          |          | j         dk     r| j                            |          S | j                            |          S )N)r   r      z=`copy` in `__array__` is only supported for 'polars>=0.20.28')rr   NotImplementedErrorrx   	__array__)rk   r   rB  r   s       rl   rG  zPolarsDataFrame.__array__  sd      ;..43CQC%c*** ;..;((///{$$U+++rn   c               4    | j                                         S ri   )rx   to_numpy)rk   r   rB  s      rl   rI  zPolarsDataFrame.to_numpy  s    {##%%%rn   tuple[int, int]c                    | j         j        S ri   )rx   shaperv   s    rl   rL  zPolarsDataFrame.shape  s    {  rn   rL   ]tuple[SingleIndexSelector | MultiIndexSelector[PolarsSeries], MultiColSelector[PolarsSeries]]c           	        |\  }}| j         dk    rct          |          r|j        n|}t          |          r|j        n|}||f}| j                            |          }|                     |          S t          |t                    rt          |          n|}t          |t                    rt          |          n|}t          |          r|	                                }| j        }t          |          st          |t                    r't          |          dk    r|                                 S t          |          r) |j        d t          |j        |          D              }nt#          |          rt%          |          st'          |          r@|                    | j        t)          |j        |j        |j                                     }nt          |t0                    r$|d d |j                                        f         }n|d d |f         }nt          |t(                    r;|                    | j        t)          t5          || j                                      }nt          |          r-|                    |j                                                  }nFt7          |          r|                    |          }n!dt9          |           }	t;          |	          t          |          st          |t<                    r||gd d f         }nt          |t(          t>          f          r||d d f         }n^t          |          r||j        d d f         }n=t7          |          r||d d f         }n!dt9          |           }	t;          |	          |                      |          S )N)r   r      r   c              3  $   K   | ]\  }}||V  d S ri   r   )r   colrS   s      rl   r  z.PolarsDataFrame.__getitem__.<locals>.<genexpr>  s,      XX+#vQWX#XXXXXXrn   z'Unreachable code, got unexpected type: )!rr   r   rx   __getitem__r#  r  r   listr#   tolistr    r   r   rS   r   zipr{   r   r   r   slicestartstopstepr   to_listr   r   r   r   r   ranger   )
rk   rL   rQ   r{   rows_nativecolumns_nativeselectorselectedrx   r   s
             rl   rR  zPolarsDataFrame.__getitem__  s    g ;..)<T)B)BL$++K/B7/K/KXW^^QXN"N2H{..x88H++H555
 ",D%!8!8B4:::dD'1'5'A'ANd7mmmwG )) +!..**[F )) .gu-- )#g,,!2C2C;;==(&w// .*V]XXV^W1M1MXXXFF 'w// .%g.. 	4(72C2C 	4!' Lw}glGL)Y)YZ" "
 $G\:: 4!'7>+A+A+C+C(C!D!'7
!3// .#]]!#A'4<#X#XY FF
 )11 .#]]7>+A+A+C+CDDFF%g.. .#]]733FFSDMMSSC(--- && .dC(( 
.#TFAAAI.FFuen55 .#D!!!G_FF(.. .#DKN3FF%d++ .#D!!!G_FFPDJJPPC(---$$V,,,rn   r   c                ^    t          j        | j                            |          |           S r)  )r   r   rx   
get_column)rk   r   s     rl   ra  zPolarsDataFrame.get_column
  s(    '(>(>t(D(DdSSSSrn   Iterator[PolarsSeries]c              #  r   K   | j                                         D ]}t          j        ||           V  d S r)  )rx   iter_columnsr   r   )rk   seriess     rl   rd  zPolarsDataFrame.iter_columns  sP      k..00 	A 	AF*64@@@@@@@	A 	Arn   )sessionbackend_LazyAllowedImpl | Nonerf  SparkSession | Noner,   c                  ||t           j        u r3t                              | j                                        |           S |t           j        u r7dd l}ddlm	} | j        } ||
                    d          d| j                  S |t           j        u rIdd lm} ddlm}  ||                    | j                                                  d| j                  S |t           j        u r<dd l}ddlm}	  |	|                    | j        | j        	          d| j                  S |                                r7dd
lm}
 |d}t9          |          |
                    | ||| j                  S t<          )Nr   r   )DuckDBLazyFrame_dfT)rb   rd   )DaskLazyFrame)IbisLazyFrame)r{   )SparkLikeLazyFramez5Spark like backends require `session` to be not None.)rf  implementationrd   )r   r   PolarsLazyFramer   rx   lazyDUCKDBduckdbnarwhals._duckdb.dataframerk  tablera   DASKdask.dataframer  narwhals._dask.dataframerm  from_pandasrX   IBISibisnarwhals._ibis.dataframern  memtabler{   is_spark_likenarwhals._spark_like.dataframero  
ValueError_from_compliant_dataframer   )rk   rg  rf  rt  rk  rl  ddrm  r|  rn  ro  r   s               rl   rr  zPolarsDataFrame.lazy  s    ?g)>>>"..t{/?/?/A/A4.PPPn+++MMMBBBBBB+C"?U##dDM    n)))''''''>>>>>> =t{446677)-   
 n)))KKK>>>>>> =dk4<@@)-      "" 	IIIIIIM oo%%??&	 @    rn   	as_seriesLiteral[True]dict[str, PolarsSeries]c                   d S ri   r   rk   r  s     rl   to_dictzPolarsDataFrame.to_dictG  s    ORsrn   Literal[False]dict[str, list[Any]]c                   d S ri   r   r  s     rl   r  zPolarsDataFrame.to_dictJ  s    MPSrn   re   .dict[str, PolarsSeries] | dict[str, list[Any]]c                    |r7 fd j                                                                         D             S  j                             d          S )Nc                D    i | ]\  }}|t          j        |           S )r   )r   r   )r   r   rQ  rk   s      rl   r   z+PolarsDataFrame.to_dict.<locals>.<dictcomp>Q  s?       D# l.sDAAA  rn   F)r  )rx   r  r   r  s   ` rl   r  zPolarsDataFrame.to_dictM  sm      	   !%!4!4!6!6!<!<!>!>    {""U"333rn   keys$Sequence[str] | Sequence[PolarsExpr]drop_null_keysr.   c               *    ddl m}  || ||          S )Nr   )r.   r  )narwhals._polars.group_byr.   )rk   r  r  r.   s       rl   group_byzPolarsDataFrame.group_byW  s-     	<;;;;;}T4GGGGrn   r{   Sequence[str]strictc                   t          | ||          }|                     | j                            |                    S )Nr  )r!   r   rx   r   )rk   r{   r  to_drops       rl   r   zPolarsDataFrame.drop^  s:    'gfEEE  !1!1'!:!:;;;rn   r   r   r   r   r   aggregate_functionPivotAgg | Nonesort_columns	separatorc                   	 | j                             ||||||          }n"# t          $ r}t          |          d d }~ww xY w|                     |          S )N)r   r   r  r  r  )rx   pivotr7  r   r#  )	rk   r   r   r   r  r  r  r   r:  s	            rl   r  zPolarsDataFrame.pivotb  s|    
	6[&&#5)# '  FF  	6 	6 	6(++5	6''///s    # 
A=Ac                    | j         S ri   )rx   rv   s    rl   r  zPolarsDataFrame.to_polarsz  s
    {rn   r   PolarsBaseFrame[pl.DataFrame]r   r:   r   r   r   c                   	 t                                          |||||          S # t          $ r}t          |          d d }~ww xY w)Nr   )superr   r7  r   )rk   r   r   r   r   r   r:  r   s          rl   r   zPolarsDataFrame.join}  sd    	677<<gQW       	6 	6 	6(++5	6s   %) 
AAAr   r   r   r   r   c                   	 t                                          |||          S # t          $ r}t          |          d d }~ww xY w)Nr   )r  r   r7  r   )rk   r   r   r   r:  r   s        rl   r   zPolarsDataFrame.top_k  sS    	677==1W==== 	6 	6 	6(++5	6s   #' 
AAA
int | Nonecolumnint | str | Nonec                    | j         dk     r%|#|!| j        x}dk    rd|}t          |          | j                            ||          S )N)r   $   )r   r   zfcan only call `.item()` without "row" or "column" values if the DataFrame has a single element; shape=)rP   r  )rr   rL  r  rx   rL   )rk   rP   r  rL  r   s        rl   rL   zPolarsDataFrame.item  so    !G++*$//C9>C C  S//!{C777rn   )r   r1   r   r5   rf   r(   )r   r   r   r5   r   r   rf   r(   )r   r   r   r5   r   r   rf   r(   )r  r  rf   r  )r   r@   r   r5   r   r  rf   r(   )rf   r  rf   r   rf   r(   )r  r   rf   r   )r  r   rf   r(   )r  rA   rf   rA   )r  r&  rf   r'  )rf   r   r-  r   rf   r	   ri   )r   rC  rB  r   rf   r@   )r   r	   rB  r   rf   r@   )rf   rJ  )rL   rM  rf   r	   )r   r   rf   r   rf   rb  )rg  rh  rf  ri  rf   r,   )r  r  rf   r  )r  r  rf   r  )r  re   rf   r  )r  r  r  re   rf   r.   r{   r  r  re   rf   r(   )r   r  r   r   r   r   r  r  r  re   r  r   rf   r(   )rf   r   )r   r  r   r:   r   r   r   r   r   r   rf   r(   r   )rP   r  r  r  rf   r	   )%r   r   r   r   r   r   r   r  staticmethodr  r  r  r  r  r   r#  r,  rA  rG  rI  r   rL  rR  ra  rd  rr  r  r  r   r"   backend_versionr  r  r   r   rL   __classcell__r   s   @rl   r   r     s        ****''''NNNN####    IIII#### 8 8 8 [8 O O O [O( 8 8 8 [8< - - - \- P P P [P"; ; ; ;! ! ! !    FFF XFAAA XA333 X3             $ #',?C, , , , , ,& & & & & & & ! ! ! X!E- E- E- E-NT T T TA A A A ,04 (,	4 4 4 4 4 4l RRR XRPPP XP4 4 4 4H H H H< < < < Xd##0 0 0 $#0.   6 6 6 6 6 6 6 6 6 6 6 68 8 8 8 8 8 8 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 ).rq  r   rT   r  pl.LazyFrame | Anyrf   TypeIs[pl.LazyFrame]c                6    t          | t          j                  S ri   )r  r   r7   r
  s    rl   r  zPolarsLazyFrame._is_native  r  rn   LazyFrame[pl.LazyFrame]c                :    | j                             | d          S )Nrr  r  )ra   	lazyframerv   s    rl   r  zPolarsLazyFrame.to_narwhals  r  rn   r   c                    dS )Nrq  r   rv   s    rl   r  zPolarsLazyFrame.__repr__  r  rn   r(   c                    | S ri   r   rv   s    rl   __narwhals_lazyframe__z&PolarsLazyFrame.__narwhals_lazyframe__  r  rn   r-  r	   c                l     t           vr! j        j         d d}t          |          d fd}|S )	Nr/  r0  r1  r	   r2  rf   c                     t          | |          \  }}	                      t          j                  |i |          S # t          j        j        $ r"}t          t          |                    |d }~ww xY wri   )r   r   r5  rx   r   r6  r$   r   )r1  r2  r8  r9  r:  r-  rk   s        rl   r;  z)PolarsLazyFrame.__getattr__.<locals>.func  s    +D&99IC9(()Cd)C)CS)QD)Q)QRRR=4 9 9 9)#a&&11q89s   -A A:A55A:r<  r=  r@  s   ``  rl   rA  zPolarsLazyFrame.__getattr__  sc    (((^,JJ$JJJC %%%	9 	9 	9 	9 	9 	9 	9 rn   rb  c              #  x   K   |                      t          j                                                  E d {V  d S ri   )r   r   r   rd  rv   s    rl   _iter_columnszPolarsLazyFrame._iter_columns  s?      << 566CCEEEEEEEEEEErn   r   c                    	 t                                                      S # t          $ r}t          |          d d }~ww xY wri   )r  r   r7  r   )rk   r:  r   s     rl   r   zPolarsLazyFrame.collect_schema  sM    	677))+++ 	6 	6 	6(++5	6s   # 
A=Arg  _EagerAllowedImpl | Noner2  r+   c                   	  | j         j        d
i |}n"# t          $ r}t          |          d d }~ww xY w||t          j        u rt                              ||           S |t          j        u r7ddl	m
}  ||                                t          j        d| j        d          S |t          j        u r,ddlm}  ||                                d| j        d          S d	| }t#          |          )Nr   r   )PandasLikeDataFrameTF)rp  rb   rd   validate_column_names)ArrowDataFrame)rb   rd   r  zUnsupported `backend` value: r   )rx   r   r7  r   r   r   r   r   PANDASnarwhals._pandas_like.dataframer  rX   ra   PYARROWnarwhals._arrow.dataframer  rW   r  )rk   rg  r2  r   r:  r  r  r   s           rl   r   zPolarsLazyFrame.collect  sG   	6(T[(22622FF 	6 	6 	6(++5	6 ?g)>>>"..vt.DDDn+++KKKKKK&&  ""-4)-&+    n,,,@@@@@@!>!!)-&+	    8g77oos    
4/4r  r  r  re   r/   c               *    ddl m}  || ||          S )Nr   )r/   r  )r  r/   )rk   r  r  r/   s       rl   r  zPolarsLazyFrame.group_by  s/     	@?????  tNKKKKrn   r{   r  r  c                   | j         dk     r-|                     | j                            |                    S |                     | j                            ||                    S )Nr   r  )rr   r   rx   r   )rk   r{   r  s      rl   r   zPolarsLazyFrame.drop  s]     9,,$$T[%5%5g%>%>???  !1!1'&!1!I!IJJJrn   )r  r  rf   r  )rf   r  r  r  r  r  r   )rg  r  r2  r	   rf   r+   )r  r  r  re   rf   r/   r  )r   r   r   r   r  r  r  r  r  rA  r  r   r   r  r   r  r  s   @rl   rq  rq    s        - - - \-; ; ; ;! ! ! !      F F F F6 6 6 6 6 6! ! ! !FL L L LK K K K K K K Krn   rq  )b
__future__r   collections.abcr   r   r   r   typingr   r	   r
   r   r   r   r   polarsr   narwhals._polars.namespacer   narwhals._polars.seriesr   narwhals._polars.utilsr   r   r   r   r   narwhals._utilsr   r   r   r   r   r   r   r   r   r   r    r!   r"   narwhals.dependenciesr#   narwhals.exceptionsr$   r%   typesr&   r'   pandaspdpyarrowpatyping_extensionsr(   r)   r*   narwhals._compliant.typingr+   r,   narwhals._polars.exprr-   r  r.   r/   narwhals._spark_like.utilsr0   narwhals._translater1   narwhals._typingr2   r3   r4   r5   narwhals.dataframer6   r7   narwhals.dtypesr8   narwhals.typingr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   r   	frozensetr>  r\   r^   r   rq  r   rn   rl   <module>r     sp   " " " " " " " > > > > > > > > > > > > P P P P P P P P P P P P P P P P P P     6 6 6 6 6 6 0 0 0 0 0 0                                           4 3 3 3 3 3 3 3 3 3 3 3 ((((((      9999999999WWWWWWWW000000JJJJJJJJ777777222222DDDDDDDD8888888877777777%%%%%%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	AA& & & & & I    : G/r|LL r) r) r) r) r)g/0 r) r) r)jB8 B8 B8 B8 B8obl3 B8 B8 B8JTK TK TK TK TKobl3 TK TK TK TK TKrn   