
    Lpjj1                       S SK Jr  S SKrS SKJrJr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  S S	KJrJrJrJrJrJrJrJrJr  S S
KJr  S SKJrJ r J!r!J"r"  \(       aT  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.J/r/  S SK0J1r1  S SK2J3r3  S SK4J5r5  S SKJ6r6  S SK7J8r8J9r9J:r:  \/\1\&4   r;\*\&   r< " S S\S   5      r=g)    )annotationsN)TYPE_CHECKINGAnycast)CoalesceOperatorStarExpressionDuckDBExprDateTimeNamespaceDuckDBExprListNamespaceDuckDBExprStringNamespaceDuckDBExprStructNamespace)	DeferredTimeZoneFcolgenerate_order_by_sqllitnarwhals_to_native_dtypesql_expressionwhenwindow_expression)SQLExpr)
NO_DEFAULTImplementationVersionextend_bool)CallableSequence)
Expression)Self)WindowInputs)
AliasNames	EvalNames
EvalSeriesWindowFunction)DuckDBLazyFrameDuckDBNamespace)	NoDefault)_LimitedContext)FillNullStrategy	IntoDTypeRollingInterpolationMethodc                  P   \ rS rSr\R
                  r S#\R
                  S.             S$S jjjrS%S jr    S&SSS.               S'S jjjr	        S(S jr
S)S	 jrS)S
 jrS*S jrS+S jrS,S jr\      S-S j5       r\S.S j5       r\S/S j5       rS,S jrS,S jrS,S jrS,S jr      S0S jrS,S jrS,S jrS,S jrS,S jrS1S jr        S2S jrS3S jr          S4S jr \!S5S j5       r"\!S6S j5       r#\!S7S  j5       r$\!S8S! j5       r%S"r&g)9
DuckDBExpr1   N)implementationc               @    Xl         X0l        X@l        XPl        X l        g N)_call_evaluate_output_names_alias_output_names_version_window_function)selfcallwindow_functionevaluate_output_namesalias_output_namesversionr3   s          Q/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_duckdb/expr.py__init__DuckDBExpr.__init__4   s      
&;##5 =L    c                *    [        S[        5       5      $ Ncount)r   r   r;   s    rA   _count_starDuckDBExpr._count_starD   s    .*++rD   
descending
nulls_lastc          
          [        UUUUUUUS9$ )NrK   )r   )r;   exprpartition_byorder_by
rows_startrows_endrL   rM   s           rA   _window_expressionDuckDBExpr._window_expressionG   s&     !!!
 	
rD   c               j    [        S[        U5      5      n[        X4US.6n[        U SU SU S35      $ )NFrK   ( ))r   lenr   r   )r;   functionrO   rQ   flagsorder_by_sqls         rA   _first_lastDuckDBExpr._first_last\   sC     E3x=1,E
 
!D6<.BCCrD   c                &    U R                  SX5      $ )Nfirstr^   r;   rO   rQ   s      rA   _firstDuckDBExpr._firstf   s    88rD   c                &    U R                  SX5      $ )Nlastrb   rc   s      rA   _lastDuckDBExpr._lasti   s    77rD   c               X    U(       a  U R                  SU5      $ U R                  SU5      $ )N	any_valuera   )	_function)r;   rO   ignore_nullss      rA   
_any_valueDuckDBExpr._any_valuel   s1    
  NN;-	
 .	
rD   c                .    SSK Jn  U" U R                  S9$ )Nr   r)   )r@   )narwhals._duckdb.namespacer*   r9   )r;   r*   s     rA   __narwhals_namespace__!DuckDBExpr.__narwhals_namespace__u   s    >t}}55rD   c                :    U R                  [        S5      // 5      $ )N   )overr   rH   s    rA   	broadcastDuckDBExpr.broadcastz   s    yy#a&2&&rD   c              :   ^ SU4S jjnU " UTS UR                   S9$ )Nc                R   > T" U 5       Vs/ s H  n[        U5      PM     sn$ s  snf r5   )r   )dfnameevaluate_column_namess     rA   func*DuckDBExpr.from_column_names.<locals>.func   s&    *?*CD*C$CI*CDDDs   $r>   r?   r@   r{   r(   returnlist[Expression])r9   )clsr}   contextr~   s    `  rA   from_column_namesDuckDBExpr.from_column_names}   s*    	E "7#$$	
 	
