§
    ŠhþhxY  ã                  ó¶  — d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZ d dlmZmZmZ d dlmZmZ erEd dlmZ d d	lmZmZ d d
lmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z,  ed¦  «        Z-dEd„Z.dFd„Z/dGd„Z0dHd„Z1dId„Z2dJd&„Z3 G d'„ d(e¦  «        Z4dKd*„Z5 G d+„ d,e¦  «        Z6 G d-„ d.¦  «        Z7dLd5„Z8dMd:„Z9dNd<„Z:dOdC„Z;dDS )Pé    )Úannotations)ÚEnumÚauto)Úchain)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteralÚTypeVar)Úis_compliant_exprÚ
zip_strict)Úis_narwhals_seriesÚis_numpy_arrayÚis_numpy_array_1d)ÚInvalidOperationErrorÚMultiOutputExpressionError)ÚSequence)ÚNeverÚTypeIs)ÚCompliantExprÚCompliantFrameT)Ú
AliasNamesÚCompliantExprAnyÚCompliantFrameAnyÚCompliantNamespaceAnyÚ	EvalNames©ÚExpr©ÚSeries)ÚIntoExprÚNonNestedLiteralÚ_1DArrayÚTÚobjr   ÚreturnúTypeIs[Expr]c                ó.   — ddl m} t          | |¦  «        S )ú'Check whether `obj` is a Narwhals Expr.r   r   )Únarwhals.exprr   Ú
isinstance)r%   r   s     úS/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_expression_parsing.pyÚis_exprr-   #   s$   € à"Ð"Ð"Ð"Ð"Ð"å�c˜4Ñ Ô Ð ó    úTypeIs[Series[Any]]c                ó.   — ddl m} t          | |¦  «        S )r)   r   r   )Únarwhals.seriesr    r+   )r%   r    s     r,   Ú	is_seriesr2   *   s$   € à&Ð&Ð&Ð&Ð&Ð&å�c˜6Ñ"Ô"Ð"r.   ú+TypeIs[Expr | Series[Any] | str | _1DArray]c                óh   — ddl m} ddlm} t	          | ||t
          f¦  «        pt          | ¦  «        S )Nr   r   r   )r*   r   r1   r    r+   Ústrr   )r%   r   r    s      r,   Úis_into_expr_eagerr6   1   sK   € Ø"Ð"Ð"Ð"Ð"Ð"Ø&Ð&Ð&Ð&Ð&Ð&å�c˜F D­#Ð.Ñ/Ô/ÐIÕ3DÀSÑ3IÔ3IÐIr.   Úexprsú#CompliantExpr[CompliantFrameT, Any]úEvalNames[CompliantFrameT]c                 óŽ   ‡ — t          ‰ d         ¦  «        s(dt          ‰ d         ¦  «        › d�}t          |¦  «        ‚d	ˆ fd„}|S )
Nr   z3Safety assertion failed, expected expression, got: z. Please report a bug.Údfr   r&   úSequence[str]c                óJ   •— ‰d                               | ¦  «        d d…         S ©Nr   é   )Ú_evaluate_output_names)r;   r7   s    €r,   Úevaluate_output_namesz<combine_evaluate_output_names.<locals>.evaluate_output_namesA   s$   ø€ Ø�QŒx×.Ò.¨rÑ2Ô2°2°A°2Ô6Ð6r.   )r;   r   r&   r<   )r   ÚtypeÚAssertionError)r7   ÚmsgrA   s   `  r,   Úcombine_evaluate_output_namesrE   8   sg   ø€ õ
 ˜U 1œXÑ&Ô&ð "ØjÅDÈÈqÌÁNÄNÐjÐjÐjˆÝ˜SÑ!Ô!Ð!ð7ð 7ð 7ð 7ð 7ð 7ð !Ð r.   r   úAliasNames | Nonec                 ó2   ‡ — ‰ d         j         €d S dˆ fd„}|S )Nr   Únamesr<   r&   c                óJ   •— ‰d                               | ¦  «        d d…         S r>   ©Ú_alias_output_names)rH   r7   s    €r,   Úalias_output_namesz6combine_alias_output_names.<locals>.alias_output_namesM   s$   ø€ Ø�QŒx×+Ò+¨EÑ2Ô2°2°A°2Ô6Ð6r.   )rH   r<   r&   r<   rJ   )r7   rL   s   ` r,   Úcombine_alias_output_namesrM   G   s=   ø€ ð ˆQ„xÔ#Ð+Øˆtð7ð 7ð 7ð 7ð 7ð 7ð Ðr.   Úexprr;   r   Úexcluder<   ú#tuple[Sequence[str], Sequence[str]]c                ó  ‡— |                       |¦  «        }| j        €|n|                      |¦  «        }‰rM| j        €J ‚| j        j                             ¦   «         r&t          ˆfd„t          ||¦  «        D ¦   «         Ž \  }}||fS )Nc                ó&   •— g | ]\  }}|‰v¯	||f‘ŒS © rS   )Ú.0ÚxÚaliasrO   s      €r,   ú
