§
    cŠtj½>  ã                  óê  — U d dl mZ d dlZd dlmZ d dlmZmZ d dlZd dlm	Z	 d dl
mZmZmZmZ d dlmZ er4d 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 d dlmZm Z  eZ!de"d<   	 ej#         $                    ¦   «         Z%	 ese%dk    rd dlm&Z' nd dl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/        Z0	 ej1        Z2	 dqd*„Z3d+d,œdrd0„Z4dsd5„Z5 G d6„ d7¦  «        Z6dtd>„Z7dudA„Z8 edB¬C¦  «        dvdE„¦   «         Z9ej:        j;        Z;i e;j<        e'j=        “e;j>        e'j?        “e;j@        e'jA        “e;jB        e'jC        “e;jD        e'jE        “e;jF        e'jG        “e;jH        e'jI        “e;jJ        e'jK        “e;jL        e'jM        “e;jN        e'jO        “e;jP        e'jQ        “e;jR        e'jS        “e;jT        e'jU        “e;jV        e'jW        “e;jX        e'jY        “e;jZ        e'j[        “e;j\        e'j]        “Z^dFe"dG<   e'j_        e'j`        e'ja        e'jb        dHœZcdIe"dJ<   e;jd        e;je        fZfdwdM„ZgdxdP„ZhdydR„ZidzdT„Zjd{dY„Zk	 	 	 	 d|ddd[d\œd}dd„Zld~dj„Zmejn        ejo        dkœZpddn„Zqd€do„Zrg dp¢ZsdS )�é    )ÚannotationsN)Ú	lru_cache)ÚTYPE_CHECKINGÚAny)Ú
Expression)ÚImplementationÚVersionÚextend_boolÚisinstance_or_issubclass)ÚColumnNotFoundError)ÚMappingÚSequence)Ú	TypeAlias)ÚDuckDBPyRelation)ÚCompliantLazyFrameAny)ÚDuckDBLazyFrame)Ú
DuckDBExpr)ÚDType)Ú	IntoDTypeÚTimeUnitr   Ú
Incomplete)é   é   )Úsqltypes)ÚtypingÚ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)Úduckdbr7   ÚModuleNotFoundErrorÚ__version__ÚNotImplementedErrorÚ
isinstancer   )r2   r4   r7   ÚexcÚmsgÚargss         úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/narwhals/_duckdb/utils.pyÚlambda_exprrA   B   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ÚexprsrD   Ú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)rD   rE   s     r@   Ú
concat_strrL   R   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               ó`  — g }|D ]¨} || ¦  «        }|                      | ¦  «        }|j        �|                     |¦  «        }t          |¦  «        t          |¦  «        k    r%d|› dt          |¦  «        › d�}t          |¦  «        ‚|                     t          ||d¬¦  «        ¦  «         Œ©|S )Nz!Internal error: got output names z, but only got z resultsF©Ústrict)Ú_evaluate_output_namesÚ_alias_output_namesÚlenÚAssertionErrorÚextendÚzip)rN   rE   Únative_resultsr4   Únative_series_listÚoutput_namesr>   s          r@   Úevaluate_exprs_and_aliasesr\   b   sÐ   € ð 46€NØð Sð SˆØ!˜T "™XœXÐØ×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È5ÐQÑQÔQÑRÔRÐRÐRØÐrM   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   r5   ÚNonec                ó   — || _         d S ©N)Ú_rel)Úselfr`   s     r@   Ú__init__zDeferredTimeZone.__init__†   s   € ØˆŒ	ˆ	ˆ	rM   rF   c                óP   — | j         €t          | j        ¦  «        | _         | j         S )z;Fetch relation time zone (if it wasn't calculated already).)r_   Úfetch_rel_time_zonerd   )re   s    r@   Ú	time_zonezDeferredTimeZone.time_zone‰   s(   € ð Ô!Ð)Ý%8¸¼Ñ%CÔ%CˆDÔ"ØÔ%Ð%rM   )r`   r   r5   ra   )r5   rF   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r_   Ú__annotations__rf   Úpropertyri   © rM   r@   r^   r^   r   sh   € € € € € € ðð ð" %)ÐÐ(Ð(Ð(Ñ(ðð ð ð ð ð&ð &ð &ñ „Xð&ð &ð &rM   r^   Ú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    rJ‰t          j        u r‰                     ¦   «         S | j        d         d         }	‰                     |	¦  «        S |d	k    r‰                     ‰j        ¬
¦  «        S |dk    r&| j        \  \  }
}\  }
}‰                     ||¦  «        S t!          |‰¦  «        S )NÚlistÚstructc           
     ót   •— g | ]4}‰                      |d          t          |d         ‰‰¦  «        ¬¦  «        ‘Œ5S )r   r   )ÚnameÚdtype)ÚFieldÚnative_to_narwhals_dtype)Ú.0Úchildrt   Údtypesrs   s     €€€r@   ú
<listcomp>z,native_to_narwhals_dtype.<locals>.<listcomp>¢   sY   ø€ ð ð ð ð
 ð	 —’Ø˜qœÝ2°5¸´8¸WÐFXÑYÔYð ñ ô ðð ð rM   Úarrayr   r   )ÚinnerÚshapeÚenumztimestamp with time zone)ri   Údecimal)Úidr   ÚListr|   r~   ÚchildrenÚStructÚinsertÚArrayÚtupler	   ÚV1ÚEnumÚDatetimeri   ÚDecimalÚ$_non_nested_native_to_narwhals_dtype)rq   rs   rt   Úduckdb_dtype_idrˆ   r~   Úsizerƒ   r‚   Ú
categoriesÚ_Ú	precisionÚscaler   s    ``          @r@   r|   r|   ‘   s  øøø€ ð
 (œ?€OØŒ^€Fð ˜&Ò Ð Ø�{Š{Ý$ \Ô%7¸ÐBTÑUÔUñ
ô 
ð 	
ð ˜(Ò"Ð"Ø8DÔ8MˆØ�}Š}ðð ð ð ð ð ð
 &ðñ ô ñ
ô 
ð 	
ð ˜'Ò!Ð!ð #Ô+‰ˆˆtØ�a”�	ˆà�AŒhŒk˜WÒ$Ð$Ø œ(Ô+‰KˆE�4Ø�LŠL˜˜D œGÑ$Ô$Ð$ð �AŒhŒk˜WÒ$Ð$õ )¨¨q¬°7Ð<NÑOÔOˆØ�|Š| %­u°U©|¬|ˆ|Ñ<Ô<Ð<à˜&Ò Ð Ø•g”jÐ Ð Ø—;’;‘=”=Ð Ø!-Ô!6°qÔ!9¸!Ô!<ˆ
Ø�{Š{˜:Ñ&Ô&Ð&àÐ4Ò4Ð4Ø�ŠÐ);Ô)EˆÑFÔFÐFà˜)Ò#Ð#ð &2Ô%:Ñ"‰ˆˆI™
˜˜EØ�~Š~˜i¨Ñ/Ô/Ð/å/°ÀÑIÔIÐIrM   r`   úduckdb.DuckDBPyRelationc                ój   — |                       dd¦  «                             ¦   «         }|€J ‚|d         S )Nzduckdb_settings()z;select value from duckdb_settings() where name = 'TimeZone'r   )ÚqueryÚfetchone)r`   Úresults     r@   rh   rh   Ê   s?   € Ø�YŠYØÐZñô ç‚h�j„jð ð ÐÐÐØ�!Œ9ÐrM   é   )Ú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ÚtimeÚblob)r   ÚInt128ÚInt64ÚInt32ÚInt16ÚInt8ÚUInt128ÚUInt64ÚUInt32ÚUInt16ÚUInt8ÚFloat64ÚFloat32ÚStringÚDater�   ÚBooleanÚDurationÚTimeÚBinaryÚgetÚUnknown)r’   rs   r   s      r@   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Ñ%Ô%Ø—’‘”Ø—’‘”ð-ð ð ÷. 
‚cˆ/˜6Ÿ>š>Ñ+Ô+Ñ,Ô,ð/-rM   z0Mapping[type[DType], duckdb_dtypes.DuckDBPyType]ÚNW_TO_DUCKDB_DTYPES)r,   r-   r.   r/   z-Mapping[TimeUnit, duckdb_dtypes.DuckDBPyType]ÚTIME_UNIT_TO_TIMESTAMPrz   r   c                óä  ‡‡— ‰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 t          | |j         ¦  «        r%t          j        d| j!        › d| j"        › d�¦  «        S tG          |tH          ¦  «        rd|j%        › d�}t          |¦  «        ‚d| › �}tM          |¦  «        ‚)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 rp   )ry   Únarwhals_to_native_dtyperz   )r}   Úfieldrt   rs   s     €€r@   ú
<dictcomp>z,narwhals_to_native_dtype.<locals>.<dictcomp>0  s=   ø€ ð 
ð 
ð 
àð ŒJÕ0°´¸gÐGYÑZÔZð
ð 
ð 
rM   rC   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )ú[ú]Nrp   )r}   Úitems     r@   ú	<genexpr>z+narwhals_to_native_dtype.<locals>.<genexpr>:  s*   è è € Ð"GÐ"G°4 ; t ; ; ;Ð"GÐ"GÐ"GÐ"GÐ"GÐ"GrM   zDECIMAL(ú, ú)zConverting to z# dtype is not supported for DuckDB.zUnknown dtype: )'r   Ú	base_typerÊ   rÈ   r   rŽ   r	   r�   r;   r<   Úduckdb_dtypesÚDuckDBPyTyper”   Ú
ValueErrorr�   Ú	time_unitri   rË   ÚTIMESTAMP_TZrÅ   ÚINTERVALr‡   rÐ   r‚   r8   Ú	list_typer‰   ÚfieldsÚstruct_typer‹   Újoinrƒ   r�   r–   r—   Ú
issubclassÚUNSUPPORTED_DTYPESrj   rV   )rz   rs   rt   r   rÚ   Úduckdb_typer>   ÚtuÚtzÚrel_tzr‚   râ   Únw_innerÚduckdb_innerÚduckdb_shape_fmts    ``            r@   rÐ   rÐ     sH  øø€ ð Œ^€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Ý�%˜œÑ(Ô(ð XÝÔ)Ð*V°U´_Ð*VÐ*VÈÌÐ*VÐ*VÐ*VÑWÔWÐWÝ�)Õ/Ñ0Ô0ð 'ØV˜yÔ1ÐVÐVÐVˆÝ! #Ñ&Ô&Ð&Ø
#˜EÐ
#Ð
#€CÝ
˜Ñ
Ô
ÐrM   Úinto_expressionústr | Expressionc                óN   — t          | t          ¦  «        rt          | ¦  «        n| S rc   )r<   rF   Úcol)rî   s    r@   Úparse_into_expressionrò   E  s$   € Ý#-¨o½sÑ#CÔ#CÐX�3ˆÑÔÐÈÐXrM   Úpartition_byc                 óR   — | sdS d                      d„ | D ¦   «         ¦  «        }d|› �S )NrC   rØ   c                ó.   — g | ]}t          |¦  «        › ‘ŒS rp   )rò   )r}   Úxs     r@   r€   z-generate_partition_by_sql.<locals>.<listcomp>L  s$   € ÐLÐLÐL¸!Õ0°Ñ3Ô3Ð5ÐLÐLÐLrM   zpartition by ©rä   )ró   Úby_sqls     r@   Úgenerate_partition_by_sqlrù   I  s=   € Øð ØˆrØ�YŠYÐLÐL¸|ÐLÑLÔLÑMÔM€FØ#˜6Ð#Ð#Ð#rM   Únamesc                 ó@   — d                      d„ | D ¦   «         ¦  «        S )NrØ   c              3  óN   K  — | ] }t          t          |¦  «        ¦  «        V — Œ!d S rc   )rF   rñ   )r}   ry   s     r@   r×   z$join_column_names.<locals>.<genexpr>Q  s.   è è € Ð6Ð6¨•S�˜T™œ‘^”^Ð6Ð6Ð6Ð6Ð6Ð6rM   r÷   )rú   s    r@   Újoin_column_namesrý   P  s#   € Ø�9Š9Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ð6rM   Úorder_byÚ
descendingúSequence[bool]Ú
nulls_lastc           	     ót   — |sdS d                      d„ t          || |d¬¦  «        D ¦   «         ¦  «        }d|› �S )NrC   ú,c              3  óx   K  — | ]5\  }}}t          |¦  «        › d t          |         › d t          |         › �V — Œ6dS )ú N)rò   ÚDESCENDING_TO_ORDERÚNULLS_LAST_TO_NULLS_POS)r}   rö   Ú_descendingÚ_nulls_lasts       r@   r×   z(generate_order_by_sql.<locals>.<genexpr>Y  sg   è è € ð ð á'ˆAˆ{˜Kõ ! Ñ#Ô#ÐoÐoÕ&9¸+Ô&FÐoÐoÕI`ÐalÔImÐoÐoðð ð ð ð ð rM   TrQ   z	order by )rä   rX   )rÿ   r  rþ   rø   s       r@   Úgenerate_order_by_sqlr
  T  sh   € ð ð ØˆrØ�XŠXð ð å+.Ø�j *°Tð,
