
    Lpj(              	      ~   S SK Jr  S SKrS SKJr  S SKJr  S SKJrJ	r	  S SK
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JrJrJrJrJrJrJr  S SKJrJ r J!r!  S SK"J#r#  S SK$J%r%J&r&J'r'  \(       a*  S SK(J)r)J*r*J+r+  S SK
J,r,  S SK-J.r.  S SK$J/r/  S SK0J1r1J2r2J3r3J4r4J5r5  \Rl                  r6 " S S\#\\S\4   5      r7g)    )annotationsN)reduce)chain)TYPE_CHECKINGAny)CoalesceOperator
ExpressionDuckDBLazyFrame
DuckDBExpr)DuckDBSelectorNamespace)
DeferredTimeZoneF
concat_strduckdb_dtypesfunctionlitnarwhals_to_native_dtypesql_expressionwhenwindow_expression)combine_alias_output_namescombine_evaluate_output_names!evaluate_output_names_and_aliases)SQLNamespace)Implementationrequiresvalidate_separators)CallableIterableMapping)DuckDBPyRelation)WindowInputs)Version)ConcatMethodCorrelationMethod	IntoDTypeNormalizedPathPythonLiteralc                     \ rS rSr% \R
                  rS\S'   SS jr\	SS j5       r
\	SS j5       r\	SS j5       rSS	.       S S
 jjrS!S jrS"S jrS#S jr S$       S%S 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rS-S jr\R6                  " S5      S)S j5       rS)S jrSrg).DuckDBNamespace4   r   _implementationc                   Xl         g N_version)selfversions     V/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_duckdb/namespace.py__init__DuckDBNamespace.__init__9   s        c                .    [         R                  " U 5      $ r0   )r   from_namespacer3   s    r5   	selectorsDuckDBNamespace.selectors<   s    &55d;;r8   c                    [         $ r0   r   r;   s    r5   _exprDuckDBNamespace._expr@   s    r8   c                    [         $ r0   r
   r;   s    r5   
_lazyframeDuckDBNamespace._lazyframeD   s    r8   ,)	separatorc                   [        USU5        [        R                  " U4SU0UD6nU R                  R	                  X@S9$ )N)	delimiterdelimseprG   context)r   duckdbread_csvrB   from_native)r3   sourcerE   kwdsnatives        r5   scan_csvDuckDBNamespace.scan_csvH   sA     	I'DdKE9EE**6*@@r8   c                b    [         R                  " U40 UD6nU R                  R                  X0S9$ )NrJ   )rL   read_parquetrB   rN   )r3   rO   rP   rQ   s       r5   scan_parquetDuckDBNamespace.scan_parquetO   s/    $$V4t4**6*@@r8   c                    [        U/UQ76 $ r0   )r   )r3   nameargss      r5   	_functionDuckDBNamespace._functionS   s    $t$$r8   c                    [        U5      $ r0   )r   )r3   values     r5   _litDuckDBNamespace._litV   s    5zr8   Nc                R    Uc  [        X5      $ [        X5      R                  U5      $ r0   )r   	otherwise)r3   	conditionr^   rb   s       r5   _whenDuckDBNamespace._whenY   s+     	))I%//	::r8   c                    [        U6 $ r0   )r   )r3   exprss     r5   	_coalesceDuckDBNamespace._coalescec   s    ''r8   c                 ^	 [        U5      nU Vs/ s H  o3R                  PM     nnUS   nUR                  m	US:X  a*  [        U	4S jUSS   5       5      (       d  Sn[	        U5      eUS:X  a?  UR
                  nUSS   H  n[        R                  " S5      nM     UR                  U5      $ [        S U5      nUR                  U5      $ s  snf )	Nr   verticalc              3  @   >#    U  H  oR                   T:H  v   M     g 7fr0   )schema).0xrm   s     r5   	<genexpr>)DuckDBNamespace.concat.<locals>.<genexpr>m   s     (OYV);Ys      z&inputs should all have the same schemadiagonalz]
                    from res select * union all by name from _item select *
                c                $    U R                  U5      $ r0   )union)ro   ys     r5   <lambda>(DuckDBNamespace.concat.<locals>.<lambda>x   s    !''!*r8   )