<listcomp>z5evaluate_output_names_and_aliases.<locals>.<listcomp>`   s6   ø€ ð ð ð á ˜˜5Ø Ð'Ð'ð ˜�Jà'Ð'Ð'r.   )r@   rK   Ú	_metadataÚexpansion_kindÚis_multi_unnamedr   )rN   r;   rO   Úoutput_namesÚaliasess     `  r,   Ú!evaluate_output_names_and_aliasesr]   S   s½   ø€ ð ×.Ò.¨rÑ2Ô2€Lð Ô#Ð+ð 	ˆà×%Ò% lÑ3Ô3ð ð
 ð 	ØŒ~Ð)Ð)Ð)ØŒ>Ô(×9Ò9Ñ;Ô;ð 	Ý$.ðð ð ð å$.¨|¸WÑ$EÔ$Eðñ ô ð%Ñ!ˆL˜'ð ˜Ð Ð r.   c                  óN  — e Zd ZdZ e¦   «         Z	  e¦   «         Z	  e¦   «         Z	  e¦   «         Z	  e¦   «         Z		  e¦   «         Z
	  e¦   «         Z	  e¦   «         Z	  e¦   «         Z	  e¦   «         Z	 edd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )ÚExprKindz6Describe which kind of expression we are dealing with.r&   Úboolc                ó6   — | t           j        t           j        hv S ©N)r_   ÚLITERALÚAGGREGATION©Úselfs    r,   Úis_scalar_likezExprKind.is_scalar_likeŠ   s   € à�Ô(­(Ô*>Ð?Ð?Ð?r.   c                ó6   — | t           j        t           j        hv S rb   )r_   ÚORDERABLE_WINDOWÚORDERABLE_AGGREGATIONre   s    r,   Úis_orderable_windowzExprKind.is_orderable_windowŽ   s   € à�Ô1µ8Ô3QÐRÐRÐRr.   r%   r   c                óš   — |j         }|j        rt          j        S |j        rt          j        S |j        rt          j        S t          j        S rb   )	rX   Ú
is_literalr_   rc   rg   rd   Úis_elementwiseÚELEMENTWISEÚUNKNOWN)Úclsr%   Úmetas      r,   Ú	from_exprzExprKind.from_expr’   sM   € àŒ}ˆØŒ?ð 	$ÝÔ#Ð#ØÔð 	(ÝÔ'Ð'ØÔð 	(ÝÔ'Ð'ÝÔÐr.   ú&IntoExpr | NonNestedLiteral | _1DArrayÚ
str_as_litc               óä   — t          |¦  «        r|                      |¦  «        S t          |¦  «        s&t          |¦  «        st	          |t
          ¦  «        r|st          j        S t          j        S rb   )	r-   rs   r   r   r+   r5   r_   ro   rc   )rq   r%   ru   s      r,   Úfrom_into_exprzExprKind.from_into_expr�   sv   € õ �3‰<Œ<ð 	&Ø—=’= Ñ%Ô%Ð%å˜sÑ#Ô#ð	(å˜cÑ"Ô"ð	(õ ˜3¥Ñ$Ô$ð	(ð .8ð	(õ
 Ô'Ð'ÝÔÐr.   N©r&   r`   )r%   r   r&   r_   )r%   rt   ru   r`   r&   r_   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rc   rd   rj   ro   ri   ÚWINDOWÚ
