
    Lpj݊                    6   S SK Jr  S SKJrJrJrJr  S SKJr  S SK	J
r
JrJr  S SKJr  S SKJrJr  S SKJr  S SKJrJrJrJrJr  S S	KJr  \(       a2  S S
KJrJr  S SKJ r   S SK	J!r!J"r"  S SK#J$r$  S SK%J&r&  S SK'J(r(  S SK)J*r*J+r+J,r,   " S S\\\4   \\\4   5      r-g)    )annotations)TYPE_CHECKINGAnyLiteralProtocol)LazyExpr)	EvalNames
EvalSeriesNativeExprT)WindowInputs)combine_alias_output_namescombine_evaluate_output_names)SQLLazyFrameT)ImplementationVersionextend_boolis_pyspark_pre_4not_implemented)InvalidOperationError)CallableSequence)Self)
AliasNamesWindowFunction)SQLExprDateTimeNamesSpace)SQLExprStringNamespace)SQLNamespace)ModeKeepStrategyPythonLiteral
RankMethodc                     \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'    So\R                  S.             SpS jjjrSqS jr  SrS jr	 So     SsS jjr
 So     StS jjr    SuS jr  Sv       SwS jjr So     SxS jjrSyS jrSzS jr\S{S j5       rS|S jrS}S jrS~S jrSS jrSS jrSS  jrSS! jr So       SS" jjr    SSSS$.               SS% jjjr      SS& jr So           SS' jjr\SS( j5       r\SS) j5       r \      SS* j5       r!SS+ jr"SS, jr#SS- jr$SS. jr%SS/ jr&SS0 jr'SS1 jr(SS2 jr)SS3 jr*SS4 jr+SS5 jr,SS6 jr-SS7 jr.SS8 jr/SS9 jr0SS: jr1SS; jr2SS< jr3SS= jr4SS> jr5SS? jr6SS@ jr7SSA jr8SSB jr9SSC jr:SSD jr;SSE jr<SSF jr=SSG jr>SSH jr?SSI jr@SSJ jrASSK jrBSSL jrCSSM jrDSSN jrESSO jrFSSP jrGSSQ jrHSSR jrISSS jrJSST jrKSSU jrLSSV jrMSSW jrNSSX jrOSSY jrPSSZ jrQSS[ jrRSS\ jrSSS] jrTSS^ jrUSS_ jrV          SS` jrW          SSa jrXSSb jrYSSc jrZSSd jr[SSe jr\SSSf jjr]SSSg jjr^SSh jr_SSi jr`SSj jra      SSk jrbSSl jrc\SSm j5       rd\SSn j5       re\f" 5       rg\f" 5       rh\f" 5       riS#rjg)SQLExpr"   &EvalSeries[SQLLazyFrameT, NativeExprT]_callEvalNames[SQLLazyFrameT]_evaluate_output_namesAliasNames | None_alias_output_namesr   _versionr   _implementation1WindowFunction[SQLLazyFrameT, NativeExprT] | None_window_functionN)implementationc                   g N )selfcallwindow_functionevaluate_output_namesalias_output_namesversionr.   s          N/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_sql/expr.py__init__SQLExpr.__init__*   s         c                $    U R                  U5      $ r0   )r%   )r2   dfs     r8   __call__SQLExpr.__call__5   s    zz"~r;   c                    g r0   r1   r2   s    r8   __narwhals_namespace__SQLExpr.__narwhals_namespace__8   s    >Ar;   c                   ^ ^^ SUUU 4S jjnU$ )Nc                   > T" U 5      nT=(       d    0 R                  5        VVs0 s H  u  p#X R                  U5      _M     nnnU Vs/ s H  nT" U40 UD6PM     sn$ s  snnf s  snf r0   )items_evaluate_single_output_expr)	r=   native_series_listkeyvalueother_native_seriesnative_seriesr3   expression_argsr2   s	         r8   func.SQLExpr._callable_to_eval_series.<locals>.funcB   s    !%b $3#8b"?"?"A#"AJC 44U;;"A   # &8%7M ]:&9:%7 	#s   A 
A&)r=   r   returnzlist[NativeExprT]r1   )r2   r3   rM   rN   s   ``` r8   _callable_to_eval_series SQLExpr._callable_to_eval_series<   s    		 		 r;   c               ,   ^ ^^       SUUU 4S jjnU$ )Nc           	        > T	R                  X5      nT=(       d    0 R                  5        VVs0 s H  u  p4X0R                  XA5      _M     nnnU Vs/ s H  nT" U40 UD6PM     sn$ s  snnf s  snf r0   )r4   rF   _evaluate_window_expr)
r=   window_inputsrH   rI   rJ   rK   rL   r3   rM   r2   s
          r8   window_f4SQLExpr._push_down_window_function.<locals>.window_fU   s     "&!5!5b!H $3#8b"?"?"A#"AJC --eCC"A   # &8%7M ]:&9:%7 	#s   A)A/r=   r   rV   WindowInputs[NativeExprT]rP   Sequence[NativeExprT]r1   )r2   r3   rM   rW   s   ``` r8   _push_down_window_function"SQLExpr._push_down_window_functionO   s,    		.G	"	 	$ r;   c           	         U R                  U R                  UU R                  U R                  U R                  U R
                  S9$ Nr5   r6   r7   r.   )	__class__r%   r'   r)   r*   r+   )r2   r4   s     r8   _with_window_functionSQLExpr._with_window_functioni   sF     ~~JJ"&"="=#77MM//  
 	
r;   c          	         U R                  U R                  X5      UU R                  U R                  U R                  U R
                  S9$ r_   )ra   rQ   r'   r)   r*   r+   )r2   r3   window_funcrM   s       r8   _with_callableSQLExpr._with_callableu   sM     ~~))$@"&"="=#77MM//  
 	