ñ ,
ô ,
ðñ ô ñ ô €Fð  �vÐÐÐrM   rp   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 followingrC   rÙ   z ignore nulls)z over (r  )rù   r
   rU   r
  rF   ÚremovesuffixÚsql_expression)r4   ró   rþ   r  r  rÿ   r  r  ÚpbÚflagsÚobÚrowsÚfuncs                r@   Úwindow_expressionr  b  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Ð;Ð;Ð;Ñ<Ô<Ð<rM   Ú	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 rc   )rF   )r}   r>   r  s     €r@   r×   z)catch_duckdb_exception.<locals>.<genexpr>…  sB   øè è € ð =ð =àð 	�s�9‰~Œ~Ðð=ð =ð =ð =ð =ð =rM   )znot found in FROM clausez5this column cannot be referenced before it is defined)Úavailable_columns)r<   r8   ÚBinderExceptionÚanyr   Úfrom_available_column_namesÚcolumns)r  r  s   ` r@   Úcatch_duckdb_exceptionr&  ‚  s|   ø€ õ �)�VÔ3Ñ4Ô4ð 	
½ð =ð =ð =ð =ð
ð=ñ =ô =ñ :ô :ð 	
õ #Ô>Ø#œmð
ñ 
ô 
ð 	
ð ÐrM   )ÚfloordivÚandry   r?   c                óÎ   — | t           v rt          |          |Ž S | dv r t          |d         | ¦  «        ¦   «         S | dk    rt          d|d         › d�¦  «        S t          | g|¢R Ž S )N>   ÚisnullÚ	isnotnullr   Úcount_distinctzcount(distinct rÙ   )Ú_BINARY_OPSÚgetattrr  rJ   )ry   r?   s     r@   Úfunctionr/  –  s�   € Ø�{ÐÐÝ˜4Ô  $Ð'Ð'ØÐ&Ð&Ð&Ø%�w�t˜A”w Ñ%Ô%Ñ'Ô'Ð'ØÐÒÐÝÐ:°°Q´Ð:Ð:Ð:Ñ;Ô;Ð;ÝˆTˆ>�Dˆ>ˆ>ˆ>ÐrM   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 )r8   r1  ÚImportErrorr:   r;   )r4   r1  r=   r>   s       r@   r  r     sm   € ð0Ø(Ð(Ð(Ð(Ð(Ð(Ð(øÝð 0ð 0ð 0ØaÍVÔM_ÐaÐaˆÝ! #Ñ&Ô&¨CÐ/øøøøð0øøøð ˆ=˜ÑÔÐrB   )Ú
UNITS_DICTr^   rJ   r&  rñ   rL   rÛ   rh   r/  r
  rù   rý   rA   rK   rÐ   r|   rò   r  Úwhenr  )r2   r3   r4   r   r5   r   )rE   r   rD   rF   r5   r   )rN   r   rE   r   r5   rO   )rq   rr   rs   r	   rt   r^   r5   r   )r`   r˜   r5   rF   )r’   rF   rs   r	   r5   r   )rz   r   rs   r	   rt   r^   r5   rr   )rî   rï   r5   r   )ró   rï   r5   rF   )rú   rF   r5   rF   )rþ   rï   rÿ   r   r  r   r5   rF   )rp   rp   NN)r4   r   ró   r  rþ   r  r  r  r  r  rÿ   r  r  r  r  r  r5   r   )r  r  r  r   r5   r  )ry   rF   r?   r   r5   r   )r4   rF   r5   r   )tÚ