FILTRATIONÚORDERABLE_FILTRATIONÚOVERrp   Úpropertyrg   rk   Úclassmethodrs   rw   rS   r.   r,   r_   r_   i   s/  € € € € € Ø@Ð@àˆd‰fŒf€GØà�$‘&”&€KØYà ˜D™FœFÐØXà�$‘&”&€KØgà�t‘v”vÐØHàˆT‰VŒV€FØNà�‘”€JØGà˜4™6œ6ÐØ=àˆ4‰6Œ6€DØ5àˆd‰fŒf€GØLàð@ð @ð @ñ „Xð@ð ðSð Sð Sñ „XðSð ð ð  ð  ñ „[ð ð ð ð  ð  ñ „[ð ð  ð  r.   r_   ú7TypeIs[Literal[ExprKind.LITERAL, ExprKind.AGGREGATION]]c                ó   — | j         S rb   ©rg   )r%   s    r,   rg   rg   ¬   s   € ð ÔÐr.   c                  ól   — e Zd ZdZ e¦   «         Z	  e¦   «         Z	  e¦   «         Z	 d
d„Zd
d„Z	dd„Z
d	S )ÚExpansionKindz8Describe what kind of expansion the expression performs.r&   r`   c                ó   — | t           j        u S rb   )r‡   ÚMULTI_UNNAMEDre   s    r,   rZ   zExpansionKind.is_multi_unnamed¾   s   € Ø•}Ô2Ð2Ð2r.   c                ó6   — | t           j        t           j        hv S rb   )r‡   ÚMULTI_NAMEDr‰   re   s    r,   Úis_multi_outputzExpansionKind.is_multi_outputÁ   s   € Ø�Ô1µ=Ô3NÐOÐOÐOr.   Úotherú$Literal[ExpansionKind.MULTI_UNNAMED]c                ó‚   — | t           j        u r|t           j        u rt           j        S d| › d|› d�}t          |¦  «        ‚)Nz+Unsupported ExpansionKind combination, got z and z, please report a bug.)r‡   r‰   rC   )rf   r�   rD   s      r,   Ú__and__zExpansionKind.__and__Ä   sL   € Ø•=Ô.Ð.Ð.°5½MÔ<WÐ3WÐ3Wå Ô.Ð.àd¸DÐdÐdÀuÐdÐdÐdˆÝ˜SÑ!Ô!Ð!r.   Nrx   )r�   r‡   r&   rŽ   )ry   rz   r{   r|   r   ÚSINGLEr‹   r‰   rZ   rŒ   r�   rS   r.   r,   r‡   r‡   ²   s„   € € € € € ØBÐBàˆT‰VŒV€FØ9à�$‘&”&€KØ!à�D‘F”F€MØ'ð3ð 3ð 3ð 3ðPð Pð Pð Pð"ð "ð "ð "ð "ð "r.   r‡   c                  óF  — e Zd ZdZdZdddddddœd4d„Zd5d„Zd6d„Zed7d„¦   «         Z	d8d„Z
d8d„Zd8d „Zd8d!„Zd8d"„Zd8d#„Zd8d$„Zd8d%„Zd8d&„Zed8d'„¦   «         Zed8d(„¦   «         Zed8d)„¦   «         Zed8d*„¦   «         Zed8d+„¦   «         Zed9d0„¦   «         Zed:d2„¦   «         Zd3S );ÚExprMetadataaã  Expression metadata.

    Parameters:
        expansion_kind: What kind of expansion the expression performs.
        has_windows: Whether it already contains window functions.
        is_elementwise: Whether it can operate row-by-row without context
            of the other rows around it.
        is_literal: Whether it is just a literal wrapped in an expression.
        is_scalar_like: Whether it is a literal or an aggregation.
        last_node: The ExprKind of the last node.
        n_orderable_ops: The number of order-dependent operations. In the
            lazy case, this number must be `0` by the time the expression
            is evaluated.
        preserves_length: Whether the expression preserves the input length.
    )rY   Úhas_windowsrn   rm   rg   Ú	last_nodeÚn_orderable_opsÚpreserves_lengthFr   T©r”   r–   r—   rn   rg   rm   rY   r‡   r•   r_   r”   r`   r–   Úintr—   rn   rg   rm   r&   ÚNonec               óŽ   — |r|sJ ‚|r|sJ ‚|| _         || _        || _        || _        || _        || _        || _        || _        d S rb   ©rY   r•   r”   r–   rn   r—   rg   rm   )	rf   rY   r•   r”   r–   r—   rn   rg   rm   s	            r,   Ú__init__zExprMetadata.__init__é   sn   € ð ð 	"Ø!Ð!Ð!Ð!Øð 	$Ø#Ð#Ð#Ð#Ø-;ˆÔØ#,ˆŒØ!,ˆÔØ$3ˆÔØ$2ˆÔØ&6ˆÔØ$2ˆÔØ *ˆŒˆˆr.   Úargsr   Úkwdsr   c               ó4   — d| j         ›�}t          |¦  «        ‚)NzCannot subclass )ry   Ú	TypeError)rq   rž   rŸ   rD   s       r,   Ú__init_subclass__zExprMetadata.__init_subclass__  s   € Ø1 ¤Ð1Ð1ˆÝ˜‰nŒnÐr.   r5   c                óˆ   — d| j         › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › d	�S )