list_native_framerm   all	TypeErrorrQ   rL   sql_with_nativer   )
r3   itemshowitemnative_itemsfirstmsgres_itemrm   s
            @r5   concatDuckDBNamespace.concatf   s     U7<=ut**u=a*S(OU12Y(O%O%O:CC. *,,C%ab)jj "  *
 %%c**,l;!!#&& >s   Cc               l   ^^^ SUUU4S jjnU R                  U[        T6 [        T6 U R                  S9$ )Nc                  >^  [         R                  " U 4S jT 5       5      nT(       a  [        UST06/$ [        U5      n[	        [
        R                  S U 5       5      nS U 5       n[        U) [        UST065      /$ )Nc              3  2   >#    U  H  o" T5      v   M     g 7fr0    )rn   edfs     r5   rp   ;DuckDBNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s     <REqQrUUEs   rE   c              3  @   #    U  H  oR                  5       v   M     g 7fr0   )isnull)rn   ss     r5   rp   r      s     -G$Qhhjj$s   c              3  J   #    U  H  oR                  [        5      v   M     g 7fr0   )castVARCHAR)rn   cs     r5   rp   r      s     6Aws   !#)r   from_iterabler   tupler   operatoror_r   )r   cols	null_maskcols_strrg   ignore_nullsrE   s   `   r5   func(DuckDBNamespace.concat_str.<locals>.func~   st    ).)<)<<RE<R)RD"D>I>??;Dx||-G$-GHI66H)Z%OY%OPQQr8   callevaluate_output_namesalias_output_namesr4   r   r   returnlist[Expression]r?   r   r   r2   )r3   rE   r   rg   r   s    ``` r5   r   DuckDBNamespace.concat_str{   sA    	R 	R zz"?"G95AMM	  
 	
r8   c                F    SS jnU R                   R                  " U/UQ76 $ )Nc                    [        U 5      n [        [        R                  S U  5       5      n[        [        R                  S U  5       5      nX-  $ )Nc              3  L   #    U  H  n[        U[        S 5      5      v   M     g7f)r   N)r   r   rn   cols     r5   rp   @DuckDBNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s!     )XSWC*:3A*G*GSWs   "$c              3  z   #    U  H1  oR                  5       R                  [        R                  5      v   M3     g 7fr0   )	isnotnullr   r   BIGINTr   s     r5   rp   r      s*     ZUYc}}33M4H4HIIUYs   9;)r   r   r   add)r   totalcounts      r5   r   -DuckDBNamespace.mean_horizontal.<locals>.func   sF    ;D8<<)XSW)XYEZUYZE = r8   )r   zIterable[Expression]r   r	   )r?   _from_elementwise_horizontal_op)r3   rg   r   s      r5   mean_horizontalDuckDBNamespace.mean_horizontal   s#    	! zz99$GGGr8   c                v   ^ ^^^ SUU U4S jjm      SU4S jjnT R                  TUS S T R                  S9$ )Nc                  > [        T[        5      (       a  T(       d  Sn[        U5      e[        U R                  5      nTb2  [        TTR                  U5      n[        T5      R                  U5      /$ [        T5      /$ )Nz5Cannot create an empty struct type for DuckDB backend)	
isinstancedictNotImplementedErrorr   rQ   r   r2   r   r   )r   r   tztargetdtyper3   r^   s       r5   r   !DuckDBNamespace.lit.<locals>.func   sj    %&&uM)#..!")),B 1%KE
/00J<r8   c                   > T" U 5      $ r0   r   )r   _window_inputsr   s     r5   window_func(DuckDBNamespace.lit.<locals>.window_func   s     8Or8   c                    S/$ )Nliteralr   _dfs    r5   rw   %DuckDBNamespace.lit.<locals>.<lambda>   s    ykr8   )r   r   r4   r   )r   r   r   WindowInputs[Expression]r   r   r?   r2   )r3   r^   r   r   r   s   ``` @r5   r   DuckDBNamespace.lit   sU    		  		 		1I		
 zz"9#MM  
 	
r8   c                F    SS jnU R                  US S U R                  S9$ )Nc                    [        S5      /$ )Nr   r   r   s    r5   r   !DuckDBNamespace.len.<locals>.func   s    gJ<r8   c                    S/$ )Nlenr   r   s    r5   rw   %DuckDBNamespace.len.<locals>.<lambda>   s    ugr8   r   )r   r   r   r   r   )r3   r   s     r5   r   DuckDBNamespace.len   s/    	  zz"5#MM	  
 	
r8   c                  ^^ US:w  a  Sn[        U5      eSUU4S jjnU R                  U[        TT5      [        TT5      U R                  S9$ )Npearsonz3Only 'pearson' correlation is supported for DuckDB.c                b   > U R                  T5      nU R                  T5      n[        SX5      /$ )Ncorr)_evaluate_single_output_exprr   )r   a_b_abs      r5   r   "DuckDBNamespace.corr.<locals>.func   s3    003B003Bfb%&&r8   r   r   )r   r?   r   r   r2   )r3   r   r   methodr   r   s    ``   r5   r   DuckDBNamespace.corr   s]     YGC%c**	' 	'
 zz"?1"E9!Q?MM	  
 	