__future__r   ÚoperatorÚ	functoolsr   r   r   r   r8   r   Únarwhals._utilsr   r	   r
   r   Únarwhals.exceptionsr   Úcollections.abcr   r   r   r   Únarwhals._compliant.typingr   Únarwhals._duckdb.dataframer   Únarwhals._duckdb.exprr   Únarwhals.dtypesr   Únarwhals.typingr   r   r   rn   ÚDUCKDBÚ_backend_versionÚBACKEND_VERSIONr   rÛ   r3  r  r  ÚColumnExpressionrñ   ÚConstantExpressionrK   ÚCaseExpressionr4  ÚFunctionExpressionrJ   rA   rL   r\   r^   r|   rh   r‘   ÚMAINr   rÀ   ÚDOUBLErÁ   ÚFLOATrÇ   ÚBLOBrÂ   ÚVARCHARrÄ   ÚBOOLEANrÃ   ÚDATErÆ   ÚTIMErº   ÚTINYINTr¹   ÚSMALLINTr¸   ÚINTEGERr·   ÚBIGINTr¶   ÚHUGEINTr¿   ÚUTINYINTr¾   Ú	USMALLINTr½   ÚUINTEGERr¼   ÚUBIGINTr»   ÚUHUGEINTrÊ   ÚTIMESTAMP_SÚTIMESTAMP_MSÚ	TIMESTAMPÚTIMESTAMP_NSrË   ÚCategoricalÚFloat16ræ   rÐ   rò   rù   rý   r
  r  r&  r'  Úand_r-  r/  r  Ú__all__rp   rM   r@   ú<module>ra     s¥  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø Ð Ð Ð Ð Ð à ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZØ 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à€