r;   c          	         U R                  U R                  X5      U R                  X5      U R                  U R                  U R
                  U R                  S9$ r_   ra   rQ   r\   r'   r)   r*   r+   )r2   r3   rM   s      r8   _with_elementwiseSQLExpr._with_elementwise   sX     ~~))$@++DB"&"="=#77MM//  
 	
r;   c           	         SU0nU R                  U R                  X5      U R                  X5      U R                  U R                  U R
                  U R                  S9$ )Notherr`   ri   )r2   oprm   rM   s       r8   _with_binarySQLExpr._with_binary   s`    "E*~~))">++B@"&"="=#77MM//  
 	
r;   c          	        ^^ U R                   mTc  S OTc  TOUU4S jn[        U 5      " U R                  U R                  U R                  UU R
                  U R                  S9$ )Nc                    > T" T" U 5      5      $ r0   r1   )output_namescurrent_alias_output_namesrN   s    r8   <lambda>2SQLExpr._with_alias_output_names.<locals>.<lambda>   s    d+El+S&Tr;   r`   )r)   typer%   r-   r'   r*   r+   )r2   rN   r6   rt   s    ` @r8   _with_alias_output_names SQLExpr._with_alias_output_names   so    %)%=%=" |  *1 T 	 DzJJ!!"&"="=1MM//
 	
r;   c                J   ^        SU 4S jjnT R                   =(       d    U$ )Nc                   > UR                   (       a   eT" U 5       Vs/ s H  nTR                  X!R                  5      PM      sn$ s  snf r0   )order_by_window_expressionpartition_byr=   inputsexprr2   s      r8   default_window_func4SQLExpr.window_function.<locals>.default_window_func   sI     &&OSTVxOWt''.A.ABx  s   %Ar=   r   r   rZ   rP   r[   )r-   )r2   r   s   ` r8   r4   SQLExpr.window_function   s4    		'@	"	 $$;(;;r;   c                D    U R                  5       R                  " U/UQ76 $ r0   )rB   	_function)r2   nameargss      r8   r   SQLExpr._function   s!    **,66tCdCCr;   c                @    U R                  5       R                  U5      $ r0   )rB   _lit)r2   rJ   s     r8   r   SQLExpr._lit   s    **,11%88r;   c                <    U R                  5       R                  " U6 $ r0   )rB   	_coalesce)r2   r   s     r8   r   SQLExpr._coalesce   s    **,66==r;   c                    g r0   r1   rA   s    r8   _count_starSQLExpr._count_star   s    #r;   c                    g r0   r1   r2   r   r|   s      r8   _firstSQLExpr._first   s    r;   c                    g r0   r1   r   s      r8   _lastSQLExpr._last   s    sr;   c                   g r0   r1   )r2   r   ignore_nullss      r8   
_any_valueSQLExpr._any_value   s    SVr;   c                B    U R                  5       R                  XU5      $ r0   )rB   _when)r2   	conditionrJ   	otherwises       r8   r   SQLExpr._when   s      **,229YOOr;   r1   
descending
nulls_lastc                   g r0   r1   )r2   r   r~   r|   
rows_startrows_endr   r   s           r8   r}   SQLExpr._window_expression   s     r;   c               ,   ^ ^^       SUUU 4S jjnU$ )Nc                *  > [        T[        UR                  5      5      nT" U 5       Vs/ s H[  nTR                  TR	                  SU5      TR                  TR	                  TU5      UR                  UR                  UUSS95      PM]     sn$ s  snf )N	isnotnullr   r   r   r   )r   lenr|   r   r   r}   r~   )r=   r   flagsr   	func_namereverser2   s       r8   rN   &SQLExpr._cum_window_func.<locals>.func   s      V__)=>E !H %D 

NN;5++y$7++#(#(!" , 
 %  s   A"Br   r1   )r2   r   r   rN   s   ``` r8   _cum_window_funcSQLExpr._cum_window_func   s,    		'@	"	 	& r;   c                  ^ ^^^^	^
^ / SQmU(       a  US-
  S-  nUS-
  S-  nXg-   * m
Um	OUS-
  * m
Sm	      SUU	UUU U
U4S jjnU$ )N)summeanstdvar      r   c                  > TS;   a  TnOgTS:X  a	  TS:X  a  SnOXTS;   a	  TS:X  a  SnOITS:X  a	  TS:X  a  SnO:TS:X  a	  TS:X  a  S	nO+TS
;   a  ST S3n[        U5      eST ST S3n[        U5      eUR                  UR                  TTS.nT
" U 5       Vs/ s Hh  nT
R                  T
R                  " T
R                  SU5      40 UD6T
R                  T	5      :  T
R                  " T
R                  X%5      40 UD65      PMj     sn$ s  snf )N>   r   r   r   r   var_popr   var_sampr   
stddev_popstddev_samp>   r   r   z;Only ddof=0 and ddof=1 are currently supported for rolling_.z,Only the following functions are supported: z.
Got: )r~   r|   r   r   count)
ValueErrorr~   r|   r   r}   r   r   )r=   r   func_msgwindow_kwargsr   ddofendr   min_samplesr2   startsupported_funcss         r8   rN   *SQLExpr._rolling_window_func.<locals>.func	  sN    O+&e#	!e#	"e#	$e#	%n,ST]S^^_` o%D_DUU]^g]hhij o% & 3 3"OO#	"M !H	 %D 