rD   c               X   ^ SU4S jjnU " UU R                  T5      S UR                  S9$ )Nc                b   > U R                   nT Vs/ s H  n[        X   5      PM     sn$ s  snf r5   )columnsr   )r{   r   icolumn_indicess      rA   r~   ,DuckDBExpr.from_column_indices.<locals>.func   s*    jjG-;<^C
O^<<<s   ,r   r   )_eval_names_indicesr9   )r   r   r   r~   s     ` rA   from_column_indicesDuckDBExpr.from_column_indices   s4    	= "%"9"9."I#$$	
 	
rD   c                $    UR                  U5      $ r5   )alias)r   rO   r|   s      rA   _alias_nativeDuckDBExpr._alias_native   s    zz$rD   c                X    [        S[        R                  5      nU R                  U5      $ NzCallable[..., Expression])r   operatorinvert_with_elementwise)r;   r   s     rA   
__invert__DuckDBExpr.__invert__   s$    18??C%%f--rD   c                X    [        S[        R                  5      nU R                  U5      $ r   )r   r   negr   )r;   r   s     rA   __neg__DuckDBExpr.__neg__   s$    .=%%c**rD   c                \   ^ ^ T R                   mSS jnSUU 4S jjnT R                  X5      $ )Nc           
        [        SU 5      n[        SU 5      U[        S5      -
  -  [        SX[        S5      -
  -  5      -  n[        U[        S5      :H  [        S 5      5      R                  [        U[        S5      :H  [        [	        S5      5      5      R                  [        U[        S5      :H  [        S5      5      R                  U5      5      5      $ 	NrG   skewness   sqrtru   r   nang        )r   r   r   	otherwisefloat)rO   rG   sample_skewnesss      rA   r~   DuckDBExpr.skew.<locals>.func   s    gt$E *d#3q6>#FESV^456 
 QT3==Uc!f_c%,&78BB#a&#c(3==oN rD   c                >  > / nT" U 5       GH  nT" [        SU5      UR                  5      nT" [        SU5      UR                  5      U[        S5      -
  -  [        SXD[        S5      -
  -  5      -  nUR                  [	        U[        S5      :H  [        S 5      5      R                  [	        U[        S5      :H  [        [        S5      5      5      R                  [	        U[        S5      :H  [        S5      5      R                  U5      5      5      5        GM     U$ r   )r   rP   r   appendr   r   r   )r{   inputsretrO   rG   r   Wr;   s         rA   window_f!DuckDBExpr.skew.<locals>.window_f   s    CR!GT*F,?,?@ a
D)6+>+>?s1v~'Q 89:  
 

#a&#d)4>>Uc!f_c%,.?@JJ #a&#c(;EEoV ! JrD   rO   r!   r   r!   r{   r(   r   DuckDBWindowInputsr   r   )rT   _with_callable)r;   r~   r   r   s   `  @rA   skewDuckDBExpr.skew   s0    ##		 	& ""422rD   c                &    U R                  S 5      $ )Nc                    [        SU 5      $ )Nkurtosis_popr   rO   s    rA   <lambda>%DuckDBExpr.kurtosis.<locals>.<lambda>   s    .$0GrD   r   rH   s    rA   kurtosisDuckDBExpr.kurtosis   s    ""#GHHrD   c                :   ^^ SUU4S jjnU R                  U5      $ )Nc                V   > TS:X  a  [        SU [        T5      5      $ Sn[        U5      e)Nlinearquantile_contzDOnly linear interpolation methods are supported for DuckDB quantile.)r   r   NotImplementedError)rO   msginterpolationquantiles     rA   r~   !DuckDBExpr.quantile.<locals>.func   s.    ($H>>XC%c**rD   r   r   )r;   r   r   r~   s    `` rA   r   DuckDBExpr.quantile   s     	+ 	+ ""4((rD   c                &    U R                  S 5      $ )Nc                    [        S5      $ rF   r   )_exprs    rA   r    DuckDBExpr.len.<locals>.<lambda>   s    7rD   r   rH   s    rA   rZ   DuckDBExpr.len   s    ""#;<<rD   c                &    U R                  S 5      $ )Nc                T    [        SU R                  5       R                  S5      5      $ )Nsumint)r   isnullr   r   s    rA   r   'DuckDBExpr.null_count.<locals>.<lambda>   s    %9K9KE9R0SrD   r   rH   s    rA   
null_countDuckDBExpr.null_count   s    ""#STTrD   c                &    U R                  S 5      $ )Nc                    [        SU 5      $ )Nisnanr   r   s    rA   r   #DuckDBExpr.is_nan.<locals>.<lambda>   s    1Wd3CrD   r   rH   s    rA   is_nanDuckDBExpr.is_nan   s    %%&CDDrD   c                &    U R                  S 5      $ )Nc                    [        SU 5      $ )Nisfiniter   r   s    rA   r   &DuckDBExpr.is_finite.<locals>.<lambda>   s    1Z3FrD   r   rH   s    rA   	is_finiteDuckDBExpr.is_finite   s    %%&FGGrD   c                .   ^ U R                  U4S j5      $ )Nc                B   > [        S[        [        T5      5      U 5      $ )Ncontains)r   r   list)rO   others    rA   r   "DuckDBExpr.is_in.<locals>.<lambda>   s    1ZT%[AQSW3XrD   r   )r;   r   s    `rA   is_inDuckDBExpr.is_in   s    %%&XYYrD   c                   ^ ^^ TbB  T R                   S:  a  ST S3n[        U5      e      SUU U4S jjnT R                  U5      $ S	S jnUc   eT R                  USU0S9$ )
N)ru      z`fill_null` with `strategy=z'` is only available in 'duckdb>=1.3.0'.c                   > TS:X  a  SOSnTS:X  a
  Tb  T* OS S4OST4u  p4T" U 5       Vs/ s H.  n[        [        X%5      UR                  UR                  UUSS9PM0     sn$ s  snf )Nforward