Nz ExprMetadata(
  expansion_kind: z,
  last_node: z,
  has_windows: z,
  n_orderable_ops: z,
  is_elementwise: z,
  preserves_length: z,
  is_scalar_like: z,
  is_literal: z,
)rœ   re   s    r,   Ú__repr__zExprMetadata.__repr__  s›   € ð	Ø!%Ô!4ð	ð 	à œNð	ð 	ð #Ô.ð	ð 	ð #'Ô"6ð		ð 	ð
 "&Ô!4ð	ð 	ð $(Ô#8ð	ð 	ð "&Ô!4ð	ð 	ð "œ_ð	ð 	ð 	ð	
r.   c                ó"   — | j          o| j         S rb   )r—   rg   re   s    r,   Úis_filtrationzExprMetadata.is_filtration  s   € àÔ(Ð(ÐD°Ô1DÐ-DÐDr.   c           
     ó’   — | j         rd}t          |¦  «        ‚t          | j        t          j        | j        | j        dddd¬¦  «        S )Nú4Can't apply aggregations to scalar-like expressions.FTr˜   )rg   r   r“   rY   r_   rd   r”   r–   ©rf   rD   s     r,   Úwith_aggregationzExprMetadata.with_aggregation  s[   € ØÔð 	-ØHˆCÝ'¨Ñ,Ô,Ð,ÝØÔÝÔ ØÔ(Ø Ô0Ø"Ø ØØð	
ñ 	
ô 	
ð 		
r.   c           
     ó˜   — | j         rd}t          |¦  «        ‚t          | j        t          j        | j        | j        dz   dddd¬¦  «        S )Nr¨   r?   FTr˜   )rg   r   r“   rY   r_   rj   r”   r–   r©   s     r,   Úwith_orderable_aggregationz'ExprMetadata.with_orderable_aggregation'  s`   € àÔð 	-ØHˆCÝ'¨Ñ,Ô,Ð,ÝØÔÝÔ*ØÔ(Ø Ô0°1Ñ4Ø"Ø ØØð	
ñ 	
ô 	
ð 		
r.   c           
     óŠ   — t          | j        t          j        | j        | j        | j        | j        | j        | j	        ¬¦  «        S )Nr˜   )
r“   rY   r_   ro   r”   r–   r—   rn   rg   rm   re   s    r,   Úwith_elementwise_opz ExprMetadata.with_elementwise_op7  sH   € ÝØÔÝÔ ØÔ(Ø Ô0Ø!Ô2ØÔ.ØÔ.Ø”ð	
ñ 	
ô 	
ð 		
r.   c           
     óœ   — | j         rd}t          |¦  «        ‚t          | j        t          j        | j        | j        | j        ddd¬¦  «        S )Nz;Can't apply window (e.g. `rank`) to scalar-like expression.Fr˜   )	rg   r   r“   rY   r_   r}   r”   r–   r—   r©   s     r,   Úwith_windowzExprMetadata.with_windowC  s_   € àÔð 	-ØOˆCÝ'¨Ñ,Ô,Ð,ÝØÔÝŒOØÔ(ð !Ô0Ø!Ô2Ø Ø Øð
ñ 
ô 
ð 	
r.   c           
     ó¢   — | j         rd}t          |¦  «        ‚t          | j        t          j        | j        | j        dz   | j        ddd¬¦  «        S )NzNCan't apply orderable window (e.g. `diff`, `shift`) to scalar-like expression.r?   Fr˜   )	rg   r   r“   rY   r_   ri   r”   r–   r—   r©   s     r,   Úwith_orderable_windowz"ExprMetadata.with_orderable_windowU  sc   € àÔð 	-ØbˆCÝ'¨Ñ,Ô,Ð,ÝØÔÝÔ%ØÔ(Ø Ô0°1Ñ4Ø!Ô2Ø Ø Øð	
ñ 	
ô 	
ð 		
r.   c           
     ó8  — | j         rd}t          |¦  «        ‚| j        s| j        rd}t          |¦  «        ‚| j        }|s$| j        t          j        urd}t          |¦  «        ‚| j        j        r|dz  }t          | j
        t          j        d|dddd¬¦  «        S )NúCannot nest `over` statements.úoCannot use `over` on expressions which are elementwise
(e.g. `abs`) or which change length (e.g. `drop_nulls`).aP  Cannot use `order_by` in `over` on expression which isn't orderable.
If your expression is orderable, then make sure that `over(order_by=...)`
comes immediately after the order-dependent expression.

Hint: instead of
  - `(nw.col('price').diff() + 1).over(order_by='date')`
write:
  + `nw.col('price').diff().over(order_by='date') + 1`
r?   TFr˜   )r”   r   rn   r¦   r–   r•   r_   r}   rk   r“   rY   r€   )rf   rD   r–   s      r,   Úwith_ordered_overzExprMetadata.with_ordered_overe  sÔ   € ØÔð 	-Ø2ˆCÝ'¨Ñ,Ô,Ð,ØÔð 	- $Ô"4ð 	-ðKð õ (¨Ñ,Ô,Ð,ØÔ.ˆØð 
	- 4¤>½¼Ð#HÐ#HðKð õ (¨Ñ,Ô,Ð,ØŒ>Ô-ð 	!Ø˜qÑ ˆOÝØÔÝŒMØØ+Ø!Ø Ø Øð	
ñ 	
ô 	
ð 		
r.   c           
     óÆ   — | j         rd}t          |¦  «        ‚| j        s| j        rd}t          |¦  «        ‚t	          | j        t          j        d| j        dddd¬¦  «        S )Nr´   rµ   TFr˜   )	r”   r   rn   r¦   r“   rY   r_   r€   r–   r©   s     r,   Úwith_partitioned_overz"ExprMetadata.with_partitioned_overˆ  s‡   € ØÔð 	-Ø2ˆCÝ'¨Ñ,Ô,Ð,ØÔð 	- $Ô"4ð 	-ðKð õ (¨Ñ,Ô,Ð,ÝØÔÝŒMØØ Ô0Ø!Ø Ø Øð	
ñ 	
ô 	
ð 		
r.   c           
     ó’   — | j         rd}t          |¦  «        ‚t          | j        t          j        | j        | j        dddd¬¦  «        S )NúECan't apply filtration (e.g. `drop_nulls`) to scalar-like expression.Fr˜   )rg   r   r“   rY   r_   r~   r”   r–   r©   s     r,   Úwith_filtrationzExprMetadata.with_filtration�  s[   € ØÔð 	-ØYˆCÝ'¨Ñ,Ô,Ð,ÝØÔÝÔØÔ(Ø Ô0Ø"Ø Ø Øð	
ñ 	
ô 	
ð 		
r.   c           
     ó˜   — | j         rd}t          |¦  «        ‚t          | j        t          j        | j        | j        dz   dddd¬¦  «        S )Nrº   r?   Fr˜   )rg   r   r“   rY   r_   r   r”   r–   r©   s     r,   Úwith_orderable_filtrationz&ExprMetadata.with_orderable_filtration¬  s`   € ØÔð 	-ØYˆCÝ'¨Ñ,Ô,Ð,ÝØÔÝÔ)ØÔ(Ø Ô0°1Ñ4Ø"Ø Ø Øð	
