§
    Šhþh;  ã                  óx  — U 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
 n# e$ r	 d dlmZ
 Y nw xY wd dlmZmZmZmZ d dlmZ er.d dlmZ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mZ d dl m!Z!m"Z" dddddddddddœ
Z#dddœZ$dddœZ%ej&        Z'	 ej(        Z)	 ej*        Z+	 ej,        Z-	 djd$„Z.d%d&œdkd*„Z/dld/„Z0 G d0„ d1¦  «        Z1dmd8„Z2dnd;„Z3 ed<¬=¦  «        dod?„¦   «         Z4ej5        j6        Z6i e6j7        e
j8        “e6j9        e
j:        “e6j;        e
j<        “e6j=        e
j>        “e6j?        e
j@        “e6jA        e
jB        “e6jC        e
jD        “e6jE        e
jF        “e6jG        e
jH        “e6jI        e
jJ        “e6jK        e
jL        “e6jM        e
jN        “e6jO        e
jP        “e6jQ        e
jR        “e6jS        e
jT        “e6jU        e
jV        “e6jW        e
jX        “ZYd@eZdA<   e
j[        e
j\        e
j]        e
j^        dBœZ_dCeZdD<   e6j`        e6ja        fZbdpdG„ZcdqdJ„ZddrdL„ZedsdN„ZfdtdS„Zg	 	 	 	 dudddUdVœdvd^„Zhdwdd„Zidxdg„Zjdydh„Zkg di¢ZldS )zé    )Úannotations)Ú	lru_cache)ÚTYPE_CHECKINGN)Ú
Expression)ÚVersionÚextend_boolÚisinstance_or_issubclassÚ
zip_strict)ÚColumnNotFoundError)ÚMappingÚSequence)ÚDuckDBPyRelation)ÚCompliantLazyFrameAny)ÚDuckDBLazyFrame)Ú
DuckDBExpr)ÚDType)Ú	IntoDTypeÚTimeUnitÚyearÚquarterÚmonthÚdayÚhourÚminuteÚsecondÚmillisecondÚmicrosecondÚ
nanosecond)
ÚyÚqÚmoÚdÚhÚmÚsÚmsÚusÚnsÚdescÚasc)TFz
nulls lastznulls firstÚparamsú)str | Expression | tuple[Expression, ...]Úexprr   Úreturnc               óÀ   — 	 ddl m} n1# t          $ r$}dt           j        › �}t	          |¦  «        |‚d}~ww xY wt          | t          ¦  «        r| fn| } |||¦  «        S )z}Wraps [`duckdb.LambdaExpression`].

    [`duckdb.LambdaExpression`]: https://duckdb.org/docs/stable/sql/functions/lambda
    r   )ÚLambdaExpressionz<DuckDB>=1.2.0 is required for this operation. Found: DuckDB N)Úduckdbr0   ÚModuleNotFoundErrorÚ__version__ÚNotImplementedErrorÚ
isinstancer   )r+   r-   r0   ÚexcÚmsgÚargss         úM/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_duckdb/utils.pyÚlambda_exprr:   :   sŠ   € ð0Ø+Ð+Ð+Ð+Ð+Ð+Ð+øÝð 0ð 0ð 0ØaÍVÔM_ÐaÐaˆÝ! #Ñ&Ô&¨CÐ/øøøøð0øøøõ # 6­:Ñ6Ô6ÐBˆFˆ9ˆ9¸F€DØÐ˜D $Ñ'Ô'Ð'ó   ‚	 ‰
7“2²7Ú )Ú	separatorÚexprsr=   Ústrc                óV   — | rt          dt          | ¦  «        g|¢R Ž nt          dg|¢R Ž 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.


    [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)ÚFÚlit)r=   r>   s     r9   Ú
concat_strrE   J   s=   € ð 6?ÐW�1ˆ[�#˜i™.œ.Ð1¨5Ð1Ð1Ð1Ð1ÅAÀhÐDWÐQVÐDWÐDWÐDWÐWó    Údfr   r   úlist[tuple[str, Expression]]c               óp  — g }|D ]°}|                      | ¦  «        }|                     | ¦  «        }|j        �|                     |¦  «        }t          |¦  «        t          |¦  «        k    r%d|› dt          |¦  «        › d�}t	          |¦  «        ‚|                     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)rG   r>   Únative_resultsr-   Únative_series_listÚoutput_namesr7   s          r9   Úevaluate_exprsrT   Z   sÍ   € ð 46€NØð Eð EˆØ!ŸZšZ¨™^œ^ÐØ×2Ò2°2Ñ6Ô6ˆØÔ#Ð/Ø×3Ò3°LÑAÔAˆLÝˆ|ÑÔ¥Ð$6Ñ 7Ô 7Ò7Ð7Øt°lÐtÐtÕSVÐWiÑSjÔSjÐtÐtÐtˆCÝ  Ñ%Ô%Ð%Ø×Ò�c ,Ð0BÑCÔCÑDÔDÐDÐDØÐrF   c                  óB   — e Zd ZU dZdZded<   dd	„Zedd„¦   «         ZdS )ÚDeferredTimeZonea�  Object which gets passed between `native_to_narwhals_dtype` calls.

    DuckDB stores the time zone in the connection, rather than in the dtypes, so
    this ensures that when calculating the schema of a dataframe with multiple
    timezone-aware columns, that the connection's time zone is only fetched once.

    Note: we cannot make the time zone a cached `DuckDBLazyFrame` property because
    the time zone can be modified after `DuckDBLazyFrame` creation:

    ```python
    df = nw.from_native(rel)
    print(df.collect_schema())
    rel.query("set timezone = 'Asia/Kolkata'")
    print(df.collect_schema())  # should change to reflect new time zone
    ```
    Nz
str | NoneÚ_cached_time_zoneÚrelr   r.   ÚNonec                ó   — || _         d S ©N)Ú_rel)ÚselfrX   s     r9   Ú__init__zDeferredTimeZone.__init__~   s   € ØˆŒ	ˆ	ˆ	rF   r?   c                óP   — | j         €t          | j        ¦  «        | _         | j         S )z;Fetch relation time zone (if it wasn't calculated already).)rW   Úfetch_rel_time_zoner\   )r]   s    r9   Ú	time_zonezDeferredTimeZone.time_zone�   s(   € ð Ô!Ð)Ý%8¸¼Ñ%CÔ%CˆDÔ"ØÔ%Ð%rF   )rX   r   r.   rY   )r.   r?   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rW   Ú__annotations__r^   Úpropertyra   © rF   r9   rV   rV   j   sh   € € € € € € ðð ð" %)ÐÐ(Ð(Ð(Ñ(ðð ð ð ð ð&ð &ð &ñ „Xð&ð &ð &rF   rV   Úduckdb_dtypeúduckdb_dtypes.DuckDBPyTypeÚversionr   Údeferred_time_zoner   c                ó*  ‡‡‡
— | j         }‰j        Š
|dk    r)‰
                     t          | j        ‰‰¦  «        ¦  «        S |dk    r*| j        }‰
                     ˆˆ
ˆfd„|D ¦   «         ¦  «        S |dk    rœ| j        \  }}|d         g}|d         j         dk    r=|d         j        \  }}|                     d|d         ¦  «         |d         j         dk    °=t          |d         ‰‰¦  «        }‰
                     |t          |¦  «        ¬¦  «        S |dk    rK‰t          j        u r‰
                     ¦   «         S | j        d         d         }	‰
                     |	¬	¦  «        S |d
k    r‰
                     ‰j        ¬¦  «        S t          |‰¦  «        S )NÚlistÚstructc           
     ót   •— g | ]4}‰                      |d          t          |d         ‰‰¦  «        ¬¦  «        ‘Œ5S )r   é   )ÚnameÚdtype)ÚFieldÚnative_to_narwhals_dtype)Ú.0Úchildrl   Údtypesrk   s     €€€r9   ú
<listcomp>z,native_to_narwhals_dtype.<locals>.<listcomp>š   sY   ø€ ð ð ð ð
 ð	 —’Ø˜qœÝ2°5¸´8¸WÐFXÑYÔYð ñ ô ðð ð rF   Úarrayrq   r   )ÚinnerÚshapeÚenum)Ú
categoriesztimestamp with time zone)ra   )Úidrx   ÚListru   rw   ÚchildrenÚStructÚinsertÚArrayÚtupler   ÚV1ÚEnumÚDatetimera   Ú$_non_nested_native_to_narwhals_dtype)ri   rk   rl   Úduckdb_dtype_idr�   rw   Úsizer|   r{   r~   rx   s    ``       @r9   ru   ru   ‰   sÌ  øøø€ ð
 #”o€OØŒ^€Fð ˜&Ò Ð Ø�{Š{Ý$ \Ô%7¸ÐBTÑUÔUñ
ô 
ð 	
ð ˜(Ò"Ð"ØÔ(ˆØ�}Š}ðð ð ð ð ð ð
 &ðñ ô ñ
ô 
ð 	
ð ˜'Ò!Ð!Ø"Ô+‰ˆˆtØ  œG˜9ˆà�AŒhŒk˜WÒ$Ð$Ø œ(Ô+‰KˆE�4Ø�LŠL˜˜D œGÑ$Ô$Ð$ð �AŒhŒk˜WÒ$Ð$õ )¨¨q¬°7Ð<NÑOÔOˆØ�|Š| %­u°U©|¬|ˆ|Ñ<Ô<Ð<à˜&Ò Ð Ø•g”jÐ Ð Ø—;’;‘=”=Ð Ø!Ô*¨1Ô-¨aÔ0ˆ
Ø�{Š{ jˆ{Ñ1Ô1Ð1àÐ4Ò4Ð4Ø�ŠÐ);Ô)EˆÑFÔFÐFå/°ÀÑIÔIÐIrF   rX   úduckdb.DuckDBPyRelationc                ój   — |                       dd¦  «                             ¦   «         }|€J ‚|d         S )Nzduckdb_settings()z;select value from duckdb_settings() where name = 'TimeZone'r   )ÚqueryÚfetchone)rX   Úresults     r9   r`   r`   º   s?   € Ø�YŠYØÐZñô ç‚h�j„jð ð ÐÐÐØ�!Œ9ÐrF   é   )ÚmaxsizerŠ   c                ó  — |j         }i d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d	| 	                    ¦   «         “d
| 
                    ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     d¦  «        “d|                     d¦  «        “d|                     ¦   «         “|                     d¦  «        |                     ¦   «         |                     ¦   «         |                     ¦   «         |                     ¦   «         |                     ¦   «         dœ¥                     | |                     ¦   «         ¦  «        S )NÚhugeintÚbigintÚintegerÚsmallintÚtinyintÚuhugeintÚubigintÚuintegerÚ	usmallintÚutinyintÚdoubleÚfloatÚvarcharÚdateÚtimestamp_sr%   Útimestamp_msr&   Ú	timestampr(   )Útimestamp_nsÚbooleanÚintervalÚdecimalÚtimeÚblob)rx   ÚInt128ÚInt64ÚInt32ÚInt16ÚInt8ÚUInt128ÚUInt64ÚUInt32ÚUInt16ÚUInt8ÚFloat64ÚFloat32ÚStringÚDaterˆ   ÚBooleanÚDurationÚDecimalÚTimeÚBinaryÚgetÚUnknown)rŠ   rk   rx   s      r9   r‰   r‰   Â   së  € àŒ^€FðØ�6—=’=‘?”?ðà�&—,’,‘.”.ðð 	�6—<’<‘>”>ðð 	�F—L’L‘N”Nð	ð
 	�6—;’;‘=”=ðð 	�F—N’NÑ$Ô$ðð 	�6—=’=‘?”?ðð 	�F—M’M‘O”Oðð 	�V—]’]‘_”_ðð 	�F—L’L‘N”Nðð 	�&—.’.Ñ"Ô"ðð 	�—’Ñ!Ô!ðð 	�6—=’=‘?”?ðð 	�—’‘”ðð 	�v—’ sÑ+Ô+ðð  	˜Ÿš¨Ñ-Ô-ð!ð" 	�V—_’_Ñ&Ô&ð#ð$ Ÿš¨Ñ-Ô-Ø—>’>Ñ#Ô#Ø—O’OÑ%Ô%Ø—>’>Ñ#Ô#Ø—’‘”Ø—’‘”ð/ð ð ÷0 
‚cˆ/˜6Ÿ>š>Ñ+Ô+Ñ,Ô,ð1-rF   z0Mapping[type[DType], duckdb_dtypes.DuckDBPyType]ÚNW_TO_DUCKDB_DTYPES)r%   r&   r'   r(   z-Mapping[TimeUnit, duckdb_dtypes.DuckDBPyType]ÚTIME_UNIT_TO_TIMESTAMPrs   r   c                óp  ‡‡— ‰j         }|                      ¦   «         }t                               |¦  «        x}r|S t	          | |j        ¦  «        ra‰t          j        u rd}t          |¦  «        ‚t          | |j        ¦  «        rt          j        d| j        ›�¦  «        S d}t          |¦  «        ‚t	          | |j        ¦  «        ri| j        }| j        }|st"          |         S |dk    rd|› d�}t          |¦  «        ‚|‰j        x}	k    rd|	› d|› d	�}t          |¦  «        ‚t          j        S t	          | |j        ¦  «        r| j        x}dk    rd
|› d�}t          j        S t	          | |j        ¦  «        r*t-          | j        ‰‰¦  «        }
t1          j        |
¦  «        S t	          | |j        ¦  «        r(ˆˆfd„| j        D ¦   «         }t1          j        |¦  «        S t          | |j        ¦  «        r€| }t          ||j        ¦  «        r|j        }t          ||j        ¦  «        °t-          |‰‰¦  «        }d                     d„ | j        D ¦   «         ¦  «        }t          j        |› |› �¦  «        S tA          |tB          ¦  «        rd|j"        › d�}t          |¦  «        ‚d| › �}tG          |¦  «        ‚)Nz9Converting to Enum is not supported in narwhals.stable.v1ÚENUMz9Can not cast / initialize Enum without categories presentr'   zUOnly microsecond precision is supported for timezone-aware `Datetime` in DuckDB, got z
 precisionzOnly the connection time zone z is supported, got: ú.z6Only microsecond-precision Duration is supported, got c                óH   •— i | ]}|j         t          |j        ‰‰¦  «        “ŒS rh   )rr   Únarwhals_to_native_dtypers   )rv   Úfieldrl   rk   s     €€r9   ú
<dictcomp>z,narwhals_to_native_dtype.<locals>.<dictcomp>!  s=   ø€ ð 
ð 
ð 
àð ŒJÕ0°´¸gÐGYÑZÔZð
ð 
ð 
rF   r<   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )ú[ú]Nrh   )rv   Úitems     r9   ú	<genexpr>z+narwhals_to_native_dtype.<locals>.<genexpr>+  s*   è è € Ð"GÐ"G°4 ; t ; ; ;Ð"GÐ"GÐ"GÐ"GÐ"GÐ"GrF   zConverting to z# dtype is not supported for DuckDB.zUnknown dtype: )$rx   Ú	base_typerÀ   r¾   r	   r‡   r   r†   r4   r5   Úduckdb_dtypesÚDuckDBPyTyper~   Ú
ValueErrorrˆ   Ú	time_unitra   rÁ   ÚTIMESTAMP_TZrº   ÚINTERVALr€   rÆ   r{   r1   Ú	list_typer‚   ÚfieldsÚstruct_typer„   Újoinr|   Ú
issubclassÚUNSUPPORTED_DTYPESrb   rN   )rs   rk   rl   rx   rÎ   Úduckdb_typer7   ÚtuÚtzÚrel_tzr{   rÖ   Únw_innerÚduckdb_innerÚduckdb_shape_fmts    ``            r9   rÆ   rÆ   ý   s
  øø€ ð Œ^€FØ—’Ñ!Ô!€IÝ)×-Ò-¨iÑ8Ô8Ð8€{ð ØÐÝ  v¤{Ñ3Ô3ð Ø•g”jÐ Ð ØMˆCÝ% cÑ*Ô*Ð*Ý�e˜Vœ[Ñ)Ô)ð 	KÝ Ô-Ð.I°UÔ5EÐ.IÐ.IÑJÔJÐJØIˆÝ˜‰oŒoÐÝ  v¤Ñ7Ô7ð *ØŒ_ˆØŒ_ˆØð 	.Ý)¨"Ô-Ð-Ø�Š:ˆ:ØxÐjlÐxÐxÐxˆCÝ˜S‘/”/Ð!ØÐ.Ô8Ð8�&Ò9Ð9ØT°6ÐTÐTÈrÐTÐTÐTˆCÝ˜S‘/”/Ð!åÔ)Ð)Ý  v¤Ñ7Ô7ð &Ø”/Ð!ˆB dÒ*Ð*ØYÈ2ÐYÐYÐYˆCÝÔ%Ð%Ý  v¤{Ñ3Ô3ð 'Ý(¨¬°gÐ?QÑRÔRˆÝÔ Ñ&Ô&Ð&Ý  v¤}Ñ5Ô5ð *ð
ð 
ð 
ð 
ð 
àœð
ñ 
ô 
ˆõ Ô! &Ñ)Ô)Ð)Ý�%˜œÑ&Ô&ð OØ#ˆÝ˜ 6¤<Ñ0Ô0ð 	&Ø”~ˆHõ ˜ 6¤<Ñ0Ô0ð 	&å/°¸'ÐCUÑVÔVˆØŸ7š7Ð"GÐ"G¸5¼;Ð"GÑ"GÔ"GÑGÔGÐÝÔ)¨\Ð*MÐ;KÐ*MÐ*MÑNÔNÐNÝ�)Õ/Ñ0Ô0ð 'ØV˜yÔ1ÐVÐVÐVˆÝ! #Ñ&Ô&Ð&Ø
#˜EÐ
#Ð
#€CÝ
˜Ñ
Ô
ÐrF   Úinto_expressionústr | Expressionc                óN   — t          | t          ¦  «        rt          | ¦  «        n| S r[   )r5   r?   Úcol)râ   s    r9   Úparse_into_expressionræ   4  s$   € Ý#-¨o½sÑ#CÔ#CÐX�3ˆÑÔÐÈÐXrF   Úpartition_byc                 óR   — | sdS d                      d„ | D ¦   «         ¦  «        }d|› �S )Nr<   ú, c                ó.   — g | ]}t          |¦  «        › ‘ŒS rh   )ræ   )rv   Úxs     r9   ry   z-generate_partition_by_sql.<locals>.<listcomp>;  s$   € ÐLÐLÐL¸!Õ0°Ñ3Ô3Ð5ÐLÐLÐLrF   zpartition by ©rØ   )rç   Úby_sqls     r9   Úgenerate_partition_by_sqlrî   8  s=   € Øð ØˆrØ�YŠYÐLÐL¸|ÐLÑLÔLÑMÔM€FØ#˜6Ð#Ð#Ð#rF   Únamesc                 ó@   — d                      d„ | D ¦   «         ¦  «        S )Nré   c              3  óN   K  — | ] }t          t          |¦  «        ¦  «        V — Œ!d S r[   )r?   rå   )rv   rr   s     r9   rÍ   z$join_column_names.<locals>.<genexpr>@  s.   è è € Ð6Ð6¨•S�˜T™œ‘^”^Ð6Ð6Ð6Ð6Ð6Ð6rF   rì   )rï   s    r9   Újoin_column_namesrò   ?  s#   € Ø�9Š9Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ð6rF   Úorder_byÚ
descendingúSequence[bool]Ú
nulls_lastc                óp   — |sdS d                      d„ t          || |¦  «        D ¦   «         ¦  «        }d|› �S )Nr<   ú,c              3  óx   K  — | ]5\  }}}t          |¦  «        › d t          |         › d t          |         › �V — Œ6dS )ú N)ræ   ÚDESCENDING_TO_ORDERÚNULLS_LAST_TO_NULLS_POS)rv   rë   Ú_descendingÚ_nulls_lasts       r9   rÍ   z(generate_order_by_sql.<locals>.<genexpr>H  sg   è è € ð ð á'ˆAˆ{˜Kõ ! Ñ#Ô#ÐoÐoÕ&9¸+Ô&FÐoÐoÕI`ÐalÔImÐoÐoðð ð ð ð ð rF   z	order by )rØ   r
   )rô   rö   ró   rí   s       r9   Úgenerate_order_by_sqlrÿ   C  s\   € ð ð ØˆrØ�XŠXð ð å+5°hÀ
