
    h$                       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  S SKrS SK	J
r
  S SK	Jr  S S	K	Jr  \(       a  S S
KJr  S SKJr  S SKJr  S SKJr  \R*                  r \R.                  r \R2                  r  " S S5      rSS.SS jjr      SS jrSS jr\" SS9SS j5       rS S jr S!S jr!S"S jr"S#S jr#g)$    )annotations)	lru_cache)TYPE_CHECKING)Any)SequenceN)Version)import_dtypes_module)isinstance_or_issubclass)DuckDBPyType)DuckDBLazyFrame)
DuckDBExpr)DTypec                  2    \ rS rSrSr        SS jrSrg)WindowInputs    )exprorder_bypartition_byc                (    Xl         X l        X0l        g N)r   r   r   )selfr   r   r   s       H/var/www/html/env/lib/python3.13/site-packages/narwhals/_duckdb/utils.py__init__WindowInputs.__init__#   s     	(     N)r   duckdb.Expressionr   Sequence[str]r   r   returnNone)__name__
__module____qualname____firstlineno__	__slots__r   __static_attributes__ r   r   r   r       s2    4I!! $!  	!
 
!r   r    )	separatorc                    U (       a!  [         R                  " S[        U 5      /UQ76 $ [         R                  " S/UQ76 $ )a  Concatenate many strings, NULL inputs are skipped.

Wraps [concat] and [concat_ws] `FunctionExpression`(s).

Arguments:
    exprs: Native columns.
    separator: String that will be used to separate the values of each column.

Returns:
    A new native expression.

[concat]: https://duckdb.org/docs/stable/sql/functions/char.html#concatstring-
[concat_ws]: https://duckdb.org/docs/stable/sql/functions/char.html#concat_wsseparator-string-
	concat_wsconcat)duckdbFunctionExpressionlit)r(   exprss     r   
concat_strr0   .   sA    "  	!!+s9~FF &&x8%8r   c               :   / nU H  nUR                  U 5      nUR                  U 5      nUR                  b  UR                  U5      n[        U5      [        U5      :w  a  SU S[        U5       S3n[	        U5      eUR                  [        XT5      5        M     U$ )Nz!Internal error: got output names z, but only got z results)_call_evaluate_output_names_alias_output_nameslenAssertionErrorextendzip)dfr/   native_resultsr   native_series_listoutput_namesmsgs          r   evaluate_exprsr>   D   s     ;=N!ZZ^2226##/33LAL|$6 775l^?SVWiSjRkkstC %%c,CD  r   c                   U R                   n[        U5      nUS:X  a#  UR                  [        U R                  US95      $ US:X  aJ  U R
                  nUR                  U Vs/ s H!  nUR                  US   [        US   US9S9PM#     sn5      $ US:X  a  U R
                  u  pVUS   /nUS   R                   S:X  a;  US   R
                  u  pVUR                  SUS   5        US   R                   S:X  a  M;  [        US   US9nUR                  U[        U5      S9$ US	:X  a!  U R
                  S   S   n	UR                  U	S
9$ [        X!5      $ s  snf )Nlist)versionstructr      )namedtypearray)innershapeenum)
categories)idr	   Listnative_to_narwhals_dtypechildchildrenStructFieldinsertArraytupleEnum$_non_nested_native_to_narwhals_dtype)
duckdb_dtyperA   duckdb_dtype_iddtypesrO   rN   sizerH   rG   rJ   s
             r   rM   rM   T   ss   "ooO!'*F & {{3L4F4FPWXYY("((}} &
 &E	 q258WM   &
 	
 '!"++ G9AhkkW$(++KELLDG$ AhkkW$ )q7C||%uU||<<& !**1-a0
{{j{11/II1s   "(E   )maxsizec                   [        U5      n0 SUR                  5       _SUR                  5       _SUR                  5       _SUR	                  5       _SUR                  5       _SUR                  5       _SUR                  5       _SUR                  5       _S	UR                  5       _S
UR                  5       _SUR                  5       _SUR                  5       _SUR                  5       _SUR                  5       _SUR                  5       _SUR                  SS9_SUR!                  5       _UR#                  5       UR%                  5       UR'                  5       UR)                  5       S.ER+                  XR-                  5       5      $ )Nhugeintbigintintegersmallinttinyintuhugeintubigintuinteger	usmallintutinyintdoublefloatvarchardate	timestampztimestamp with time zoneUTC)	time_zoneboolean)intervaldecimaltimeblob)r	   Int128Int64Int32Int16Int8UInt128UInt64UInt32UInt16UInt8Float64Float32StringDateDatetimeBooleanDurationDecimalTimeBinarygetUnknown)rX   rA   rY   s      r   rV   rV   z   s   !'*F6==?&,,. 	6<<> 	FLLN	
 	6;;= 	FNN$ 	6==? 	FMMO 	V]]_ 	FLLN 	&.." 	! 	6==? 	 	V__&$ 	#FOOeO$D%& 	6>>#'( OO%>>#/0 
c/>>+,1-r   c                "  ^ [        T5      n[        XR                  5      (       a  Sn[        U5      e[        XR                  5      (       a  g[        XR
                  5      (       a  g[        XR                  5      (       a  g[        XR                  5      (       a  g[        XR                  5      (       a  g[        XR                  5      (       a  g[        XR                  5      (       a  g[        XR                  5      (       a  g	[        XR                  5      (       a  g
[        XR                  5      (       a  g[        XR                  5      (       a  g[        XR                  5      (       a  g[        XR                   5      (       a  g[        XR"                  5      (       a  g[        XR$                  5      (       a  g[        XR&                  5      (       a  g[        XR(                  5      (       a  Sn[        U5      e[        XR*                  5      (       an  T[,        R.                  L a  Sn[        U5      e[1        XR*                  5      (       a'  SSR3                  U R4                  5      -   S-   nSU S3$ Sn[7        U5      e[        XR8                  5      (       a%  U R:                  nU R<                  nSn[        U5      e[        XR>                  5      (       a  U R:                  nSn[        U5      e[        XR@                  5      (       a  g[        XRB                  5      (       a  [E        U RF                  T5      nU S3$ [        XRH                  5      (       a+  SR3                  U4S jU RJ                   5       5      nSU S3$ [        XRL                  5      (       aM  U RN                  nSR3                  S  U 5       5      n	U n
U H  nU
RF                  n
M     [E        U
T5      nU U	 3$ S!U  3n[Q        U5      e)"Nz(Casting to Decimal is not supported yet.DOUBLEFLOATINT128BIGINTINTEGERSMALLINTTINYINTUINT128UBIGINTUINTEGER	USMALLINTUTINYINTVARCHARBOOLEANTIMEBLOBz#Categorical not supported by DuckDBz9Converting to Enum is not supported in narwhals.stable.v1'z', 'zENUM ()z9Can not cast / initialize Enum without categories presenttodoDATEz[], c              3  p   >#    U  H+  nS UR                    S[        UR                  T5       3v   M-     g7f)"z" N)rD   narwhals_to_native_dtyperE   ).0fieldrA   s     r   	<genexpr>+narwhals_to_native_dtype.<locals>.<genexpr>   s6      
% 

|26u{{GLMN%s   36zSTRUCT(r'   c              3  .   #    U  H  nS U S3v   M     g7f)[]Nr&   )r   items     r   r   r      s     "A54QtfA;5s   zUnknown dtype: ))r	   r
   r   NotImplementedErrorr~   r   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r   r   r   r   CategoricalrU   r   V1
isinstancejoinrJ   
ValueErrorr   	time_unitrn   r   r   rL   r   rG   rP   fieldsrS   rH   r6   )rE   rA   rY   r=   rJ   
_time_unit
_time_zonerG   rH   duckdb_shape_fmtinner_dtype_duckdb_inners    `           r   r   r      s3   !'*F~~668!#&&~~66~~66}}55||44||44||44{{33~~66}}55}}55}}55||44}}55~~66{{33}}55'9'9::3!#&&{{33gjj MC%c**e[[))v{{5+;+;<<sBJJ<q))Io77__
__
!#&&77__
!#&&{{33{{33(g>|}}55		 

 
 q!!||4477"A5"AA A%++K /WE 0122E7
#C

r   c                 ~    U (       d  gSR                  U  Vs/ s H  n[        U5       PM     sn5      nSU 3$ s  snf )Nr'   r   zpartition by r   col)r   xby_sqls      r   generate_partition_by_sqlr      s?    YY\:\3q6(\:;F6(## ;s   :c                    U (       a/  SR                  U Vs/ s H  n[        U5       S3PM     sn5      nO.SR                  U Vs/ s H  n[        U5       S3PM     sn5      nSU 3$ s  snf s  snf )Nr   z asc nulls firstz desc nulls lastz	order by r   )	ascendingr   r   r   s       r   generate_order_by_sqlr      sm    JAs1vh&67JKJAs1vh&67JKvh KJs   A*A/c                    [        X5      (       d@  SR                  S U 5       5      nSU< S[        U 5      R                  < 3n[	        U5      eg )Nz | c              3  8   #    U  H  oR                   v   M     g 7fr   )r    )r   tps     r   r   ensure_type.<locals>.<genexpr>   s     @KbkkKs   z	Expected z, got: )r   r   typer    	TypeError)objvalid_typestp_namesr=   s       r   ensure_typer      sO     c''::@K@@(WT#Y-?-?,BCn (r   )r/   r   r(   strr   r   )r9   r   r/   r   r   z#list[tuple[str, duckdb.Expression]])rW   r   rA   r   r   r   )rX   r   rA   r   r   r   )rE   zDType | type[DType]rA   r   r   r   )r   r   r   r   )r   r   r   boolr   r   )r   r   r   z	type[Any]r   r   )$
__future__r   	functoolsr   typingr   r   r   r,   narwhals.utilsr   r	   r
   duckdb.typingr   narwhals._duckdb.dataframer   narwhals._duckdb.exprr   narwhals.dtypesr   ColumnExpressionr   ConstantExpressionr.   CaseExpressionwhenr   r0   r>   rM   rV   r   r   r   r   r&   r   r   <module>r      s    "       " / 3*:0%  * , (! ! <> ,$.( #JL 2- -:Od$ r   