ñ 	
ô 	
ð 		
r.   c                 óR   — t          t          j        t          j        ddd¬¦  «        S )NFT)rn   r—   rg   )r“   r‡   r‘   r_   rd   rS   r.   r,   ÚaggregationzExprMetadata.aggregation»  s.   € åÝÔ ÝÔ Ø Ø"Øð
ñ 
ô 
ð 	
r.   c                 óT   — t          t          j        t          j        dddd¬¦  «        S )NFT)rn   r—   rm   rg   )r“   r‡   r‘   r_   rc   rS   r.   r,   ÚliteralzExprMetadata.literalÅ  s1   € åÝÔ ÝÔØ Ø"ØØð
ñ 
ô 
ð 	
r.   c                 óJ   — t          t          j        t          j        ¦  «        S rb   )r“   r‡   r‘   r_   ro   rS   r.   r,   Úselector_singlezExprMetadata.selector_singleÐ  s   € õ �MÔ0µ(Ô2FÑGÔGÐGr.   c                 óJ   — t          t          j        t          j        ¦  «        S rb   )r“   r‡   r‹   r_   ro   rS   r.   r,   Úselector_multi_namedz!ExprMetadata.selector_multi_namedÕ  s   € õ �MÔ5µxÔ7KÑLÔLÐLr.   c                 óJ   — t          t          j        t          j        ¦  «        S rb   )r“   r‡   r‰   r_   ro   rS   r.   r,   Úselector_multi_unnamedz#ExprMetadata.selector_multi_unnamedÚ  s   € õ �MÔ7½Ô9MÑNÔNÐNr.   Úlhsr   Úrhsr!   c               ó*   — t          ||ddd¬¦  «        S )NTF©ru   Úallow_multi_outputÚto_single_output©Úcombine_metadata)rq   rÈ   rÉ   s      r,   Úfrom_binary_opzExprMetadata.from_binary_opß  s'   € õ  Ø� ¸%ÐRWð
ñ 
ô 
ð 	
r.   r7   c                ó   — t          |ddddœŽS )NFTrË   rÎ   )rq   r7   s     r,   Úfrom_horizontal_opzExprMetadata.from_horizontal_opç  s#   € åØ˜u¸ÐPTð
ð 
ð 
ð 	
r.   N)rY   r‡   r•   r_   r”   r`   r–   r™   r—   r`   rn   r`   rg   r`   rm   r`   r&   rš   )rž   r   rŸ   r   r&   r   )r&   r5   rx   )r&   r“   )rÈ   r   rÉ   r!   r&   r“   )r7   r!   r&   r“   )ry   rz   r{   r|   Ú	__slots__r�   r¢   r¤   r�   r¦   rª   r¬   r®   r°   r²   r¶   r¸   r»   r½   Ústaticmethodr¿   rÁ   rÃ   rÅ   rÇ   r‚   rÐ   rÒ   rS   r.   r,   r“   r“   Í   sD  € € € € € ðð ð 	€Ið  "Ø Ø!%Ø#Ø$Ø ð+ð +ð +ð +ð +ð +ð2ð ð ð ð
ð 
ð 
ð 
ð ðEð Eð Eñ „XðEð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð 

ð 

ð 

ð 

ð
ð 
ð 
ð 
ð$
ð 
ð 
ð 
ð !
ð !
ð !
ð !
ðF
ð 
ð 
ð 
ð*
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð ð
ð 
ð 
ñ „\ð
ð ð
ð 
ð 
ñ „\ð
ð ðHð Hð Hñ „\ðHð ðMð Mð Mñ „\ðMð ðOð Oð Oñ „\ðOð ð
ð 
ð 
ñ „[ð
ð ð
ð 
ð 
ñ „[ð
ð 
ð 
r.   r“   rž   úIntoExpr | object | Noneru   r`   rÌ   rÍ   c           
     ó¶  — d}t           j        }d}d}d}d}	d}