ÈJÑ+WÔ+Wðñ ô ñ ô €Fð  �vÐÐÐrF   rh   F)rô   rö   Úignore_nullsúSequence[str | Expression]Ú
rows_startú
int | NoneÚrows_endúSequence[bool] | Noner   Úboolc          
     ób  — t          |Ž }t          dt          |¦  «        ¦  «        }	|p|	}|p|	}t          |||dœŽ}
|�|�d| › d|› d�}n|�d|› d�}n|�d| › d�}nd}|r%t	          | ¦  «                             d	¦  «        › d
�nt	          | ¦  «        }t          |› d|› d|
› d|› d	�¦  «        S )NF)rô   rö   zrows between z preceding and z
 followingz%rows between unbounded preceding and z" preceding and unbounded followingr<   ú)z ignore nulls)z over (rú   )rî   r   rM   rÿ   r?   ÚremovesuffixÚsql_expression)r-   rç   ró   r  r  rô   rö   r   ÚpbÚflagsÚobÚrowsÚfuncs                r9   Úwindow_expressionr  O  s  € õ 
# LÐ	1€BÝ˜�s 8™}œ}Ñ-Ô-€EØÐ$˜u€JØÐ$˜u€JÝ	 °ZÈJÐ	WÐ	WÐ	W€BàÐ (Ð"6ØO 
˜{ÐOÐO¸8ÐOÐOÐOˆˆØ	Ð	ØK°xÐKÐKÐKˆˆØ	Ð	ØN 
˜{ÐNÐNÐNˆˆàˆà=IÐX�c�$‰iŒi×$Ò$ SÑ)Ô)Ð9Ð9Ð9Ð9ÍsÐSWÉyÌy€DÝ˜TÐ;Ð;¨"Ð;Ð;¨rÐ;Ð;°DÐ;Ð;Ð;Ñ<Ô<Ð<rF   Ú	exceptionÚ	ExceptionÚframer   úColumnNotFoundError | Exceptionc               ó¦   ‡ — t          ‰ t          j        ¦  «        r5t          ˆ fd„dD ¦   «         ¦  «        rt	          j        |j        ¬¦  «        S ‰ S )Nc              3  ó:   •K  — | ]}|t          ‰¦  «        v V — Œd S r[   )r?   )rv   r7   r  s     €r9   rÍ   z)catch_duckdb_exception.<locals>.<genexpr>r  sB   øè è € ð =ð =àð 	�s�9‰~Œ~Ðð=ð =ð =ð =ð =ð =rF   )znot found in FROM clausez5this column cannot be referenced before it is defined)Úavailable_columns)r5   r1   ÚBinderExceptionÚanyr   Úfrom_available_column_namesÚcolumns)r  r  s   ` r9   Úcatch_duckdb_exceptionr  o  s|   ø€ õ �)�VÔ3Ñ4Ô4ð 	
½ð =ð =ð =ð =ð
ð=ñ =ô =ñ :ô :ð 	
õ #Ô>Ø#œmð
ñ 
ô 
ð 	
ð ÐrF   rr   r8   c                óš   — | dk    r|d                               ¦   «         S | dk    rt          d|d         › d�¦  «        S t          | g|¢R Ž S )NÚisnullr   Úcount_distinctzcount(distinct r  )r  r
  rC   )rr   r8   s     r9   Úfunctionr   €  s]   € ØˆxÒÐØ�AŒw�~Š~ÑÔÐØÐÒÐÝÐ:°°Q´Ð:Ð:Ð:Ñ;Ô;Ð;ÝˆTˆ>�Dˆ>ˆ>ˆ>ÐrF   c                óŠ   — 	 ddl m} n1# t          $ r$}dt           j        › �}t	          |¦  «        |‚d }~ww xY w || ¦  «        S )Nr   )ÚSQLExpressionz<DuckDB>=1.3.0 is required for this operation. Found: DuckDB )r1   r"  ÚImportErrorr3   r4   )r-   r"  r6   r7   s       r9   r
  r
  ˆ  sm   € ð0Ø(Ð(Ð(Ð(Ð(Ð(Ð(øÝð 0ð 0ð 0ØaÍVÔM_ÐaÐaˆÝ! #Ñ&Ô&¨CÐ/øøøøð0øøøð ˆ=˜ÑÔÐr;   )Ú
UNITS_DICTrV   rC   r  rå   rE   rÏ   rT   r`   r   rÿ   rî   rò   r:   rD   rÆ   ru   ræ   r
  Úwhenr  )r+   r,   r-   r   r.   r   )r>   r   r=   r?   r.   r   )rG   r   r>   r   r.   rH   )ri   rj   rk   r   rl   rV   r.   r   )rX   rŒ   r.   r?   )rŠ   r?   rk   r   r.   r   )rs   r   rk   r   rl   rV   r.   rj   )râ   rã   r.   r   )rç   rã   r.   r?   )rï   r?   r.   r?   )ró   rã   rô   rõ   rö   rõ   r.   r?   )rh   rh   NN)r-   r   rç   r  ró   r  r  r  r  r  rô   r  rö   r  r   r  r.   r   )r  r  r  r   r.   r  )rr   r?   r8   r   r.   r   )r-   r?   r.   r   )mÚ
__future__r   Ú	functoolsr   Útypingr   r1   r   Úduckdb.sqltypesÚsqltypesrÏ   r2   Úduckdb.typingÚnarwhals._utilsr   r   r	   r
   Únarwhals.exceptionsr   Úcollections.abcr   r   r   Únarwhals._compliant.typingr   Únarwhals._duckdb.dataframer   Únarwhals._duckdb.exprr   Únarwhals.dtypesr   Únarwhals.typingr   r   r$  rû   rü   ÚColumnExpressionrå   ÚConstantExpressionrD   ÚCaseExpressionr%  ÚFunctionExpressionrC   r:   rE   rT   rV   ru   r`   r‰   ÚMAINrx   rµ   ÚDOUBLEr¶   ÚFLOATr½   ÚBLOBr·   ÚVARCHARr¹   ÚBOOLEANr¸   ÚDATEr¼   ÚTIMEr¯   ÚTINYINTr®   ÚSMALLINTr­   ÚINTEGERr¬   ÚBIGINTr«   ÚHUGEINTr´   ÚUTINYINTr³   Ú	USMALLINTr²   ÚUINTEGERr±   ÚUBIGINTr°   ÚUHUGEINTrÀ   rf   ÚTIMESTAMP_SÚTIMESTAMP_MSÚ	TIMESTAMPÚTIMESTAMP_NSrÁ   r»   ÚCategoricalrÚ   rÆ   ræ   rî   rò   rÿ   r  r  r   r
  Ú__all__rh   rF   r9   ú<module>rP     sX  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à €€€Ø Ð Ð Ð Ð Ð ð*Ø+Ð+Ð+Ð+Ð+Ð+Ð+øØð *ð *ð *à)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð*øøøð WÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ 3Ð 3Ð 3Ð 3Ð 3Ð 3àð 	4Ø1Ð1Ð1Ð1Ð1Ð1Ð1Ð1à'Ð'Ð'Ð'Ð'Ð'à@Ð@Ð@Ð@Ð@Ð@Ø:Ð:Ð:Ð:Ð:Ð:Ø0Ð0Ð0Ð0Ð0Ð0Ø%Ð%Ð%Ð%Ð%Ð%Ø3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð 
Ø	Ø
Ø	Ø	Ø	Ø	Ø
Ø
Ø
ðð €
ð $¨EÐ2Ð2Ð Ø!-°mÐDÐDÐ àÔ€Ø *àÔ€Ø ,àÔ€Ø (à
Ô€Ø ,ð(ð (ð (ð (ð  57ð Xð Xð Xð Xð Xð Xð ð ð ð ð &ð &ð &ð &ð &ñ &ô &ð &ð>.Jð .Jð .Jð .Jðbð ð ð ð €�2ÐÑÔð-ð -ð -ñ Ôð-ð: 
ŒÔ	€ðIØ
„N�MÔ(ðIà
„N�MÔ'ðIð „M�=Ô%ðIð „M�=Ô(ð	Ið
 „N�MÔ)ðIð „K�Ô#ðIð „K�Ô#ðIð „K�Ô&ðIð „L�-Ô(ðIð „L�-Ô'ðIð „L�-Ô&ðIð „M�=Ô(ðIð „L�-Ô(ðIð „M�=Ô*ðIð „M�=Ô)ðIð  „M�=Ô(ð!Ið" „N�MÔ*ð#IÐ ð ð ð ñ ð( 
Ô	"Ø
Ô
$Ø
Ô
!Ø
Ô
$ð	Ið IÐ ð ð ð ñ ð ”n fÔ&8Ð9Ð ð4ð 4ð 4ð 4ðnYð Yð Yð Yð$ð $ð $ð $ð7ð 7ð 7ð 7ð	 ð 	 ð 	 ð 	 ð 02Ø+-Ø!Øð=ð )-Ø(,Øð=ð =ð =ð =ð =ð =ð@ð ð ð ð"ð ð ð ðð ð ð ðð ð €€€s   Ÿ& ¦4³4