Ð Ð Ð Ñ ð>ð !Ô'×8Ò8Ñ:Ô:€Ø *àð /�O vÒ-Ð-Ø0Ð0Ð0Ð0Ð0Ð0Ð0à.Ð.Ð.Ð.Ð.Ð.ð 
Ø	Ø
Ø	Ø	Ø	Ø	Ø
Ø
Ø
ðð €
ð $¨EÐ2Ð2Ð Ø!-°mÐDÐDÐ àÔ€Ø *àÔ€Ø ,àÔ€Ø (à
Ô€Ø ,ð(ð (ð (ð (ð  57ð Xð Xð Xð Xð Xð Xð ð ð ð ð &ð &ð &ð &ð &ñ &ô &ð &ð>6Jð 6Jð 6Jð 6Jðrð ð ð ð €�2ÐÑÔð-ð -ð -ñ Ôð-ð8 
ŒÔ	€ð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Ð ð ð ð ñ ð Ô(¨&¬.Ð9Ð ð6ð 6ð 6ð 6ðrYð Yð Yð Yð$ð $ð $ð $ð7ð 7ð 7ð 7ð ð  ð  ð  ð  02Ø+-Ø!Øð=ð )-Ø(,Øð=ð =ð =ð =ð =ð =ð@ð ð ð ð" $Ô,°X´]ÐCÐC€ðð ð ð ðð ð ð ðð ð €€€rM   