r8   c          	        ^^^^         SU4S jjmSUUU4S jjn      SUUU4S jjnU R                  UU[        TT5      [        TT5      U R                  S9$ )Nc                  > TS:X  a  U" [        SX5      5      /$ TS:X  a  U" [        SX5      5      /$ U R                  5       UR                  5       -  R                  [        R                  5      nU" [        SU5      5      nU[        T5      -
  nU" [        SX5      5      U[        S5      -
  U-  -  n[        U[        S5      :*  [        S 5      5      R                  U5      /$ )Nr   	covar_poprr   
covar_sampsum)r   r   r   r   r   r   r   rb   )r   r   wrapis_valid	n_samplesdenominatorrescaledddofs          r5   _cov!DuckDBNamespace.cov.<locals>._cov   s     qyQ{B3455qyQ|R45667==m>R>RSHQuh/0I#c$i/KAlB34SV#{2H A.D	:DDXNOOr8   c                \   > U R                  T5      nU R                  T5      nT" XS 5      $ )Nc                    U $ r0   r   )r   s    r5   rw   3DuckDBNamespace.cov.<locals>.func.<locals>.<lambda>   s    !r8   r   )r   r   r   r   r   r   s      r5   r   !DuckDBNamespace.cov.<locals>.func   s0    003B003B,,r8   c                d   >^ U R                  T5      nU R                  T5      nT" X#U4S j5      $ )Nc                0   > [        U TR                  5      $ r0   )r   partition_by)r   inputss    r5   rw   7DuckDBNamespace.cov.<locals>.window_f.<locals>.<lambda>   s    *;Av?R?R*Sr8   r   )r   r   r   r   r   r   r   s    `  r5   window_f%DuckDBNamespace.cov.<locals>.window_f   s3     003B003B STTr8   )r   window_functionr   r   r4   )r   r	   r   r	   r   z"Callable[[Expression], Expression]r   r   r   )r   r   r   r   r   r   r   )r3   r   r   r   r   r   r   s    ```  @r5   covDuckDBNamespace.cov   s    	P	P *	P2T	P	P$	- 	-
	U	U)A	U	U 	U zz$"?1"E9!Q?MM  
 	
r8   )rr      c                h   ^ U R                   nSU4S jjnU R                  U[        T6 [        T6 US9$ )Nc                  > T VVVVs0 s H/  n[        U" U 5      /[        X/ 5      Q7SS06  H  u  p#nXB_M
     M1     nnnnnSR                  S UR                  5        5       5      n[	        SU S35      /$ s  snnnnf )NstrictTz, c              3  6   #    U  H  u  pS U SU 3v   M     g7f)"z" := Nr   )rn   rY   r   s      r5   rp   7DuckDBNamespace.struct.<locals>.func.<locals>.<genexpr>  s#      #6K!D6se$6Ks   zstruct_pack())zipr   joinr   r   )r   exprnative_expr_aliasnames_to_cols
field_argsrg   s          r5   r   $DuckDBNamespace.struct.<locals>.func   s     "7!D-0H.6tD.  .)KE ". !  7  #6C6I6I6K# J #\*Q#?@AA7s   6A:
r   r   r2   r?   r   r   r3   rg   r4   r   s    `  r5   structDuckDBNamespace.struct   s@    --	B zz"?"G95A	  
 	
r8   c                h   ^ U R                   nSU4S jjnU R                  U[        T6 [        T6 US9$ )Nc                n   > T VVs/ s H  o" U 5        H  o"PM     M     nnn[        S/UQ76 /$ s  snnf )N	list_packr   )r   r	  r
  r   rg   s       r5   r   "DuckDBNamespace.list.<locals>.func  s<    ,1NEDT"XkKXKEDNk)D)** Os   1r   r   r  r  s    `  r5   ry   DuckDBNamespace.list  s?    --	+ zz"?"G95A	  
 	
r8   r1   )r4   r%   r   None)r   r   )r   ztype[DuckDBExpr])r   ztype[DuckDBLazyFrame])rO   r)   rE   strrP   r   r   r   )rO   r)   rP   r   r   r   )rY   r  rZ   r	   r   r	   )r^   r   r   r	   r0   )rc   r	   r^   r	   rb   zExpression | Noner   r	   )rg   r	   r   r	   )r   zIterable[DuckDBLazyFrame]r   r&   r   r   )rg   r   rE   r  r   boolr   r   )rg   r   r   r   )r^   r*   r   zIntoDType | Noner   r   )r   r   )r   r   r   r   r   r'   r   r   )r   r   r   r   r   intr   r   )__name__
__module____qualname____firstlineno__r   DUCKDBr.   __annotations__r6   propertyr<   r?   rB   rR   rV   r[   r_   rd   rh   r   r   r   r   r   r   r   r   backend_versionr  ry   __static_attributes__r   r8   r5   r,   r,   4   sj    '5&;&;O^;  < <     ;>A$A47AGJA	AA% (,	;; ; %	;
 
;('.'8D'	'*
 
-0
@D
	
&	H
2	


 *
7H
	
&%
N f%
 &
2
r8   r,   r#   )8
__future__r   r   	functoolsr   	itertoolsr   typingr   r   rL   r   r	   narwhals._duckdb.dataframer   narwhals._duckdb.exprr   narwhals._duckdb.selectorsr   narwhals._duckdb.utilsr   r   r   r   r   r   r   r   r   r   narwhals._expression_parsingr   r   r   narwhals._sql.namespacer   narwhals._utilsr   r   r   collections.abcr    r!   r"   r#   narwhals._compliant.windowr$   r%   narwhals.typingr&   r'   r(   r)   r*   r   r,   r   r8   r5   <module>r4     s    "    %  / 6 , >   
 1 I I;;'7'  

i
*.@*LMi
r8   