d}t          |¦  «        D ]ã\  }}t          |t          ¦  «        r| rt          |¦  «        rd}d}
d}Œ2t          |¦  «        r¢|j        }|j         	                    ¦   «         r/|j        }|dk    r|sd}t          |¦  «        ‚|s|dk    r||z  n|}||j        z  }||j        z  }||j        z  }|	|j        z  }	|
|j        z  }
||j        z  }|t#          |j        ¦  «        z  }Œä|dk    rd}t'          |¦  «        ‚|r|rd}t'          |¦  «        ‚t)          |t*          j        ||||	|
|¬¦  «        S )	a�  Combine metadata from `args`.

    Arguments:
        args: Arguments, maybe expressions, literals, or Series.
        str_as_lit: Whether to interpret strings as literals or as column names.
        allow_multi_output: Whether to allow multi-output inputs.
        to_single_output: Whether the result is always single-output, regardless
            of the inputs (e.g. `nw.sum_horizontal`).
    r   FTz]Multi-output expressions (e.g. nw.col('a', 'b'), nw.all()) are not supported in this context.r?   zXLength-changing expressions can only be used in isolation, or followed by an aggregationzVCannot combine length-changing expressions with length-preserving ones or aggregationsr˜   )r‡   r‘   Ú	enumerater+   r5   r2   r-   rX   rY   rŒ   r   r”   r–   r—   rn   rg   rm   r™   r¦   r   r“   r_   ro   )ru   rÌ   rÍ   rž   Ún_filtrationsÚresult_expansion_kindÚresult_has_windowsÚresult_n_orderable_opsÚresult_preserves_lengthÚresult_is_elementwiseÚresult_is_scalar_likeÚresult_is_literalÚiÚargÚmetadatarY   rD   s                    r,   rÏ   rÏ   î  sì  € ð €MÝ)Ô0ÐØÐØÐà#Ðà Ðà ÐàÐå˜D‘/”/ð 9ð 9‰ˆˆ3Ý�s�CÑ Ô ð 	9¨ð 	9½	À#¹¼ð 	9Ø&*Ð#Ø$)Ð!Ø %ÐÐÝ�S‰\Œ\ð 	9Ø”}ˆHØÔ&×6Ò6Ñ8Ô8ð Ø!)Ô!8�Ø�q’5�5Ð!3�5ð=ð õ 5°SÑ9Ô9Ð9Ø'ð ð ˜qš5˜5ð .°Ñ>Ð>à+ð *ð  (Ô"6Ñ6ÐØ" hÔ&>Ñ>Ð"Ø# xÔ'@Ñ@Ð#Ø! XÔ%<Ñ<Ð!Ø! XÔ%<Ñ<Ð!Ø Ô!4Ñ4ÐØ�S Ô!7Ñ8Ô8Ñ8ˆMøà�qÒÐØhˆÝ# CÑ(Ô(Ð(Øð ) =ð )ØfˆÝ# CÑ(Ô(Ð(åØåÔØ&Ø.Ø0Ø,Ø,Ø$ð
