Ë
    z�h€$  ã                  ó`  — d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dl	mZ erd d	lmZ d d
lmZ d dlmZ d dlmZ ej(                  Z	 ej,                  Z	 ej0                  Z	  G d„ d«      Zddœdd„Z	 	 	 	 	 	 dd„Zdd„Z ed¬«      dd„«       Zdd„Zd d„Z d!d„Z!d"d„Z"y)#é    )Úannotations)Ú	lru_cache)ÚTYPE_CHECKING)ÚAny)ÚSequenceN)ÚVersion)Úisinstance_or_issubclass)ÚDuckDBPyType)ÚDuckDBLazyFrame)Ú
DuckDBExpr)ÚDTypec                  ó(   — e Zd ZdZ	 	 	 	 	 	 	 	 dd„Zy)ÚWindowInputs)ÚexprÚorder_byÚpartition_byc                ó.   — || _         || _        || _        y ©N)r   r   r   )Úselfr   r   r   s       úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/narwhals/_duckdb/utils.pyÚ__init__zWindowInputs.__init__"   s   € ð ˆŒ	Ø(ˆÔØ ˆ�ó    N)r   úduckdb.Expressionr   úSequence[str]r   r   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   © r   r   r   r      s2   „ Ø4€Ið!àð!ð $ð!ð  ð	!ð
 
ô!r   r   Ú )Ú	separatorc                ór   — | r t        j                  dt        | «      g|¢­Ž S t        j                  dg|¢­Ž S )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_strr+   -   sA   € ñ" ô 	×!Ñ! +¬s°9«~ÐFÀÒFðô ×&Ñ& xÐ8°%Ò8ðr   c               ó4  — g }|D ]�  }|j                  | «      }|j                  | «      }|j                  �|j                  |«      }t        |«      t        |«      k7  rd|› dt        |«      › d�}t	        |«      ‚|j                  t        ||«      «       Œ’ |S )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_exprsr9   C   s­   € ð ;=€NØò EˆØ!ŸZ™Z¨›^ÐØ×2Ñ2°2Ó6ˆØ×#Ñ#Ð/Ø×3Ñ3°LÓAˆLÜˆ|Ó¤Ð$6Ó 7Ò7Ø5°l°^À?ÔSVÐWiÓSjÐRkÐksÐtˆCÜ  Ó%Ð%Ø×Ñœc ,Ð0BÓCÕDðEð Ðr   c                óÄ  — | j                   }|j                  }|dk(  r&|j                  t        | j                  |¬«      «      S |dk(  rM| j
                  }|j                  |D �cg c]&  }|j                  |d   t        |d   |¬«      ¬«      ‘Œ( c}«      S |dk(  r�| j
                  \  }}|d   g}|d   j                   dk(  r:|d   j
                  \  }}|j                  d|d   «       |d   j                   dk(  rŒ:t        |d   |¬«      }|j                  |t        |«      ¬«      S |d	k(  r$| j
                  d   d   }	|j                  |	¬
«      S t        ||«      S c c}w )NÚlist)ÚversionÚstructr   é   )ÚnameÚdtypeÚarray)ÚinnerÚshapeÚenum)Ú
categories)ÚidÚdtypesÚListÚnative_to_narwhals_dtypeÚchildÚchildrenÚStructÚFieldÚinsertÚArrayÚtupleÚEnumÚ$_non_nested_native_to_narwhals_dtype)
Úduckdb_dtyper<   Úduckdb_dtype_idrG   rK   rJ   ÚsizerC   rB   rE   s
             r   rI   rI   S   sq  € Ø"—o‘o€OØ�^‰^€Fð ˜&Ò Ø�{‰{Ô3°L×4FÑ4FÐPWÔXÓYÐYà˜(Ò"Ø×(Ñ(ˆØ�}‰}ð &öð
 ð	 —‘Ø˜q™Ü2°5¸±8ÀWÔMð õ òó
ð 	
ð ˜'Ò!Ø"×+Ñ+‰ˆˆtØ  ™G˜9ˆà�A‰h�k‰k˜WÒ$Ø ™(×+Ñ+‰KˆE�4Ø�L‰L˜˜D ™GÔ$ð �A‰h�k‰k˜WÓ$ô )¨¨q©¸7ÔCˆØ�|‰| %¬u°U«|ˆ|Ó<Ð<à˜&Ò Ø!×*Ñ*¨1Ñ-¨aÑ0ˆ
Ø�{‰{ jˆ{Ó1Ð1ä/°ÀÓIÐIùò1s   Á$+Eé   )Úmaxsizec                ó  — |j                   }i d|j                  «       “d|j                  «       “d|j                  «       “d|j	                  «       “d|j                  «       “d|j                  «       “d|j                  «       “d|j                  «       “d	|j                  «       “d
|j                  «       “d|j                  «       “d|j                  «       “d|j                  «       “d|j                  «       “d|j                  «       “d|j                  d¬«      “d|j!                  «       “|j#                  «       |j%                  «       |j'                  «       |j)                  «       dœ¥j+                  | |j-                  «       «      S )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)rG   ÚInt128ÚInt64ÚInt32ÚInt16ÚInt8ÚUInt128ÚUInt64ÚUInt32ÚUInt16ÚUInt8ÚFloat64ÚFloat32ÚStringÚDateÚDatetimeÚBooleanÚDurationÚDecimalÚTimeÚBinaryÚgetÚUnknown)rT   r<   rG   s      r   rR   rR   y   s�  € à�^‰^€FðØ�6—=‘=“?ðà�&—,‘,“.ðð 	�6—<‘<“>ðð 	�F—L‘L“Nð	ð
 	�6—;‘;“=ðð 	�F—N‘NÓ$ðð 	�6—=‘=“?ðð 	�F—M‘M“Oðð 	�V—]‘]“_ðð 	�F—L‘L“Nðð 	�&—.‘.Ó"ðð 	�—‘Ó!ðð 	�6—=‘=“?ðð 	�—‘“ðð 	�V—_‘_Ó&ðð$ 	# F§O¡O¸e OÓ$Dð%ð& 	�6—>‘>Ó#ð'ð( —O‘OÓ%Ø—>‘>Ó#Ø—‘“Ø—‘“ò/÷0 
�cˆ/˜6Ÿ>™>Ó+Ó,ð1-r   c                óL  ‡— ‰j                   }t        | |j                  «      rd}t        |«      ‚t        | |j                  «      ryt        | |j
                  «      ryt        | |j                  «      ryt        | |j                  «      ryt        | |j                  «      ryt        | |j                  «      ryt        | |j                  «      ryt        | |j                  «      ry	t        | |j                  «      ry
t        | |j                  «      ryt        | |j                  «      ryt        | |j                  «      ryt        | |j                   «      ryt        | |j"                  «      ryt        | |j$                  «      ryt        | |j&                  «      ryt        | |j(                  «      rd}t        |«      ‚t        | |j*                  «      ri‰t,        j.                  u rd}t        |«      ‚t1        | |j*                  «      r'ddj3                  | j4                  «      z   dz   }d|› d�S d}t7        |«      ‚t        | |j8                  «      r%| j:                  }| j<                  }d}t        |«      ‚t        | |j>                  «      r| j:                  }d}t        |«      ‚t        | |j@                  «      ryt        | |jB                  «      rtE        | jF                  ‰«      }|› d�S t        | |jH                  «      r*dj3                  ˆfd„| jJ                  D «       «      }d|› d�S t        | |jL                  «      rK| jN                  }dj3                  d „ |D «       «      }	| }
|D ]  }|
jF                  }
Œ tE        |
‰«      }|› |	› �S d!| › �}tQ        |«      ‚)"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  ój   •K  — | ]*  }d |j                   › dt        |j                  ‰«      › �–— Œ, y­w)ú"z" N)r?   Únarwhals_to_native_dtyper@   )Ú.0Úfieldr<   s     €r   ú	<genexpr>z+narwhals_to_native_dtype.<locals>.<genexpr>Ø   s7   øè ø€ ò 
àð �—
‘
ˆ|˜2Ô6°u·{±{ÀGÓLÐMÔNñ
ùs   ƒ03zSTRUCT(r"   c              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)ú[ú]Nr!   )rž   Úitems     r   r    z+narwhals_to_native_dtype.<locals>.<genexpr>ß   s   è ø€ Ò"A°4 Q t f¨A¤;Ñ"Aùs   ‚zUnknown dtype: ))rG   r	   r€   ÚNotImplementedErrorry   rz   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   r{   r~   r�   r‚   ÚCategoricalrQ   r   ÚV1Ú
isinstanceÚjoinrE   Ú
ValueErrorr}   Ú	time_unitri   r   r|   rH   r�   rB   rL   ÚfieldsrO   rC   r1   )r@   r<   rG   r8   rE   Ú
_time_unitÚ
_time_zonerB   rC   Úduckdb_shape_fmtÚinner_dtypeÚ_Úduckdb_inners    `           r   r�   r�   —   s  ø€ Ø�^‰^€FÜ  v§~¡~Ô6Ø8ˆÜ! #Ó&Ð&Ü  v§~¡~Ô6ØÜ  v§~¡~Ô6ØÜ  v§}¡}Ô5ØÜ  v§|¡|Ô4ØÜ  v§|¡|Ô4ØÜ  v§|¡|Ô4ØÜ  v§{¡{Ô3ØÜ  v§~¡~Ô6ØÜ  v§}¡}Ô5ØÜ  v§}¡}Ô5ØÜ  v§}¡}Ô5ØÜ  v§|¡|Ô4ØÜ  v§}¡}Ô5ØÜ  v§~¡~Ô6ØÜ  v§{¡{Ô3ØÜ  v§}¡}Ô5ØÜ  v×'9Ñ'9Ô:Ø3ˆÜ! #Ó&Ð&Ü  v§{¡{Ô3Ø”g—j‘jÑ ØMˆCÜ% cÓ*Ð*Ü�e˜VŸ[™[Ô)Ø˜vŸ{™{¨5×+;Ñ+;Ó<Ñ<¸sÑBˆJØ˜J˜< qÐ)Ð)ØIˆÜ˜‹oÐä  v§¡Ô7Ø—_‘_ˆ
Ø—_‘_ˆ
ØˆÜ! #Ó&Ð&Ü  v§¡Ô7Ø—_‘_ˆ
ØˆÜ! #Ó&Ð&Ü  v§{¡{Ô3ØÜ  v§{¡{Ô3Ü(¨¯©°gÓ>ˆØ�˜ˆ|ÐÜ  v§}¡}Ô5Ø—	‘	ó 
àŸ™ô
ó 
ˆð ˜˜˜qÐ!Ð!Ü  v§|¡|Ô4Ø—‘ˆØŸ7™7Ñ"A¸5Ô"AÓAÐØ ˆØò 	,ˆAØ%×+Ñ+‰Kð	,ä/°¸WÓEˆØ�Ð 0Ð1Ð2Ð2Ø˜E˜7Ð
#€CÜ
˜Ó
Ðr   c                 ón   — | sydj                  | D �cg c]  }t        |«      › ‘Œ c}«      }d|› �S c c}w )Nr"   rš   zpartition by ©r©   Úcol)r   ÚxÚby_sqls      r   Úgenerate_partition_by_sqlr¸   é   s;   € ÙØØ�Y‰Y¨\Ö:¨œ3˜q›6˜(™Ò:Ó;€FØ˜6˜(Ð#Ð#ùò ;s   “2c                óÒ   — | r,dj                  |D �cg c]  }t        |«      › d�‘Œ c}«      }n+dj                  |D �cg c]  }t        |«      › d�‘Œ c}«      }d|› �S c c}w c c}w )Nrš   z asc nulls firstz desc nulls lastz	order by r´   )Ú	ascendingr   r¶   r·   s       r   Úgenerate_order_by_sqlr»   ð   se   € ÙØ—‘ÀÖJ¸Aœs 1›v˜hÐ&6Ò7ÒJÓK‰à—‘ÀÖJ¸Aœs 1›v˜hÐ&6Ò7ÒJÓKˆØ�v�hÐÐùò KùâJs
   ’A¾A$c                ó˜   — t        | |«      s>dj                  d„ |D «       «      }d|›dt        | «      j                  ›�}t	        |«      ‚y )Nz | c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr   )r   )rž   Útps     r   r    zensure_type.<locals>.<genexpr>ü   s   è ø€ Ò@¨b˜bŸk�kÑ@ùs   ‚z	Expected z, got: )r¨   r©   Útyper   Ú	TypeError)ÚobjÚvalid_typesÚtp_namesr8   s       r   Úensure_typerÄ   ø   sN   € ô �c˜;Ô'Ø—:‘:Ñ@°KÔ@Ó@ˆØ˜(˜ W¬T°#«Y×-?Ñ-?Ð,BÐCˆÜ˜‹nÐð (r   )r*   r   r#   Ústrr   r   )r4   r   r*   r   r   z#list[tuple[str, duckdb.Expression]])rS   r
   r<   r   r   r   )rT   rÅ   r<   r   r   r   )r@   zDType | type[DType]r<   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	   Úduckdb.typingr
   Únarwhals._duckdb.dataframer   Únarwhals._duckdb.exprr   Únarwhals.dtypesr   ÚColumnExpressionrµ   ÚConstantExpressionr)   ÚCaseExpressionÚwhenr   r+   r9   rI   rR   r�   r¸   r»   rÄ   r!   r   r   ú<module>rÓ      s¿   ðÝ "å Ý  Ý Ý ã å "Ý 3áÝ*å:Ý0Ý%ð ×Ñ€Ø *à×Ñ€Ø ,à×Ñ€Ø (÷!ñ !ð <>õ ð,ØðØ$.ðà(óó #JñL �2Ôò-ó ð-ó:Oód$ó ôr   