last_valuefirst_valuer   T)rR   rS   rm   )r   r   rP   rQ   )	r{   r   	fill_funcrR   rS   rO   limitr;   strategys	         rA   _fill_with_strategy1DuckDBExpr.fill_null.<locals>._fill_with_strategy   s     -5	,AL}	  9,  %0eVdA>U %
 !%R
 !) &)*++#-!)%) !)
 
 
s   5A$valuec                    [        X5      $ r5   )r   )rO   r   s     rA   _fill_constant,DuckDBExpr.fill_null.<locals>._fill_constant
  s    #D00rD   )expression_args)r{   r(   r   r   r   zSequence[Expression])rO   r!   r   r   r   r!   )_backend_versionr   _with_window_functionr   )r;   r   r   r   r   r   r   s   ` ``   rA   	fill_nullDuckDBExpr.fill_null   s     $$v-3H:=de)#..#-?% * --.ABB	1    %%nwPUFV%WWrD   c                   ^ ^ SUU 4S jjnSUU 4S jjnT R                  UUT R                  T R                  T R                  S9$ )Nc                   > [        U R                  5      n[        TTR                  U5      nT" U 5       Vs/ s H  o3R	                  U5      PM     sn$ s  snf r5   )r   nativer   r9   r   )r{   tznative_dtyperO   dtyper;   s       rA   r~   DuckDBExpr.cast.<locals>.func  sF    !")),B3E4=="ML8<RAIIl+AAAs   Ac                   > [        U R                  5      n[        TTR                  U5      nTR	                  X5       Vs/ s H  oDR                  U5      PM     sn$ s  snf r5   )r   r  r   r9   r=   r   )r{   r   r  r  rO   r  r;   s        rA   r   !DuckDBExpr.cast.<locals>.window_f  sO    !")),B3E4=="ML8<8L8LR8XY8XIIl+8XYYYs   Ar   r   r   )	__class__r7   r8   r9   )r;   r  r~   r   s   ``  rA   r   DuckDBExpr.cast  sR    	B 	B
	Z 	Z
 ~~"&"="=#77MM  
 	