++w59F yy-. ++DNN5,GY=Y %	 	 	s   A/D	r   r1   )r2   r   window_sizer   r   centerhalf	remainderrN   r   r   r   s   `` ``    @@@r8   _rolling_window_funcSQLExpr._rolling_window_func   st     8!O)D$qA-I&'EC!Ao&EC"	"	'@"	""	 "	H r;   c                6    U R                   R                  5       $ r0   )r+   _backend_versionrA   s    r8   r   SQLExpr._backend_version/  s    ##4466r;   c                   g r0   r1   )clsr   r   s      r8   _alias_nativeSQLExpr._alias_native3  s    LOr;   c           	        ^^ SUU4S jjn      SUU4S jjnTS   nU " UU[        T6 [        T6 UR                  UR                  S9$ )Nc           	     d   > T" T VVs/ s H  o" U 5        H  o"PM     M     snn5      /$ s  snnf r0   r1   )r=   r   eexprsrN   s      r8   r3   5SQLExpr._from_elementwise_horizontal_op.<locals>.call:  s/    @tBx!!x!@ABB@s   ,
c                x   > T VVs/ s H  o"R                  X5        H  o3PM     M     nnnT" U5      /$ s  snnf r0   )r4   )r=   rV   r   r   lstr   rN   s        r8   r4   @SQLExpr._from_elementwise_horizontal_op.<locals>.window_function=  s=     "'X0D0DR0W110W1CXI; Ys   #6r   )r4   r5   r6   r7   r.   r=   r   rP   r[   rY   )r   r   r*   r+   )r   rN   r   r3   r4   contexts    ``   r8   _from_elementwise_horizontal_op'SQLExpr._from_elementwise_horizontal_op6  sq    	C 	C		.G	"	 	 (+"?"G95A$$"22
 	
r;   c                J    U R                   R                  R                  5       $ )zReturn `True` for multi-output aggregations without names.

For example, column `'a'` only appears in the output as a grouping key:

    df.group_by('a').agg(nw.all().sum())

It does not get included in:

    nw.all().sum().
)	_metadataexpansion_kindis_multi_unnamedrA   s    r8   _is_multi_output_unnamed SQLExpr._is_multi_output_unnamedM  s     ~~,,==??r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__eq__r   rm   s     r8   ru    SQLExpr.__eq__.<locals>.<lambda>\      T[[5Gr;   ro   r2   rm   s     r8   r   SQLExpr.__eq__[        !GOOr;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__ne__r   s     r8   ru    SQLExpr.__ne__.<locals>.<lambda>_  r   r;   r   r   s     r8   r   SQLExpr.__ne__^  r   r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__add__r   s     r8   ru   !SQLExpr.__add__.<locals>.<lambda>b      T\\%5Hr;   r   r   s     r8   r   SQLExpr.__add__a        !H%PPr;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__sub__r   s     r8   ru   !SQLExpr.__sub__.<locals>.<lambda>e  r   r;   r   r   s     r8   r  SQLExpr.__sub__d  r  r;   c                F    U R                  S U5      R                  S5      $ )Nc                
    X-
  $ r0   r1   r   s     r8   ru   "SQLExpr.__rsub__.<locals>.<lambda>h      U\r;   literalro   aliasr   s     r8   __rsub__SQLExpr.__rsub__g  "      !A5IOOPYZZr;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__mul__r   s     r8   ru   !SQLExpr.__mul__.<locals>.<lambda>k  r   r;   r   r   s     r8   r  SQLExpr.__mul__j  r  r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__truediv__r   s     r8   ru   %SQLExpr.__truediv__.<locals>.<lambda>n  s    T5E5Ee5Lr;   r   r   s     r8   r  SQLExpr.__truediv__m  s      !LeTTr;   c                F    U R                  S U5      R                  S5      $ )Nc                
    X-  $ r0   r1   r   s     r8   ru   &SQLExpr.__rtruediv__.<locals>.<lambda>q  r  r;   r  r  r   s     r8   __rtruediv__SQLExpr.__rtruediv__p  r  r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__pow__r   s     r8   ru   !SQLExpr.__pow__.<locals>.<lambda>t  r   r;   r   r   s     r8   r#  SQLExpr.__pow__s  r  r;   c                F    U R                  S U5      R                  S5      $ )Nc                
    X-  $ r0   r1   r   s     r8   ru   "SQLExpr.__rpow__.<locals>.<lambda>w  s    U[r;   r  r  r   s     r8   __rpow__SQLExpr.__rpow__v  s!      !@%HNNyYYr;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__mod__r   s     r8   ru   !SQLExpr.__mod__.<locals>.<lambda>z  r   r;   r   r   s     r8   r-  SQLExpr.__mod__y  r  r;   c                F    U R                  S U5      R                  S5      $ )Nc                
    X-  $ r0   r1   r   s     r8   ru   "SQLExpr.__rmod__.<locals>.<lambda>}  r  r;   r  r  r   s     r8   __rmod__SQLExpr.__rmod__|  r  r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__ge__r   s     r8   ru    SQLExpr.__ge__.<locals>.<lambda>  r   r;   r   r   s     r8   r7  SQLExpr.__ge__  r   r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__gt__r   s     r8   ru    SQLExpr.__gt__.<locals>.<lambda>  r   r;   r   r   s     r8   r<  SQLExpr.__gt__  r   r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__le__r   s     r8   ru    SQLExpr.__le__.<locals>.<lambda>  r   r;   r   r   s     r8   rA  SQLExpr.__le__  r   r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__lt__r   s     r8   ru    SQLExpr.__lt__.<locals>.<lambda>  r   r;   r   r   s     r8   rF  SQLExpr.__lt__  r   r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__and__r   s     r8   ru   !SQLExpr.__and__.<locals>.<lambda>  r   r;   r   r   s     r8   rK  SQLExpr.__and__  r  r;   c                (    U R                  S U5      $ )Nc                $    U R                  U5      $ r0   )__or__r   s     r8   ru    SQLExpr.__or__.<locals>.<lambda>  r   r;   r   r   s     r8   rP  SQLExpr.__or__  r   r;   c                2   ^  SU 4S jjnT R                  X!S9$ )Nc                   > TR                  UTR                  S5      :g  TR                  SX5      TR                  S 5      5      $ Nr   floordivr   r   r   r   rm   r2   s     r8   rN   "SQLExpr.__floordiv__.<locals>.func  s=    ::1%z47		$ r;   rm   r   r   rm   r   rP   r   r   r2   rm   rN   s   `  r8   __floordiv__SQLExpr.__floordiv__  s    	    33r;   c                P   ^  SU 4S jjnT R                  X!S9R                  S5      $ )Nc                   > TR                  U TR                  S5      :g  TR                  SX5      TR                  S 5      5      $ rU  rW  rX  s     r8   rN   #SQLExpr.__rfloordiv__.<locals>.func  s=    ::		!$z57		$ r;   rZ  r  r[  r  r\  s   `  r8   __rfloordiv__SQLExpr.__rfloordiv__  s)    	    399)DDr;   c                R   ^  SU 4S jjn      SU 4S jjnT R                  X5      $ )Nc                f   > TR                  TR                  SU 5      TR                  S5      5      $ Nbool_andTr   r   r   r   r2   s    r8   fSQLExpr.all.<locals>.f  s'    >>$..T"BDIIdOTTr;   c                   > T" U 5       Vs/ s HN  nTR                  TR                  TR                  SU5      UR                  5      TR	                  S5      5      PMP     sn$ s  snf rf  r   r}   r   r~   r   r   s      r8   rW   SQLExpr.all.<locals>.window_f  sl     !H %D ++z48&:M:M IIdO	 %     AA$r   r   rP   r   r   rf   r2   rj  rW   s   `  r8   allSQLExpr.all  9    	U		'@	"	 ""1//r;   c                R   ^  SU 4S jjn      SU 4S jjnT R                  X5      $ )Nc                f   > TR                  TR                  SU 5      TR                  S5      5      $ Nbool_orFrh  ri  s    r8   rj  SQLExpr.any.<locals>.f  s(    >>$..D"A499UCSTTr;   c                   > T" U 5       Vs/ s HN  nTR                  TR                  TR                  SU5      UR                  5      TR	                  S5      5      PMP     sn$ s  snf rx  rm  r   s      r8   rW   SQLExpr.any.<locals>.window_f  sm     !H %D ++y$79L9L IIe$	 %  ro  rp  r   rq  rr  s   `  r8   anySQLExpr.any  ru  r;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nmaxr   ri  s    r8   ru   SQLExpr.max.<locals>.<lambda>      ud0Kr;   rq  rA   s   `r8   r  SQLExpr.max      ""#KLLr;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nr   r  ri  s    r8   ru   SQLExpr.mean.<locals>.<lambda>      vt0Lr;   rq  rA   s   `r8   r   SQLExpr.mean  s    ""#LMMr;   c               :   ^ ^ SUU 4S jjnT R                  U5      $ )Nc                  > TS:X  a  TR                  SU 5      $ TS:X  a  TR                  SU 5      $ TR                  SU 5      nTR                  STR                  SU 5      TR                  STR                  STR                  S	UTR                  S5      5      TR                  S	UTR                  T5      5      5      5      5      $ )