ñ 
ô 
ð 
r.   r!   Úfunction_namer5   rš   c                ót   ‡— ddl mŠ t          ˆfd„|D ¦   «         ¦  «        sd| › d�}t          |¦  «        ‚d S )Nr   r   c              3  ó|   •K  — | ]6}t          |¦  «        r|j        j        pt          |t          ‰f¦  «        V — Œ7d S rb   )r-   rX   r—   r+   r5   )rT   rU   r    s     €r,   ú	<genexpr>z4check_expressions_preserve_length.<locals>.<genexpr>C  sZ   øè è € ð ð àõ 
�‰ŒÐ	4˜œÔ4ÐU½ÀAÍÈVÀ}Ñ9UÔ9Uðð ð ð ð ð r.   zBExpressions which aggregate or change length cannot be passed to 'z'.)r1   r    Úallr   )rã   rž   rD   r    s      @r,   Ú!check_expressions_preserve_lengthrè   =  s{   ø€ ð 'Ð&Ð&Ð&Ð&Ð&åð ð ð ð àðñ ô ñ ô ð )ð eÐS`ÐdÐdÐdˆÝ# CÑ(Ô(Ð(ð)ð )r.   Úkwargsc                 óx   — t          | |                     ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        S )Nc              3  óL   K  — | ]}t          |¦  «        o|j        j        V — Œ d S rb   )r-   rX   rg   )rT   rU   s     r,   ræ   z,all_exprs_are_scalar_like.<locals>.<genexpr>P  s2   è è € ÐHÐH¸Q�w�q‰zŒzÐ8˜aœkÔ8ÐHÐHÐHÐHÐHÐHr.   )r   Úvaluesrç   )rž   ré   r7   s      r,   Úall_exprs_are_scalar_likerí   K  s8   € õ �$˜Ÿš™œÑ(Ô(€EÝÐHÐHÀ%ÐHÑHÔHÑHÔHÐHr.   Úplxr   Ún_ary_functionúCallable[..., CompliantExprAny]Ú
comparandsrt   c               óÄ   ‡‡‡— | j         Šˆˆfd„|D ¦   «         }ˆfd„|D ¦   «         }t          d„ |D ¦   «         ¦  «        Šˆfd„t          ||¦  «        D ¦   «         } ||Ž S )Nc              3  ó2   •K  — | ]} ‰|‰¬ ¦  «        V — ŒdS )©ru   NrS   )rT   ÚintoÚparseru   s     €€r,   ræ   z(apply_n_ary_operation.<locals>.<genexpr>Z  s2   øè è € ÐQÐQ¸d�u�u˜T¨jÐ9Ñ9Ô9ÐQÐQÐQÐQÐQÐQr.   c                óH   •— g | ]}t                                |‰¬ ¦  «        ‘ŒS )rô   )r_   rw   )rT   Ú	comparandru   s     €r,   rW   z)apply_n_ary_operation.<locals>.<listcomp>[  s<   ø€ ð ð ð àõ 	×Ò 	°jÐÑAÔAðð ð r.   c              3  ó&   K  — | ]}|j          V — Œd S rb   r…   )rT   Úkinds     r,   ræ   z(apply_n_ary_operation.<locals>.<genexpr>`  s(   è è € Ð>Ð>°˜Ô+Ð+Ð>Ð>Ð>Ð>Ð>Ð>r.   c              3  óŒ   •K  — | ]>\  }}‰r3t          |¦  «        r$t          |¦  «        r|                     |¦  «        n|V — Œ?d S rb   )r   rg   Ú	broadcast)rT   Úcompliant_exprrú   rü   s      €r,   ræ   z(apply_n_ary_operation.<locals>.<genexpr>a  sx   øè è € ð ð ñ !ˆN˜Dð ð	Ý*¨>Ñ:Ô:ð	Ý?MÈdÑ?SÔ?Sð	ˆ× Ò  Ñ&Ô&Ð&àðð ð ð ð ð r.   )Úparse_into_exprÚanyr   )rî   rï   ru   rñ   Úcompliant_exprsÚkindsrü   rö   s     `   @@r,   Úapply_n_ary_operationr  S  s´   øøø€ ð Ô€EØQÐQÐQÐQÐQÀjÐQÑQÔQ€Oðð ð ð à#ðñ ô €Eõ
 Ð>Ð>¸Ð>Ñ>Ô>Ñ>Ô>€Iðð ð ð õ %/¨ÀÑ$FÔ$Fð	ñ ô €Oð ˆ>˜?Ð+Ð+r.   N)r%   r   r&   r'   )r%   r   r&   r/   )r%   r   r&   r3   )r7   r8   r&   r9   )r7   r   r&   rF   )rN   r   r;   r   rO   r<   r&   rP   )r%   r_   r&   rƒ   )