rD   c                 ^ ^^^^	 T[         L a  Sn[        U5      e[        [        U5      5      [        [        U5      5      sm	n[	        ST	U5      mSUUU	UU 4S jjnT R                  US T R                  T R                  T R                  S9$ )NzM`replace_strict` requires an explicit value for `default` for duckdb backend.mapc                  > U R                  T5      nT" U 5       Vs/ s HH  n[        [        ST	U5      [        S[        STU5      [        S5      5      5      R	                  U5      PMJ     nnT
(       aM  [        U R                  5      n[        T
TR                  U5      nU Vs/ s H  ofR                  U5      PM     sn$ U$ s  snf s  snf )Nr   list_extractmap_extractru   )
_evaluate_single_output_exprr   r   r   r   r   r  r   r9   r   )r{   default_colrO   resultsr  r  resdefaultmapping_exprold_return_dtyper;   s          rA   r~   'DuckDBExpr.replace_strict.<locals>.func2  s    99'BK !H %D j$- na|T&JCPQFS	
 )K() %   %bii07dmmUWX:AB'3.'BBN Cs   AC%C	r   r   )	r   
ValueErrorr   r   r   r  r7   r8   r9   )
r;   r  oldnewr  r   new_r~   r  r  s
   ``  `   @@rA   replace_strictDuckDBExpr.replace_strict#  s     j aCS/!c^Sc^
dd+	 	& ~~"&"="=#77MM  
 	
rD   c                    [        U 5      $ r5   r   rH   s    rA   strDuckDBExpr.strM      (..rD   c                    [        U 5      $ r5   r	   rH   s    rA   dtDuckDBExpr.dtQ  s    *400rD   c                    [        U 5      $ r5   r   rH   s    rA   r   DuckDBExpr.listU  s    &t,,rD   c                    [        U 5      $ r5   r   rH   s    rA   structDuckDBExpr.structY  r$  rD   )r8   r6   r7   r9   r:   r5   )r<   z'EvalSeries[DuckDBLazyFrame, Expression]r=   zDuckDBWindowFunction | Noner>   EvalNames[DuckDBLazyFrame]r?   zAliasNames | Noner@   r   r3   r   r   None)r   r!   ) r/  NN)rO   r!   rP   Sequence[str | Expression]rQ   r0  rR   
int | NonerS   r1  rL   Sequence[bool] | NonerM   r2  r   r!   )r[   r"  rO   r!   rQ   zSequence[str]r   r!   )rO   r!   rQ   r"  r   r!   )rO   r!   rm   boolr   r!   )r   r*   )r   r"   )r}   r-  r   r,   r   r"   )r   r   r   r,   r   r"   )rO   r!   r|   r"  r   r!   )r   r   r   r/   r   r"   )r   Sequence[Any]r   r"   )r   zSelf | Noner   zFillNullStrategy | Noner   r1  r   r"   )r  r.   r   r"   )
r  zDuckDBExpr | NoDefaultr  r4  r  r4  r  zIntoDType | Noner   r"   )r   r   )r   r
   )r   r   )r   r   )'__name__
__module____qualname____firstlineno__r   DUCKDB_implementationrB   rI   rT   r^   rd   rh   rn   rr   rw   classmethodr   r   r   r   r   r   r   r   rZ   r   r   r   r   r   r   r  propertyr"  r&  r   r+  __static_attributes__r/  rD   rA   r1   r1   1   s   $++O
 8<M *8)>)>M5M 5M
  :M .M M 'M 
M , 46/1!%#
 -1,0

 1
 -	

 
 
 *
 *
 

*DD#-D9FD	D98
6
' 
9

 !
 

 
" 

 

    .+$3LI	)	).H	)		)=UEHZ#X #X,C#XLV#X	#XJ
&(
'(
 (
 	(
 '(
 
(
T / / 1 1 - - / /rD   r1   )r(   r!   )>
__future__r   r   typingr   r   r   duckdbr   r   narwhals._duckdb.expr_dtr
   narwhals._duckdb.expr_listr   narwhals._duckdb.expr_strr   narwhals._duckdb.expr_structr   narwhals._duckdb.utilsr   r   r   r   r   r   r   r   r   narwhals._sql.exprr   narwhals._utilsr   r   r   r   collections.abcr   r    r!   typing_extensionsr"   narwhals._compliantr#   narwhals._compliant.typingr$   r%   r&   r'   narwhals._duckdb.dataframer(   rq   r*   narwhals._typingr+   r,   narwhals.typingr-   r.   r/   DuckDBWindowFunctionr   r1   r/  rD   rA   <module>rP     s    "  + + 3 @ > ? B
 
 
 ' L L2!&0  ;:*/WW)/:*EF%j1j/89 j/rD   