Nr   r   r   r   r   multiplysqrtdividesubtractr   r   r   	n_samplesr   r2   s     r8   rN   SQLExpr.std.<locals>.func  s    qy~~lD99qy~~mT::w5I>>}d3NN z9diilKz9diioN r;   rp  rq  r2   r   rN   s   `` r8   r   SQLExpr.std  s     	 	& ""4((r;   c               :   ^ ^ SUU 4S jjnT R                  U5      $ )Nc                p  > TS:X  a  TR                  SU 5      $ TS:X  a  TR                  SU 5      $ TR                  SU 5      nTR                  STR                  SU 5      TR                  STR                  SUTR                  S5      5      TR                  SUTR                  T5      5      5      5      $ )	Nr   r   r   r   r   r  r  r  r  r  s     r8   rN   SQLExpr.var.<locals>.func  s    qy~~i66qy~~j$77w5I>>z40NN:y$))A,GNN:y$))D/J r;   rp  rq  r  s   `` r8   r   SQLExpr.var  s     	 	  ""4((r;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nmedianr  ri  s    r8   ru    SQLExpr.median.<locals>.<lambda>  s    x0Nr;   rq  rA   s   `r8   r  SQLExpr.median  s    ""#NOOr;   c                :   ^ ^ SU U4S jjnT R                  U5      $ )Nc                h   > TR                  TR                  SU 5      TR                  T5      U 5      $ )Nisnan)r   r   r   )r   r2   rJ   s    r8   	_fill_nan#SQLExpr.fill_nan.<locals>._fill_nan  s*    ::dnnWd;TYYu=MtTTr;   rp  rj   )r2   rJ   r  s   `` r8   fill_nanSQLExpr.fill_nan  s"    	U 	U %%i00r;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nminr  ri  s    r8   ru   SQLExpr.min.<locals>.<lambda>  r  r;   rq  rA   s   `r8   r  SQLExpr.min  r  r;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nr   r  ri  s    r8   ru   SQLExpr.count.<locals>.<lambda>  s    w0Mr;   rq  rA   s   `r8   r   SQLExpr.count  s    ""#MNNr;   c                R   ^  SU 4S jjn      SU 4S jjnT R                  X5      $ )Nc                f   > TR                  TR                  SU 5      TR                  S5      5      $ Nr   r   rh  ri  s    r8   rj  SQLExpr.sum.<locals>.f  s'    >>$.."=tyy|LLr;   c                   > UR                   (       a   eT" U 5       Vs/ s HN  nTR                  TR                  TR                  SU5      UR                  5      TR                  S5      5      PMP     sn$ s  snf r  )r|   r   r}   r   r~   r   r   s      r8   rW   SQLExpr.sum.<locals>.window_f  s{     && !H %D ++ud3V5H5H IIaL	 %  s   AA7rp  r   rq  rr  s   `  r8   r   SQLExpr.sum
  s9    	M		'@	"	 ""1//r;   c                   ^ ^^^^ T R                   mT R                  mT R                  S5      T R                  S5      smmSUUU U4S jjn      SUUUU U4S jjnT R                  X5      $ )Nr   r   c                d   > T" ST" SU 5      T" STR                  T" SU 5      TT5      5      5      $ Naddcount_distinctr  isnull)r   )r   Foner2   zeros    r8   rN   SQLExpr.n_unique.<locals>.func#  s<    "D)%Ah$5sDAB r;   c                   > T" U 5       Vs/ s HU  nT" ST" T" SU5      UR                   5      T" T" STR                  T" SU5      TT5      5      UR                   5      5      PMW     sn$ s  snf r  )r~   r   )r=   r   r   r  Wr  r2   r  s      r8   rW   "SQLExpr.n_unique.<locals>.window_f*  s     !H
 %D a($/1D1DE%Ah,=sD!IJ++ %
 
 
s   AA+rp  r   )r   r}   r   rf   )r2   rN   rW   r  r  r  r  s   `  @@@@r8   n_uniqueSQLExpr.n_unique  sq    NN##IIaL$))A,	c	 			'@	"	 	 ""422r;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nabsr  ri  s    r8   ru   SQLExpr.abs.<locals>.<lambda>=      4>>%3Nr;   r  rA   s   `r8   r  SQLExpr.abs<      %%&NOOr;   c                H   ^          SU 4S jjnT R                  UXS.S9$ )Nc                J   > TR                  STR                  SX5      U5      $ )Ngreatestleastr  )r   lower_boundupper_boundr2   s      r8   _clipSQLExpr.clip.<locals>._clip@  s(     >>DNN7DF r;   )r  r  rM   )r   r   r  r   r  r   rP   r   r  )r2   r  r  r  s   `   r8   clipSQLExpr.clip?  sK    		,7	FQ		 %%,7T & 
 	
r;   c                8   ^  SU 4S jjnT R                  USU0S9$ )Nr  c                (   > TR                  SX5      $ )Nr  r  )r   r  r2   s     r8   r  !SQLExpr.clip_lower.<locals>._clipM  s    >>*d@@r;   r  )r   r   r  r   rP   r   r  )r2   r  r  s   `  r8   
clip_lowerSQLExpr.clip_lowerL  s&    	A %%em[=Y%ZZr;   c                8   ^  SU 4S jjnT R                  USU0S9$ )Nr  c                (   > TR                  SX5      $ )Nr  r  )r   r  r2   s     r8   r  !SQLExpr.clip_upper.<locals>._clipS  s    >>'4==r;   r  )r   r   r  r   rP   r   r  )r2   r  r  s   `  r8   
clip_upperSQLExpr.clip_upperR  s%    	> %%em[=Y%ZZr;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nr  r  ri  s    r8   ru   !SQLExpr.is_null.<locals>.<lambda>Y  s    4>>(D3Qr;   r  rA   s   `r8   is_nullSQLExpr.is_nullX  s    %%&QRRr;   c                   ^ ^ [        T R                  5      nU(       a  UOT R                  U5      mT R                  UU 4S j5      $ )Nc                *   > TR                  SU T5      $ )Nroundr  )r   round_decimalsr2   s    r8   ru   SQLExpr.round.<locals>.<lambda>a  s    ~Fr;   )r   r+   r   rj   )r2   decimals_is_pre4r  s   `  @r8   r  SQLExpr.round[  s=     $D$8$89%-499X3F%%F
 	
r;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nfloorr  ri  s    r8   ru   SQLExpr.floor.<locals>.<lambda>e  s    4>>'43Pr;   r  rA   s   `r8   r  SQLExpr.floord  s    %%&PQQr;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nceilr  ri  s    r8   ru   SQLExpr.ceil.<locals>.<lambda>h  s    4>>&$3Or;   r  rA   s   `r8   r  SQLExpr.ceilg  s    %%&OPPr;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nsinr  ri  s    r8   ru   SQLExpr.sin.<locals>.<lambda>k  r  r;   r  rA   s   `r8   r  SQLExpr.sinj  r  r;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Ncosr  ri  s    r8   ru   SQLExpr.cos.<locals>.<lambda>n  r  r;   r  rA   s   `r8   r  SQLExpr.cosm  r  r;   c                6   ^  SU 4S jjnT R                  U5      $ )Nc                   > TR                  U TR                  S5      :  TR                  [        S5      5      TR                  SU 5      5      $ )Nr   nanr  )r   r   floatr   ri  s    r8   _sqrtSQLExpr.sqrt.<locals>._sqrtq  sA    ::tyy|#TYYuU|%<dnnVUY>Z r;   rp  r  )r2   r	  s   ` r8   r  SQLExpr.sqrtp  s    	
 %%e,,r;   c                .   ^  T R                  U 4S j5      $ )Nc                (   > TR                  SU 5      $ )Nexpr  ri  s    r8   ru   SQLExpr.exp.<locals>.<lambda>y  r  r;   r  rA   s   `r8   r  SQLExpr.expx  r  r;   c                :   ^ ^ SUU 4S jjnT R                  U5      $ )Nc                V  > TR                   nTR                  U TR                  S5      :  TR                  [        S5      5      TR                  U TR                  S5      :H  TR                  [        S5      5      U" SU" SU 5      U" STR                  T5      5      5      5      5      $ )Nr   r  z-infr  log)r   r   r   r  )r   r  baser2   s     r8   _logSQLExpr.log.<locals>._log|  s    A::tyy|#		%,'

DIIaL(IIeFm,h%%40IJ r;   rp  r  )r2   r  r  s   `` r8   r  SQLExpr.log{  s     
	 
	 %%d++r;   c               @    U R                  U R                  SUS95      $ )Nr   r   rb   r   r2   r   s     r8   cum_sumSQLExpr.cum_sum  #    ))$*?*?w*?*WXXr;   c               @    U R                  U R                  SUS95      $ )Nr  r  r  r  s     r8   cum_maxSQLExpr.cum_max  r  r;   c               @    U R                  U R                  SUS95      $ )Nr  r  r  r  s     r8   cum_minSQLExpr.cum_min  r  r;   c               F   ^ ^       SUU 4S jjnT R                  U5      $ )Nc                   > [        T[        UR                  5      5      nT" U 5       Vs/ s H;  nTR                  TR	                  SU5      UR
                  UR                  UUSS9PM=     sn$ s  snf )Nr   r   r   )r   r   r|   r}   r   r~   )r=   r   r   r   r   r2   s       r8   rN   SQLExpr.cum_count.<locals>.func  s      V__)=>E !H
 %D ''NN7D1''OO$$ (  %
 
 
s   AA0r   rb   )r2   r   rN   s   `` r8   	cum_countSQLExpr.cum_count  s8    		'@	"	 	  ))$//r;   c               @    U R                  U R                  SUS95      $ )Nproductr  r  r  s     r8   cum_prodSQLExpr.cum_prod  s(    ))!!)W!=
 	
r;   c          	     B    U R                  U R                  SXUS95      $ )Nr   r   rb   r   r2   r   r   r   s       r8   rolling_sumSQLExpr.rolling_sum  s*    ))%%e[f%U
 	
r;   c          	     B    U R                  U R                  SXUS95      $ )Nr   r0  r1  r2  s       r8   rolling_meanSQLExpr.rolling_mean  s*    ))%%fkv%V
 	
r;   c          
     B    U R                  U R                  SXXCS95      $ )Nr   r   r   r1  r2   r   r   r   r   s        r8   rolling_varSQLExpr.rolling_var  1     ))%%{d & 
 	
r;   c          
     B    U R                  U R                  SXXCS95      $ )Nr   r9  r1  r:  s        r8   rolling_stdSQLExpr.rolling_std  r=  r;   c                B   ^        SU 4S jjnT R                  U5      $ )Nc                   > TR                   nTR                  nT" U 5       Vs/ s H0  nU" SUU" U" SU5      UR                  UR                  5      5      PM2     sn$ s  snf )Nr  lag)r   r}   r~   r|   )r=   r   r  windowr   r2   s        r8   rN   SQLExpr.diff.<locals>.func  so     A,,F !H %D 1UD>6+>+>P
 %  s   7Ar   r(  r2   rN   s   ` r8   diffSQLExpr.diff  3    		'@	"	 ))$//r;   c                F   ^ ^       SUU 4S jjnT R                  U5      $ )Nc           
        > T" U 5       Vs/ s H;  nTR                  TR                  SUT5      UR                  UR                  5      PM=     sn$ s  snf )NrC  )r}   r   r~   r|   )r=   r   r   nr2   s      r8   rN   SQLExpr.shift.<locals>.func  s[     !H	 %D ''NN5$2F4G4G %	  s   AAr   r(  )r2   rL  rN   s   `` r8   shiftSQLExpr.shift  s8    		'@	"	 	 ))$//r;   c                B   ^        SU 4S jjnT R                  U5      $ )Nc                   > T" U 5       Vs/ s HP  nTR                  TR                  S5      / UR                  QUP7UR                  5      TR	                  S5      :H  PMR     sn$ s  snf )N