rž   rÕ   ru   r`   rÌ   r`   rÍ   r`   r&   r“   )rž   r!   rã   r5   r&   rš   )rž   r!   ré   r!   r&   r`   )
rî   r   rï   rð   rñ   rt   ru   r`   r&   r   )<Ú
__future__r   Úenumr   r   Ú	itertoolsr   Útypingr   r   r	   r
   r   Únarwhals._utilsr   r   Únarwhals.dependenciesr   r   r   Únarwhals.exceptionsr   r   Úcollections.abcr   Útyping_extensionsr   r   Únarwhals._compliantr   r   Únarwhals._compliant.typingr   r   r   r   r   r*   r   r1   r    Únarwhals.typingr!   r"   r#   r$   r-   r2   r6   rE   rM   r]   r_   rg   r‡   r“   rÏ   rè   rí   r  rS   r.   r,   ú<module>r     s  ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WØ QÐ QÐ QÐ QÐ QÐ QÐ QÐ Qàð Ø(Ð(Ð(Ð(Ð(Ð(à/Ð/Ð/Ð/Ð/Ð/Ð/Ð/àBÐBÐBÐBÐBÐBÐBÐBðð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð"Ð"Ð"Ð"Ð"Ø&Ð&Ð&Ð&Ð&Ð&ØDÐDÐDÐDÐDÐDÐDÐDÐDÐDàˆ�‰Œ€Að!ð !ð !ð !ð#ð #ð #ð #ðJð Jð Jð Jð!ð !ð !ð !ð	ð 	ð 	ð 	ð!ð !ð !ð !ð,@ ð @ ð @ ð @ ð @ ˆtñ @ ô @ ð @ ðFð ð ð ð"ð "ð "ð "ð "�Dñ "ô "ð "ð6^
ð ^
ð ^
ð ^
ð ^
ñ ^
ô ^
ð ^
ðB	Lð Lð Lð Lð^)ð )ð )ð )ðIð Ið Ið Ið,ð ,ð ,ð ,ð ,ð ,r.   