row_numberr   )r}   r   r~   r|   r   r   s      r8   rN   'SQLExpr.is_first_distinct.<locals>.func  su     !H %D ''NN<00f))040OO
 99Q<  %  s   AA&r   r(  rF  s   ` r8   is_first_distinctSQLExpr.is_first_distinct  rI  r;   c                B   ^        SU 4S jjnT R                  U5      $ )Nc                  > [        S[        UR                  5      5      nT" U 5       Vs/ s HP  nTR                  TR	                  S5      / UR
                  QUP7UR                  UUS9TR                  S5      :H  PMR     sn$ s  snf )NTrR  r   r   )r   r   r|   r}   r   r~   r   )r=   r   r   r   r2   s       r8   rN   &SQLExpr.is_last_distinct.<locals>.func  s      c&//&:;E !H
 %D ''NN<00f))040OO$$ (  99Q<  %
 
 
s   ABr   r(  rF  s   ` r8   is_last_distinctSQLExpr.is_last_distinct  s3    		'@	"	  ))$//r;   c                X   ^ ^ SUU 4S jjn      SUU 4S jjnT R                  X#5      $ )Nc                R   > T(       d  Sn[        U5      eTR                  " U /TQ76 $ Nz#Expected `order_by` to be specified)r   r   r   r   r|   r2   s     r8   rj  SQLExpr.first.<locals>.f  s*    ;+C00;;t/h//r;   c           
     P  > T(       a  UR                   (       a  Sn[        U5      eT(       d  UR                   (       d  Sn[        U5      eT" U 5       Vs/ s HC  nTR                  TR                  " U/UR                   =(       d    TQ76 UR                  5      PME     sn$ s  snf )Nz4Can't specify both `order_by` in `over` and `first`.z4Must specify `order_by` either in `over` or `first`.)r|   r   r}   r   r~   r=   r   r   r   r|   r2   s       r8   rW   SQLExpr.first.<locals>.window_f  s     FOOL+C00FOOL+C00
 !H	 %D ''KKE(C8EvGZGZ %	     A
B#rp  r   rq  r2   r|   rj  rW   s   ``  r8   firstSQLExpr.first  sB    	0 	0		'@	"	 	  ""1//r;   c                X   ^ ^ SUU 4S jjn      SUU 4S jjnT R                  X#5      $ )Nc                R   > T(       d  Sn[        U5      eTR                  " U /TQ76 $ r]  )r   r   r^  s     r8   rj  SQLExpr.last.<locals>.f&  s*    ;+C00::d.X..r;   c           
     P  > T(       a  UR                   (       a  Sn[        U5      eT(       d  UR                   (       d  Sn[        U5      eT" U 5       Vs/ s HC  nTR                  TR                  " U/UR                   =(       d    TQ76 UR                  5      PME     sn$ s  snf )Nz3Can't specify both `order_by` in `over` and `last`.z3Must specify `order_by` either in `over` or `last`.)r|   r   r}   r   r~   ra  s       r8   rW   SQLExpr.last.<locals>.window_f,  s     FOOK+C00FOOK+C00
 !H	 %D ''JJtDv'B(DfFYFY %	  rc  rp  r   rq  rd  s   ``  r8   lastSQLExpr.last%  sB    	/ 	/		'@	"	 	  ""1//r;   c               2   ^ ^ T R                  UU 4S j5      $ )Nc                $   > TR                  U TS9$ )N)r   )r   )r   r   r2   s    r8   ru   #SQLExpr.any_value.<locals>.<lambda>@  s    LIr;   rq  )r2   r   s   ``r8   	any_valueSQLExpr.any_value>  s    ""I
 	
r;   c               
  ^ ^^^^ TS;   a  T R                  S5      mO)TS:X  a  T R                  S5      mOT R                  S5      m S	       S
UUU 4S jjjmSUU4S jjn      SUUU 4S jjnT R                  X45      $ )N>   r  r  averagerankdense
dense_rankrR  c                 > TR                  5       nUU 4U/S/S.nS/ UQU P70nTR                  nTR                  nT
S:X  a0  U" SU" SU" T	40 UD6U" U40 UD65      TR                  S5      5      nOVT
S:X  aG  U" SU" T	40 UD6U" S	U" SU" U40 UD6TR                  S5      5      TR                  S
5      5      5      nO	U" T	40 UD6nTR	                  U" SU 5      U5      $ )NT)r~   r|   r   r   r~   r  r  r  r   rt  r  g       @r   )r   r}   r   r   r   )r   r~   r   
count_exprr   count_window_kwargsrD  r  	rank_exprrN   methodr2   s            r8   _rankSQLExpr.rank.<locals>._rankK  s*    ))+J ,!G)l#f	-M 4BCX\CXSWCX2Y,,FAt5}5zA-@A
 IIaL	 9$41=1 &":E1DE IIaL
 		#	 #49=9	::aT2I>>r;   c                   > T" U TS9$ )Nr   r1   )r   r}  r   s    r8   _unpartitioned_rank)SQLExpr.rank.<locals>._unpartitioned_rankw  s    *55r;   c           	        > UR                   (       a  Sn[        U5      eT" U 5       Vs/ s H  nT" X1R                  TS9PM     sn$ s  snf )Nz[`rank` followed by `over` with `order_by` specified is not supported for SQL-like backends.r  )r|   NotImplementedErrorr~   )r=   r   r   r   r}  r   r2   s       r8   _partitioned_rank'SQLExpr.rank.<locals>._partitioned_rankz  sT     s)#.. !H$D d//JG$  s   Ar1   )r   r   r~   Sequence[str | NativeExprT]r   boolrP   r   rp  r   )r   rf   )r2   r|  r   r  r  r}  rN   s   ```  @@r8   ru  SQLExpr.rankC  s    ..>>&)Dw>>,/D>>,/D 9;*	?*	?5*	? 	*	?
 *	? *	?X	6 	6				'@		"		 		 ""#6JJr;   c                   ^ ^       SU 4S jjmSU4S jjn      SUU 4S jjnT R                  U5      R                  U5      $ )Nc                p   > TR                  TR                  5       U /UQ75      TR                  S5      :H  $ )Nr   )r}   r   r   )r   r~   r2   s     r8   
_is_unique%SQLExpr.is_unique.<locals>._is_unique  s>     **  "T$9L$91 r;   c                   > T" U 5      $ r0   r1   )r   r  s    r8   _unpartitioned_is_unique3SQLExpr.is_unique.<locals>._unpartitioned_is_unique  s    d##r;   c                   > UR                   (       a   eT" U 5       Vs/ s H  nT" U/UR                  Q76 PM     sn$ s  snf r0   )r|   r~   )r=   r   r   r  r2   s      r8   _partitioned_is_unique1SQLExpr.is_unique.<locals>._partitioned_is_unique  s>     &&GKBxPxtJt:f&9&9:xPPPs   ?)r   r   r~   zstr | NativeExprTrP   r   rp  r   )rf   rb   )r2   r  r  r  s   `  @r8   	is_uniqueSQLExpr.is_unique  sp    		.?			$	Q	Q'@	Q"	Q 	Q ""#;<RR"
 	
r;   c                   ^ ^^ SUUU 4S jjnT R                  UT R                  T R                  T R                  T R                  S9$ )Nc                <   > TR                  U [        TT5      5      $ r0   )r4   r   )r=   r|   r~   r2   s    r8   rN   SQLExpr.over.<locals>.func  s    ''Lx,PQQr;   r`   r   )ra   r'   r)   r*   r+   )r2   r~   r|   rN   s   ``` r8   overSQLExpr.over  sL    	R 	R ~~"&"="=#77MM//  
 	
r;   c               v   ^  US:w  a  SU ST R                    S3n[        U5      eT R                  U 4S j5      $ )Nr}  z`Expr.mode(keep='z#')` is not implemented for backend z3

Hint: Use `nw.col(...).mode(keep='any')` instead.c                (   > TR                  SU 5      $ )Nmoder  ri  s    r8   ru   SQLExpr.mode.<locals>.<lambda>  r  r;   )r+   r  rf   )r2   keepr   s   `  r8   r  SQLExpr.mode  sP    5=#D6)LTMaMaLb cD D  &c**""#LMMr;   c                    g r0   r1   rA   s    r8   strSQLExpr.str  s    36r;   c                    g r0   r1   rA   s    r8   dt
SQLExpr.dt  s    58r;   r0   )r3   r$   r4   r,   r5   r&   r6   r(   r7   r   r.   r   rP   Noner   )rP   z3SQLNamespace[SQLLazyFrameT, Self, Any, NativeExprT])rM   dict[str, Self] | Noner3   Callable[..., NativeExprT]rP   r$   )rM   r  r3   r  rP   *WindowFunction[SQLLazyFrameT, NativeExprT])r4   r  rP   r   )NN)rM   r  r3   r  re   r,   rP   r   )rM   r  r3   r  rP   r   )rn   r  rm   r   rP   r   )rN   r(   rP   r   )rP   r  )r   r  r   zNativeExprT | PythonLiteralrP   r   )rJ   r   rP   r   rp  )rP   r   )r   r   r|   r  rP   r   )r   r   r   r  rP   r   )r   r   rJ   r   r   zNativeExprT | NonerP   r   )r1   r1   NN)r   r   r~   r  r|   r  r   
int | Noner   r  r   Sequence[bool] | Noner   r  rP   r   )r   z'Literal['sum', 'max', 'min', 'product']r   r  rP   r  )r   z$Literal['sum', 'mean', 'std', 'var']r   intr   r  r   r  r   r  rP   r  )rP   ztuple[int, ...])r   r   r   r  rP   r   )rN   z.Callable[[Sequence[NativeExprT]], NativeExprT]r   r   rP   r   )rP   r  )rm   r   rP   r   )rP   r   )r   r  rP   r   )rJ   zfloat | NonerP   r   )r  r   r  r   rP   r   )r  r   rP   r   )r  r   rP   r   )r  r  rP   r   )r  r  rP   r   )r   r  rP   r   )r   r  r   r  r   r  rP   r   )
r   r  r   r  r   r  r   r  rP   r   )rL  r  rP   r   r  )r|   Sequence[str]rP   r   )r   r  rP   r   )r|  r    r   r  rP   r   )r~   r  r|   r  rP   r   )r  r   rP   r   )rP   zSQLExprStringNamespace[Self])rP   zSQLExprDateTimeNamesSpace[Self])k__name__
__module____qualname____firstlineno____annotations__r   DUCKDBr9   r>   rB   rQ   r\   rb   rf   rj   ro   rx   propertyr4   r   r   r   r   r   r   r   r   r}   r   r   r   classmethodr   r   r   r   r   r   r  r  r  r  r  r#  r)  r-  r3  r7  r<  rA  rF  rK  rP  r]  rb  rs  r}  r  r   r   r   r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r)  r-  r3  r6  r;  r?  rG  rN  rT  rY  re  rl  rq  ru  r  r  r  r  r  r   
drop_nullsfilterunique__static_attributes__r1   r;   r8   r"   r"   "   s   1144**##GG
 NR	 *8)>)>	4	 K	
  8	 .	 	 '	 
	B	<B 37	 0	(
 
0. 37	 0	(
 
44

I

	

 JN26

 0
(
 G
 

( 37	
 0	
(

 

	

$ 	< 	<D9> .KJV
 )-	PP P &	P
 
P 5702!%#
 -1,0

 2
 .	

 
 
 *
 *
 

@NR	3:  777 7 	7
 7 7 
47r 7 7 O O
A
KO
	
 
,@PPQQ[QU[QZQ[PPPPQP4E0&0&MN),)&P1MO0(3<P
[[S
RQPP-P, YYY0&






03
=A
IL
	


03
=A
IL
	
0"00"0&0202

BKH
,
7
CP
	
N 6 68 8 "JFFr;   r"   N).
__future__r   typingr   r   r   r   narwhals._compliant.exprr   narwhals._compliant.typingr	   r
   r   narwhals._compliant.windowr   narwhals._expression_parsingr   r   narwhals._sql.typingr   narwhals._utilsr   r   r   r   r   narwhals.exceptionsr   collections.abcr   r   typing_extensionsr   r   r   narwhals._sql.expr_dtr   narwhals._sql.expr_strr   narwhals._sql.namespacer   narwhals.typingr   r   r    r"   r1   r;   r8   <module>r     sr    " 8 8 - I I 3 /  62&E?=4KK\h}k12H]K=W4X \r;   