Ë
    ðmxiÞ€  ã                  ó6  — U d dl 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r<d dlmZ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) d,d„Z*d-d„Z+	 	 	 	 d.d„Z,d/d„Z-	 	 	 	 	 	 	 	 d0d„Z. G d„ de«      Z/d1d„Z0 G d„ de«      Z1 G d„ d«      Z2 G d„ d«      Z3e/jh                  e3jj                  e/jl                  e3jn                  e/jp                  e3jr                  e/jt                  e3jn                  e/jv                  e3jx                  e/jz                  e3j|                  e/j~                  e3j€                  e/j‚                  e3j„                  e/j†                  e3jn                  i	ZDdeEd<   e/jh                  e3jŒ                  e/jp                  e3jŽ                  e/j�                  e3j’                  e/j”                  e3j–                  e/j˜                  e3jš                  e/jœ                  e3jž                  e/j                   e3j¢                  e/j¤                  e3j¦                  iZTdeEd<   	 	 	 	 	 	 	 	 	 	 d2d „ZU	 	 	 	 	 	 d3d!„ZVd"d#d$d%œ	 	 	 	 	 	 	 	 	 d4d&„ZW	 	 	 	 	 	 	 	 	 	 d5d'„ZXd6d(„ZYd7d)„ZZ	 	 	 	 	 	 	 	 d8d*„Z[	 	 	 	 	 	 d9d+„Z\y#):é    )Úannotations)ÚEnumÚauto)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteralÚcast)Ú
zip_strict)Úis_numpy_array_1d)ÚInvalidIntoExprErrorÚInvalidOperationErrorÚMultiOutputExpressionError)ÚIteratorÚSequence)ÚNeverÚTypeIs)ÚCompliantExprÚCompliantFrameT)Ú
AliasNamesÚCompliantExprAnyÚCompliantFrameAnyÚCompliantNamespaceAnyÚ	EvalNames©ÚExpr©ÚSeries)ÚIntoExprÚNonNestedLiteralÚ_1DArrayc                ó&   — ddl m} t        | |«      S )ú'Check whether `obj` is a Narwhals Expr.r   r   )Únarwhals.exprr   Ú
isinstance)Úobjr   s     úS/home/htdocs/ttos/venv/lib/python3.12/site-packages/narwhals/_expression_parsing.pyÚis_exprr(   $   s   € å"ä�c˜4Ó Ð ó    c                ó&   — ddl m} t        | |«      S )r#   r   r   )Únarwhals.seriesr   r%   )r&   r   s     r'   Ú	is_seriesr,   +   s   € å&ä�c˜6Ó"Ð"r)   c                 ó   ‡ — dˆ fd„}|S )Nc                ó2   •— ‰d   j                  | «      d d S ©Nr   é   )Ú_evaluate_output_names)ÚdfÚexprss    €r'   Úevaluate_output_namesz<combine_evaluate_output_names.<locals>.evaluate_output_names7   s   ø€ Ø�Q‰x×.Ñ.¨rÓ2°2°AÐ6Ð6r)   )r2   r   ÚreturnúSequence[str]© )r3   r4   s   ` r'   Úcombine_evaluate_output_namesr8   2   s   ø€ õ
7ð !Ð r)   c                 ó4   ‡ — ‰ d   j                   €y dˆ fd„}|S )Nr   c                ó2   •— ‰d   j                  | «      d d S r/   ©Ú_alias_output_names)Únamesr3   s    €r'   Úalias_output_namesz6combine_alias_output_names.<locals>.alias_output_namesC   s   ø€ Ø�Q‰x×+Ñ+¨EÓ2°2°AÐ6Ð6r)   )r=   r6   r5   r6   r;   )r3   r>   s   ` r'   Úcombine_alias_output_namesr?   =   s%   ø€ ð ˆQ�x×#Ñ#Ð+Øõ7ð Ðr)   c                ó  — | j                  |«      }| j                  €|n| j                  |«      }|rR| j                  j                  j	                  «       r.t        t        ||«      D ��cg c]  \  }}||vr||f‘Œ c}}Ž \  }}||fS c c}}w ©N)r1   r<   Ú	_metadataÚexpansion_kindÚis_multi_unnamedr   )Úexprr2   ÚexcludeÚoutput_namesÚaliasesÚxÚaliass          r'   Ú!evaluate_output_names_and_aliasesrK   I   s¤   € ð ×.Ñ.¨rÓ2€Lð ×#Ñ#Ð+ñ 	à×%Ñ% lÓ3ð ñ
 �4—>‘>×0Ñ0×AÑAÔCÜ *ô !+¨<¸Ó A÷á�A�uØ˜GÑ#ð �E’
óð!
Ñˆ�gð ˜Ð Ð ùós   Á+B	
c                  óF  — 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«       Z	  e«       Z	  e«       Z	  e«       Z	  e«       Z	  e«       Z	 edd„«       Zedd„«       Zedd„«       Zy)ÚExprKindz6Describe which kind of expression we are dealing with.c                ó‚   — | t         j                  t         j                  t         j                  t         j                  hv S rA   )rM   ÚORDERABLE_WINDOWÚWINDOWÚORDERABLE_AGGREGATIONÚORDERABLE_FILTRATION©Úselfs    r'   Úis_orderablezExprKind.is_orderable�   s8   € ð Ü×%Ñ%Ü�O‰OÜ×*Ñ*Ü×)Ñ)ð	
ð 
ð 	
r)   c           
     ó  — | t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  h	v S rA   )
rM   ÚALLÚCOLÚELEMENTWISEÚEXCLUDEÚLITERALÚNTHÚSELECTORÚSERIESÚ	WHEN_THENrS   s    r'   Úis_elementwisezExprKind.is_elementwise›   s_   € ð Ü�L‰LÜ�L‰LÜ× Ñ Ü×ÑÜ×ÑÜ�L‰LÜ×ÑÜ�O‰OÜ×Ñð

ð 

ð 
	
r)   c                ód   — | t         j                  t         j                  t         j                  hv S rA   )rM   ÚAGGREGATIONr[   rQ   rS   s    r'   Úis_scalar_likezExprKind.is_scalar_like«   s/   € àÜ× Ñ Ü×ÑÜ×*Ñ*ð
ð 
ð 	
r)   N©r5   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r[   rb   rQ   rY   rO   rP   Ú
FILTRATIONrR   ÚOVERrX   r\   rZ   rW   r]   r_   r^   ÚpropertyrU   r`   rc   r7   r)   r'   rM   rM   ]   sâ   „ Ù@á‹f€GØá“&€KØYá ›FÐØXá“&€KØgá“vÐØHá‹V€FØNá“€JØGá›6ÐØ=á‹6€DØ5á
‹&€CØ(á
‹&€CØ(á‹f€GØ,á
‹&€CØ(á‹v€HØ>á“€IØPá‹V€FØ3àò
ó ð
ð ò
ó ð
ð ò
ó ñ
r)   rM   c                ó.   — | j                   j                  S rA   )rB   rc   )r&   s    r'   rc   rc   ´   s   € Ø�=‰=×'Ñ'Ð'r)   c                  óX   — e Zd ZdZ e«       Z	  e«       Z	  e«       Z	 dd„Zdd„Z	dd„Z
y)ÚExpansionKindz8Describe what kind of expansion the expression performs.c                ó&   — | t         j                  u S rA   ©ro   ÚMULTI_UNNAMEDrS   s    r'   rD   zExpansionKind.is_multi_unnamedÄ   s   € Ø”}×2Ñ2Ð2Ð2r)   c                óF   — | t         j                  t         j                  hv S rA   )ro   ÚMULTI_NAMEDrr   rS   s    r'   Úis_multi_outputzExpansionKind.is_multi_outputÇ   s   € Øœ×1Ñ1´=×3NÑ3NÐOÐOÐOr)   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.)ro   rr   ÚAssertionError)rT   ÚotherÚmsgs      r'   Ú__and__zExpansionKind.__and__Ê   sI   € Ø”=×.Ñ.Ñ.°5¼M×<WÑ<WÑ3Wä ×.Ñ.Ð.à;¸D¸6ÀÀuÀgÐMcÐdˆÜ˜SÓ!Ð!r)   Nrd   )rx   ro   r5   z$Literal[ExpansionKind.MULTI_UNNAMED])rf   rg   rh   ri   r   ÚSINGLErt   rr   rD   ru   rz   r7   r)   r'   ro   ro   ¸   s3   „ ÙBá‹V€FØ9á“&€KØ!á“F€MØ'ó3óPô"r)   ro   c                  óv   — e Zd ZdZdddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 dd„Zdd	„Z	dd
„Z
y)ÚExprNodeaã  An operation to create or modify an expression.

    Parameters:
        kind: ExprKind of operation.
        name: Name of function, as defined in the compliant protocols.
        exprs: Expressifiable arguments to function.
        str_as_lit: Whether to interpret strings as literals when they
            are present in `exprs`.
        allow_multi_output: Whether to allow any of `exprs` to be multi-output.
        kwargs: Other (non-expressifiable) arguments to function.
    F)Ú
str_as_litÚallow_multi_outputc              ót   — || _         || _        || _        || _        || _        || _        d | _        d | _        y rA   )ÚkindÚnamer3   Úkwargsr~   r   Ú_is_orderable_cachedÚ_is_elementwise_cached)rT   r�   r‚   r~   r   r3   rƒ   s          r'   Ú__init__zExprNode.__init__à   sA   € ð #ˆŒ	ØˆŒ	Ø<AˆŒ
Ø&,ˆŒØ *ˆŒØ(:ˆÔð 26ˆÔ!Ø37ˆÕ#r)   c                óÔ  — | j                   dk(  r+dj                  d„ | j                  d   D «       «      }d|› d�S g }dj                  d„ | j                  D «       «      }dj                  d„ | j                  j	                  «       D «       «      }| j                  r|j                  |«       | j                  r|j                  |«       | j                   › d	dj                  |«      › d�S )
NÚcolz, c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrA   ©Ústr©Ú.0rI   s     r'   ú	<genexpr>z$ExprNode.__repr__.<locals>.<genexpr>÷   s   è ø€ ÒC¨œc !ŸfÑCùó   ‚r=   zcol(ú)c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrA   rŠ   rŒ   s     r'   rŽ   z$ExprNode.__repr__.<locals>.<genexpr>ú   s   è ø€ Ò9¨œc !ŸfÑ9ùr�   c              3  ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)ú=Nr7   )r�   ÚkeyÚvalues      r'   rŽ   z$ExprNode.__repr__.<locals>.<genexpr>û   s   è ø€ ÒW±Z°S¸% 3 % q¨¨Ô 0ÑWùs   ‚ú()r‚   Újoinrƒ   r3   ÚitemsÚappend)rT   r=   Úarg_strÚ	expr_reprÚkwargs_reprs        r'   Ú__repr__zExprNode.__repr__õ   s¾   € Ø�9‰9˜ÒØ—I‘IÑC¨d¯k©k¸'Ñ.BÔCÓCˆEØ˜%˜ �?Ð"ØˆØ—I‘IÑ9¨d¯j©jÔ9Ó9ˆ	Ø—i‘iÑWÀ4Ç;Á;×CTÑCTÓCVÔWÓWˆØ�:Š:Ø�N‰N˜9Ô%Ø�;Š;Ø�N‰N˜;Ô'Ø—)‘)�˜A˜dŸi™i¨Ó0Ð1°Ð3Ð3r)   c                óŒ   — | j                   | j                  | j                  | j                  | j                  | j
                  dœS )N©r�   r‚   r3   rƒ   r~   r   rŸ   rS   s    r'   Úas_dictzExprNode.as_dict  s:   € ð —I‘IØ—I‘IØ—Z‘ZØ—k‘kØŸ/™/Ø"&×"9Ñ"9ñ
ð 	
r)   c                ó„   —  | j                   | j                  | j                  g| j                  ¢­d| j                  i|¤ŽS )Nr~   )Ú	__class__r�   r‚   r3   r~   )rT   rƒ   s     r'   Ú_with_kwargszExprNode._with_kwargs  sB   € Øˆt�~‰~Ø�I‰I�t—y‘yð
Ø#'§:¡:ò
Ø:>¿/¹/ð
ØMSñ
ð 	
r)   c                óÌ  — g }|j                   d   }|j                   d   }| j                  D ]®  }t        |«      s|j                  |«       Œ |r=t	        d„ |j
                  D «       «      r!|j                  |j                  |«      «       Œ_|r=t        d„ |j
                  D «       «      s!|j                  |j                  |«      «       Œž|j                  |«       Œ° || _        y )NÚorder_byÚpartition_byc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrA   ©rU   ©r�   Ú	expr_nodes     r'   rŽ   z9ExprNode._push_down_over_node_in_place.<locals>.<genexpr>  s   è ø€ ò ,Ø-6�	×&Ñ&×(ñ,ùó   ‚c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrA   ©r`   r©   s     r'   rŽ   z9ExprNode._push_down_over_node_in_place.<locals>.<genexpr>!  s   è ø€ ò 4Ø/8�	×(Ñ(×*ñ4ùr«   )rƒ   r3   r(   r™   ÚanyÚ_nodesÚ_with_over_nodeÚall)rT   Ú	over_nodeÚover_node_without_order_byr3   Úover_node_order_byÚover_node_partition_byrE   s          r'   Ú_push_down_over_node_in_placez&ExprNode._push_down_over_node_in_place  sÓ   € ð 46ˆð '×-Ñ-¨jÑ9ÐØ!*×!1Ñ!1°.Ñ!AÐØ—J‘Jò 	#ˆDÜ˜4”=Ø—‘˜TÕ"Ù#¬ñ ,Ø:>¿+¹+ô,ô )ð —‘˜T×1Ñ1°)Ó<Õ=Ù'´ñ 4Ø<@¿K¹Kô4ô 1ð —‘˜T×1Ñ1Ð2LÓMÕNð —‘˜TÕ"ð	#ð ˆ�
r)   c                óð   — | j                   €_| j                  j                  rd| _         | j                   S t        d„ | j                  D «       «      rd| _         | j                   S d| _         | j                   S )NTc              3  ój   K  — | ]+  }t        |«      rt        d „ |j                  D «       «      –— Œ- y­w)c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrA   r¨   ©r�   Únodes     r'   rŽ   z2ExprNode.is_orderable.<locals>.<genexpr>.<genexpr>1  s   è ø€ Ò@¨D�D×%Ñ%×'Ñ@ùr«   N©r(   r®   r¯   ©r�   rE   s     r'   rŽ   z(ExprNode.is_orderable.<locals>.<genexpr>0  s.   è ø€ ò àÜ˜4”=ô Ñ@°D·K±KÔ@×@ñùó   ‚13F)r„   r�   rU   r®   r3   rS   s    r'   rU   zExprNode.is_orderable*  s|   € Ø×$Ñ$Ð,ð �y‰y×%Ò%Ø,0�Ô)ð ×(Ñ(Ð(ô ñ à ŸJ™Jôô ð
 -1�Ô)ð ×(Ñ(Ð(ð -2�Ô)Ø×(Ñ(Ð(r)   c                óð   — | j                   €_| j                  j                  sd| _         | j                   S t        d„ | j                  D «       «      rd| _         | j                   S d| _         | j                   S )NFc              3  ój   K  — | ]+  }t        |«      rt        d „ |j                  D «       «      –— Œ- y­w)c              3  ó>   K  — | ]  }|j                  «        –— Œ y ­wrA   r­   rº   s     r'   rŽ   z4ExprNode.is_elementwise.<locals>.<genexpr>.<genexpr>A  s   è ø€ ÒF°$˜×+Ñ+Ó-Ô-ÑFùs   ‚Nr¼   r½   s     r'   rŽ   z*ExprNode.is_elementwise.<locals>.<genexpr>@  s.   è ø€ ò àÜ˜4”=ô ÑF¸$¿+¹+ÔF×Fñùr¾   T)r…   r�   r`   r®   r3   rS   s    r'   r`   zExprNode.is_elementwise:  s|   € Ø×&Ñ&Ð.ð —9‘9×+Ò+Ø.3�Ô+ð ×*Ñ*Ð*ô ñ à ŸJ™Jôô ð
 /4�Ô+ð ×*Ñ*Ð*ð /3�Ô+Ø×*Ñ*Ð*r)   N)r�   rM   r‚   r‹   r3   zIntoExpr | NonNestedLiteralr~   re   r   re   rƒ   r   r5   ÚNone©r5   r‹   )r5   zdict[str, Any])rƒ   r   r5   r}   )r²   r}   r³   r}   r5   rÂ   rd   )rf   rg   rh   ri   r†   r�   r    r£   r¶   rU   r`   r7   r)   r'   r}   r}   Ó   sŽ   „ ñ
ð$ !Ø#(ñ8àð8ð ð8ð
 ,ð8ð ð8ð !ð8ð ð8ð 
ó8ó*4ó	
ó
ð
Ø!ðØ?Gðà	óó0)ô +r)   r}   c                  óô  — e Zd ZdZdZddddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d"d„Zd#d	„Zd$d
„Zd%d„Ze		 	 	 	 	 	 d&d„«       Z
	 	 	 	 	 	 	 	 d'd„Ze	d(d„«       Ze	d(d„«       Ze	d(d„«       Ze	d(d„«       Ze	d(d„«       Ze	d(d„«       Ze	d(d„«       Ze		 	 	 	 	 	 d&d„«       Zed)d„«       Zd*d„Z	 	 	 	 	 	 d*d„Z	 	 	 	 	 	 	 	 d'd„Zd*d„Z	 	 	 	 	 	 d*d„Zd*d„Z	 	 	 	 	 	 d*d„Zd*d„Z	 	 	 	 	 	 d&d„Z	 	 	 	 	 	 d*d „Zd%d!„Z y)+ÚExprMetadataaI  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.
        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.
        current_node: The current ExprNode in the linked list.
        prev: Reference to the previous ExprMetadata in the linked list (None for root).
    )	Úcurrent_noderC   Úhas_windowsr`   Ú
is_literalrc   Ún_orderable_opsÚpreserves_lengthÚprevFr   TN)rÇ   rÉ   rÊ   r`   rc   rÈ   rË   c               óŽ   — |r|sJ ‚|| _         || _        || _        || _        || _        || _        || _        || _        |	| _        y rA   )	rC   rÇ   rÉ   r`   rÊ   rc   rÈ   rÆ   rË   )
rT   rC   rÇ   rÉ   rÊ   r`   rc   rÈ   rÆ   rË   s
             r'   r†   zExprMetadata.__init__i  sU   € ñ Ù!Ð!�>Ø-;ˆÔØ!,ˆÔØ$3ˆÔØ$2ˆÔØ&6ˆÔØ$2ˆÔØ *ˆŒØ&2ˆÔØ)-ˆ�	r)   c               ó6   — d| j                   ›�}t        |«      ‚)NzCannot subclass )rf   Ú	TypeError)ÚclsÚargsÚkwdsry   s       r'   Ú__init_subclass__zExprMetadata.__init_subclass__‚  s   € Ø  §¡Ð 0Ð1ˆÜ˜‹nÐr)   c                ó  — t        t        t        | j                  «       «      «      «      }d| j                  › d| j                  › d| j
                  › d| j                  › d| j                  › d| j                  › d| j                  › d|› d	�S )
Nz ExprMetadata(
  expansion_kind: z,
  has_windows: z,
  n_orderable_ops: z,
  is_elementwise: z,
  preserves_length: z,
  is_scalar_like: z,
  is_literal: z,
  nodes: z,
))
ÚtupleÚreversedÚiter_nodes_reversedrC   rÇ   rÉ   r`   rÊ   rc   rÈ   )rT   Únodess     r'   r�   zExprMetadata.__repr__†  s­   € Ü”hœu T×%=Ñ%=Ó%?Ó@ÓAÓBˆð!Ø!%×!4Ñ!4Ð 5ð 6Ø"×.Ñ.Ð/ð 0"Ø"&×"6Ñ"6Ð!7ð 8!Ø!%×!4Ñ!4Ð 5ð 6#Ø#'×#8Ñ#8Ð"9ð :!Ø!%×!4Ñ!4Ð 5ð 6Ø!Ÿ_™_Ð-ð .Ø�wð ð	ð	
r)   c              #  óP   K  — | }|�|j                   –— |j                  }|�Œyy­w)z/Iterate through all nodes from current to root.N©rÆ   rË   )rT   Úcurrents     r'   rÖ   z ExprMetadata.iter_nodes_reversed•  s.   è ø€ à'+ˆØÐ!Ø×&Ñ&Ò&Ø—l‘lˆGð Ó!ùs   ‚!&¤&c                ó4   — t        |j                     |g|¢­Ž S rA   )ÚKIND_TO_METADATA_CONSTRUCTORr�   ©rÏ   r»   Úcompliant_exprss      r'   Ú	from_nodezExprMetadata.from_nodeœ  s   € ô ,¨D¯I©IÑ6°tÐN¸oÒNÐNr)   c                ó8   — t        |j                     | ||g|¢­Ž S rA   )ÚKIND_TO_METADATA_UPDATERr�   ©rT   r»   Úcompliant_exprÚcompliant_expr_argss       r'   Ú	with_nodezExprMetadata.with_node¢  s)   € ô (¨¯	©	Ñ2Ø�$˜ð
Ø)<ò
ð 	
r)   c                ó:   —  | t         j                  ddd|d ¬«      S )NFT)r`   rÊ   rc   rÆ   rË   ©ro   r{   ©rÏ   r»   s     r'   Úfrom_aggregationzExprMetadata.from_aggregation¬  s'   € áÜ× Ñ Ø Ø"ØØØô
ð 	
r)   c           	     ó<   —  | t         j                  dddd|d ¬«      S )NTF)r`   rÊ   rÈ   rc   rÆ   rË   rç   rè   s     r'   Úfrom_literalzExprMetadata.from_literal·  s*   € áÜ× Ñ ØØ"ØØØØô
ð 	
r)   c                ó4   —  | t         j                  |d ¬«      S ©NrÙ   rç   rè   s     r'   Úfrom_serieszExprMetadata.from_seriesÃ  s   € á”=×'Ñ'°dÀÔFÐFr)   c                óŒ   — t        |j                  d   «      dk(  r | t        j                  |d ¬«      S | j	                  |«      S )Nr=   r0   rÙ   ©Úlenrƒ   ro   r{   Úfrom_selector_multi_namedrè   s     r'   Úfrom_colzExprMetadata.from_colÇ  sH   € ô
 �4—;‘;˜wÑ'Ó(¨AÒ-ñ ”×$Ñ$°4¸dÔCð	
ð ×.Ñ.¨tÓ4ð	
r)   c                óŒ   — t        |j                  d   «      dk(  r | t        j                  |d ¬«      S | j	                  |«      S )NÚindicesr0   rÙ   rð   rè   s     r'   Úfrom_nthzExprMetadata.from_nthÐ  sH   € ô �4—;‘;˜yÑ)Ó*¨aÒ/ñ ”×$Ñ$°4¸dÔCð	
ð ×.Ñ.¨tÓ4ð	
r)   c                ó4   —  | t         j                  |d ¬«      S rí   )ro   rt   rè   s     r'   rò   z&ExprMetadata.from_selector_multi_namedØ  s   € ñ ”=×,Ñ,¸4ÀdÔKÐKr)   c                ó4   —  | t         j                  |d ¬«      S rí   rq   rè   s     r'   Úfrom_selector_multi_unnamedz(ExprMetadata.from_selector_multi_unnamedÝ  s   € ñ ”=×.Ñ.¸TÈÔMÐMr)   c                ó   — t        |d|d dœŽS )NT©Úto_single_outputrÆ   rË   )Úcombine_metadatarÝ   s      r'   Úfrom_elementwisezExprMetadata.from_elementwiseâ  s   € ô  Ø¨tÀ$ÈTò
ð 	
r)   c                ó:   — | j                    xr | j                   S rA   )rÊ   rc   rS   s    r'   Úis_filtrationzExprMetadata.is_filtrationê  s   € à×(Ñ(Ð(ÒD°×1DÑ1DÐ-DÐDr)   c                ó˜   — | j                   rd}t        |«      ‚t        | j                  | j                  | j
                  dddd|| ¬«	      S )Nú4Can't apply aggregations to scalar-like expressions.FT©rÇ   rÉ   rÊ   r`   rc   rÈ   rÆ   rË   ©rc   r   rÅ   rC   rÇ   rÉ   ©rT   r»   Ú_cery   s       r'   Úwith_aggregationzExprMetadata.with_aggregationî  sU   € Ø×ÒØHˆCÜ'¨Ó,Ð,ÜØ×ÑØ×(Ñ(Ø ×0Ñ0Ø"Ø ØØØØô

ð 
	
r)   c                óž   — | j                   rd}t        |«      ‚t        | j                  | j                  | j
                  dz   dddd|| ¬«	      S )Nr  r0   FTr  r  r  s       r'   Úwith_orderable_aggregationz'ExprMetadata.with_orderable_aggregationþ  s\   € ð ×ÒØHˆCÜ'¨Ó,Ð,ÜØ×ÑØ×(Ñ(Ø ×0Ñ0°1Ñ4Ø"Ø ØØØØô

ð 
	
r)   c                ó8   — t        |g|¢­d||j                  dœŽS )NFrû   )rý   rB   râ   s       r'   Úwith_elementwisezExprMetadata.with_elementwise  s2   € ô  Øð
à ñ
ð #ØØ×)Ñ)ò
ð 	
r)   c                ó¬   — | j                   rd}t        |«      ‚t        | j                  | j                  | j
                  | j                  ddd|| ¬«	      S )Nz;Can't apply window (e.g. `rank`) to scalar-like expression.Fr  ©rc   r   rÅ   rC   rÇ   rÉ   rÊ   r  s       r'   Úwith_windowzExprMetadata.with_window  s]   € à×ÒØOˆCÜ'¨Ó,Ð,ÜØ×ÑØ×(Ñ(ð !×0Ñ0Ø!×2Ñ2Ø Ø ØØØô
ð 	
r)   c                ó²   — | j                   rd}t        |«      ‚t        | j                  | j                  | j
                  dz   | j                  ddd|| ¬«	      S )NzNCan't apply orderable window (e.g. `diff`, `shift`) to scalar-like expression.r0   Fr  r  r  s       r'   Úwith_orderable_windowz"ExprMetadata.with_orderable_window2  sb   € ð ×ÒØbˆCÜ'¨Ó,Ð,ÜØ×ÑØ×(Ñ(Ø ×0Ñ0°1Ñ4Ø!×2Ñ2Ø Ø ØØØô

ð 
	
r)   c                óÄ  — | j                   rd}t        |«      ‚| j                  s| j                  rd}t        |«      ‚| j                  }|s@t        | j                  «       «      j                  t        j                  urd}t        |«      ‚t        | j                  «       «      j                  j                  r
|dkD  r|dz  }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   r0   TFr  )rÇ   r   r`   r   rÉ   ÚnextÚop_nodes_reversedr�   rM   rP   rU   rÅ   rC   )rT   r»   r  ry   rÉ   s        r'   Úwith_ordered_overzExprMetadata.with_ordered_overE  sç   € Ø×ÒØ2ˆCÜ'¨Ó,Ð,Ø×Ò $×"4Ò"4ðKð ô (¨Ó,Ð,Ø×.Ñ.ˆáÜ�T×+Ñ+Ó-Ó.×3Ñ3¼8¿?¹?ÑJðKð ô (¨Ó,Ð,Ü�×&Ñ&Ó(Ó)×.Ñ.×;Ò;ÀÐRSÒ@SØ˜qÑ ˆOÜØ×ÑØØ+Ø!Ø Ø ØØØô

ð 
	
r)   c                óÎ   — | j                   rd}t        |«      ‚| j                  s| j                  rd}t        |«      ‚t	        | j
                  d| j                  dddd|| ¬«	      S )Nr  r  TFr  )rÇ   r   r`   r   rÅ   rC   rÉ   r  s       r'   Úwith_partitioned_overz"ExprMetadata.with_partitioned_overl  sz   € ð ×ÒØ2ˆCÜ'¨Ó,Ð,Ø×Ò $×"4Ò"4ðKð ô (¨Ó,Ð,ÜØ×ÑØØ ×0Ñ0Ø!Ø Ø ØØØô

ð 
	
r)   c                ó    — |j                   d   r| j                  ||«      S |j                   d   sd}t        |«      ‚| j                  ||«      S )Nr¥   r¦   z?At least one of `partition_by` or `order_by` must be specified.)rƒ   r  r   r  r  s       r'   Ú	with_overzExprMetadata.with_over„  sP   € Ø�;‰;�zÒ"Ø×)Ñ)¨$°Ó4Ð4Ø�{‰{˜>Ò*ØSˆCÜ'¨Ó,Ð,Ø×)Ñ)¨$°Ó4Ð4r)   c                ó¸   — | j                   rd}t        |«      ‚t        d„ |D «       «      }t        d„ |D «       «      }t	        | j
                  ||dddd|| ¬«	      S )NúECan't apply filtration (e.g. `drop_nulls`) to scalar-like expression.c              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wrA   )rB   rÇ   rŒ   s     r'   rŽ   z/ExprMetadata.with_filtration.<locals>.<genexpr>’  s   è ø€ Ò R¸Q §¡×!8Õ!8Ñ Rùó   ‚ "c              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wrA   )rB   rÉ   rŒ   s     r'   rŽ   z/ExprMetadata.with_filtration.<locals>.<genexpr>“  s   è ø€ Ò$ZÀQ Q§[¡[×%@Õ%@Ñ$Zùr  Fr  )rc   r   r®   ÚsumrÅ   rC   )rT   r»   rÞ   ry   Úresult_has_windowsÚresult_n_orderable_opss         r'   Úwith_filtrationzExprMetadata.with_filtrationŒ  sm   € ð ×ÒØYˆCÜ'¨Ó,Ð,Ü Ñ RÀ/Ô RÓRÐÜ!$Ñ$ZÈ/Ô$ZÓ!ZÐÜØ×ÑØ*Ø2Ø"Ø Ø ØØØô

ð 
	
r)   c                óž   — | j                   rd}t        |«      ‚t        | j                  | j                  | j
                  dz   dddd|| ¬«	      S )Nr  r0   Fr  r  r  s       r'   Úwith_orderable_filtrationz&ExprMetadata.with_orderable_filtration   s\   € ð ×ÒØYˆCÜ'¨Ó,Ð,ÜØ×ÑØ×(Ñ(Ø ×0Ñ0°1Ñ4Ø"Ø Ø ØØØô

ð 
	
r)   c              #  óv   K  — | j                  «       D ]"  }|j                  j                  d«      rŒ|–— Œ$ y ­w)N)zname.rJ   )rÖ   r‚   Ú
startswith)rT   r»   s     r'   r  zExprMetadata.op_nodes_reversed²  s9   è ø€ Ø×,Ñ,Ó.ò 	ˆDØ�y‰y×#Ñ#Ð$6Ô7àØ‹Jñ		ùs   ‚79)rC   ro   rÇ   re   rÉ   ÚintrÊ   re   r`   re   rc   re   rÈ   re   rÆ   r}   rË   úExprMetadata | Noner5   rÂ   )rÐ   r   rÑ   r   r5   r   rÃ   )r5   zIterator[ExprNode])r»   r}   rÞ   r   r5   rÅ   )r»   r}   rã   r   rä   r   r5   rÅ   )r»   r}   r5   rÅ   rd   )r»   r}   r  r   r5   rÅ   )!rf   rg   rh   ri   Ú	__slots__r†   rÒ   r�   rÖ   Úclassmethodrß   rå   ré   rë   rî   ró   rö   rò   rù   rþ   rl   r   r  r	  r  r  r  r  r  r  r#  r%  r  r7   r)   r'   rÅ   rÅ   K  s¡  „ ñð"
€Ið  "Ø Ø!%Ø#Ø$Ø à$(ñ.à%ð.ð ð	.ð
 ð.ð ð.ð ð.ð ð.ð ð.ð ð.ð "ð.ð 
ó.ó2ó
ó#ð ðOØðOØ/?ðOà	òOó ðOð

àð
ð )ð
ð /ð	
ð
 
ó
ð ò
ó ð
ð ò	
ó ð	
ð òGó ðGð ò
ó ð
ð ò
ó ð
ð òLó ðLð òNó ðNð ð
Øð
Ø/?ð
à	ò
ó ð
ð òEó ðEó
ð 
Øð
Ø#3ð
à	ó
ð&
àð
ð )ð
ð /ð	
ð
 
ó
ó
ð&
Øð
Ø#3ð
à	ó
ó&%
ðN
Øð
Ø#3ð
à	ó
ó05ð
Øð
Ø0@ð
à	ó
ð(
Øð
Ø#3ð
à	ó
ô$r)   rÅ   z2dict[ExprKind, Callable[[ExprNode], ExprMetadata]]rÜ   z+dict[ExprKind, Callable[..., ExprMetadata]]rá   c                ó>  — d}t         j                  }d}d}d}d}	d}
d}t        |«      D ]»  \  }}|j                  }|€J ‚|j                  j                  «       r|j                  }| s|dkD  r||z  n|}||j                  z  }||j                  z  }||j                  z  }|	|j                  z  }	|
|j                  z  }
||j                  z  }|t        |j                  «      z  }Œ½ |dkD  rd}t        |«      ‚|r|rd}t        |«      ‚t        |||||	|
|||¬«	      S )aI  Combine metadata from `args`.

    Arguments:
        compliant_exprs: Expression arguments.
        to_single_output: Whether the result is always single-output, regardless
            of the inputs (e.g. `nw.sum_horizontal`).
        current_node: The current node being added.
        prev: ExprMetadata of previous node.
    r   FTr0   zXLength-changing expressions can only be used in isolation, or followed by an aggregationzVCannot combine length-changing expressions with length-preserving ones or aggregationsr  )ro   r{   Ú	enumeraterB   rC   ru   rÇ   rÉ   rÊ   r`   rc   rÈ   r(  r   r   rÅ   )rü   rÆ   rË   rÞ   Ún_filtrationsÚresult_expansion_kindr!  r"  Úresult_preserves_lengthÚresult_is_elementwiseÚresult_is_scalar_likeÚresult_is_literalÚiÚceÚmetadatarC   ry   s                    r'   rý   rý   Ò  sp  € ð €MÜ)×0Ñ0ÐØÐØÐà#Ðà Ðà ÐàÐä˜?Ó+ò 5‰ˆˆ2Ø—<‘<ˆØÐ#Ð#Ð#Ø×"Ñ"×2Ñ2Ô4Ø%×4Ñ4ˆNÙ#à>?À!ºeÐ)¨NÒ:Èð &ð 	˜h×2Ñ2Ñ2ÐØ (×":Ñ":Ñ:ÐØ 8×#<Ñ#<Ñ<ÐØ ×!8Ñ!8Ñ8ÐØ ×!8Ñ!8Ñ8ÐØ˜X×0Ñ0Ñ0ÐØœ˜X×3Ñ3Ó4Ñ4‰ð!5ð" �qÒØhˆÜ# CÓ(Ð(Ù¡=ØfˆÜ# CÓ(Ð(ÜØØ&Ø.Ø0Ø,Ø,Ø$Ø!Øô
ð 
r)   c                óJ   — t        d„ |D «       «      sd| › d�}t        |«      ‚y )Nc              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wrA   )rB   rÊ   rŒ   s     r'   rŽ   z4check_expressions_preserve_length.<locals>.<genexpr>  s   è ø€ Ò:°ˆq�{‰{×+Õ+Ñ:ùr  zBExpressions which aggregate or change length cannot be passed to 'z'.)r±   r   )Úfunction_namerÐ   ry   s      r'   Ú!check_expressions_preserve_lengthr:    s3   € ô Ñ:°TÔ:Ô:ØRÐS`ÐRaÐacÐdˆÜ# CÓ(Ð(ð ;r)   FNT)r~   ÚbackendÚallow_literalc               ó2  — ddl m}m}m} t	        | t
        «      r
|s || «      S t        | «      r |d| |¬«      j                  «       S t        | «      r| j                  «       S t        | «      r| S |st        j                  t        | «      «      ‚ || «      S )Nr   )rˆ   ÚlitÚ
new_seriesÚ )r;  )Únarwhals.functionsrˆ   r>  r?  r%   r‹   r   Ú_to_exprr,   r(   r   Úfrom_invalid_typeÚtype)Úargr~   r;  r<  rˆ   r>  r?  s          r'   Ú_parse_into_exprrF    s   € ÷ 8Ñ7ä�#”sÔ¡JÙ�3‹xˆÜ˜ÔÙ˜"˜c¨7Ô3×<Ñ<Ó>Ð>Ü�„~Ø�|‰|‹~ÐÜˆs„|Øˆ
ÙÜ"×4Ñ4´T¸#³YÓ?Ð?Ùˆs‹8€Or)   c              '  óÖ   K  — |D ]`  }t        ||| j                  ¬«      j                  | «      }|s1|j                  j                  j                  «       rd}t        |«      ‚|–— Œb y ­w)N)r~   r;  z9Multi-output expressions are not allowed in this context.)rF  Ú_implementationÚ_to_compliant_exprrB   rC   ru   r   )Únsr~   r   r3   rE   Úretry   s          r'   Úevaluate_into_exprsrL  4  sk   è ø€ ð ò ˆÜØ˜Z°×1CÑ1Cô
ç
Ñ
˜RÓ
 ð 	ñ " c§m¡m×&BÑ&B×&RÑ&RÔ&TØMˆCÜ,¨SÓ1Ð1Ø‹	ñùs   ‚A'A)c                 óÞ   — t        d„ | D «       «      }g }| D ]S  }|r>t        |«      r3|j                  «       }|j                  |_        |j                  |«       ŒC|j                  |«       ŒU |S )Nc              3  ó4   K  — | ]  }t        |«       –— Œ y ­wrA   )rc   )r�   r5  s     r'   rŽ   z&maybe_broadcast_ces.<locals>.<genexpr>E  s   è ø€ ÒE¨rœ rÓ*Ô*ÑEùs   ‚)r®   rc   Ú	broadcastrB   Ú_opt_metadatar™   )rÞ   rO  Úresultsrã   Ú_compliant_exprs        r'   Úmaybe_broadcast_cesrS  D  sk   € ÜÑE°_ÔEÓE€IØ&(€GØ)ò +ˆÙœ¨Ô7Ø0>×0HÑ0HÓ0JˆOà,:×,DÑ,DˆOÔ)Ø�N‰N˜?Õ+à�N‰N˜>Õ*ð+ð €Nr)   c           	     óú  — | j                   dv r) t        || j                   «      | j                  d   Ž }g }n¦d| j                   v r5| j                   j                  d«      \  }}t        t        ||«      |«      }nt        || j                   «      }t	        t        | j                  || j                  | j                  dœŽŽ }t        d ||i | j                  ¤Ž«      }t        j                  | g|¢­Ž }||_        |S )N>   rˆ   rF   r=   ú.©rJ  r~   r   r   )r‚   Úgetattrrƒ   ÚsplitrS  rL  r3   r~   r   r
   rÅ   rß   rP  )r»   rJ  r5  ÚcesÚmoduleÚmethodÚfuncÚmds           r'   Úevaluate_root_noder^  R  sæ   € Ø‡y�yÐ&Ñ&ð $ŒW�R˜Ÿ™Ó# T§[¡[°Ñ%9Ð:ˆØ‰à�$—)‘)ÑØ!ŸY™YŸ_™_¨SÓ1‰NˆF�FÜœ7 2 vÓ.°Ó7‰Dä˜2˜tŸy™yÓ)ˆDÜ!Ü Ø—‘ØØŸ?™?Ø#'×#:Ñ#:ò	ð
ˆô Ð$¡d¨CÐ&?°4·;±;Ñ&?Ó@ˆÜ	×	Ñ	 Ð	+ sÒ	+€BØ€BÔØ€Ir)   c           
     ó¬  — | j                   }t        | gt        |j                  ||j                  |j
                  dœŽ¢­Ž ^} } |j                  || g|¢­Ž }d|j                  v r5|j                  j                  d«      \  }}t        t        | |«      |«      }nt        | |j                  «      }t        d ||i |j                  ¤Ž«      }||_        |S )NrV  rU  r   )rB   rS  rL  r3   r~   r   rå   r‚   rX  rW  r
   rƒ   rP  )	rã   r»   rJ  r]  rä   Úaccessorr[  r\  rK  s	            r'   Úevaluate_nodera  l  sÒ   € ð &×/Ñ/€BÜ+>Øð,ä	Ø�Z‰ZØØ—‘Ø#×6Ñ6ò	

ò,Ð(€NÐ(ð 
ˆ�‰�d˜NÐ	AÐ-@Ò	A€BØ
ˆd�i‰iÑØŸ9™9Ÿ?™?¨3Ó/Ñˆ�&Ü”w˜~¨xÓ8¸&ÓA‰ä�~ t§y¡yÓ1ˆÜ
Ð!¡4Ð)<Ð#LÀÇÁÑ#LÓ
M€CØ€CÔØ€Jr)   c                óR   — t        | d   |«      }| dd  D ]  }t        |||«      }Œ |S r/   )r^  ra  )r×   rJ  r5  r»   s       r'   Úevaluate_nodesrc  „  s<   € ô 
˜E !™H bÓ	)€BØ�a�b�	ò )ˆÜ˜2˜t RÓ(‰ð)à€Ir)   )r&   r   r5   zTypeIs[Expr])r&   r   r5   zTypeIs[Series[Any]])r3   z#CompliantExpr[CompliantFrameT, Any]r5   zEvalNames[CompliantFrameT])r3   r   r5   zAliasNames | None)rE   r   r2   r   rF   r6   r5   z#tuple[Sequence[str], Sequence[str]])r&   r   r5   re   )
rÞ   r   rü   re   rÆ   r}   rË   r)  r5   rÅ   )rÐ   r   r9  r‹   r5   rÂ   )
rE  ú&IntoExpr | NonNestedLiteral | _1DArrayr~   re   r;  r   r<  re   r5   r   )
r3   rd  rJ  r   r~   re   r   re   r5   zIterator[CompliantExprAny])rÞ   r   r5   zlist[CompliantExprAny])r»   r}   rJ  r   r5   r   )rã   r   r»   r}   rJ  r   r5   r   )r×   zSequence[ExprNode]rJ  r   r5   r   )]Ú
__future__r   Úenumr   r   Útypingr   r   r   r	   r
   Únarwhals._utilsr   Únarwhals.dependenciesr   Únarwhals.exceptionsr   r   r   Úcollections.abcr   r   Útyping_extensionsr   r   Únarwhals._compliantr   r   Únarwhals._compliant.typingr   r   r   r   r   r$   r   r+   r   Únarwhals.typingr   r    r!   r(   r,   r8   r?   rK   rM   rc   ro   r}   rÅ   rb   ré   rW   rù   rY   rþ   rZ   r^   rî   rX   ró   r[   rë   r\   rö   r]   rÜ   Ú__annotations__r  r  rj   r#  rQ   r	  rR   r%  rk   r  rO   r  rP   r  rá   rý   r:  rF  rL  rS  r^  ra  rc  r7   r)   r'   ú<module>rq     s  ðö
 #ç ß >Õ >å &Ý 3÷ñ ñ ß2ç/çB÷õ õ #Ý&ßDÑDó!ó#ð!Ø/ð!àó!ó	ð!Ø
ð!Ø 1ð!Ø<Ið!à(ó!ô(T
ˆtô T
ón(ô"�Dô "÷6u+ñ u+÷plñ lð` ×Ñ˜,×7Ñ7Ø‡L�L�,×:Ñ:Ø×Ñ˜,×7Ñ7Ø×Ñ�l×>Ñ>Ø‡O�O�\×-Ñ-Ø‡L�L�,×'Ñ'Ø×Ñ�l×/Ñ/Ø‡L�L�,×'Ñ'Ø×Ñ�|×?Ñ?ð
TÐ ÐPó 
ð ×Ñ˜,×7Ñ7Ø×Ñ˜,×7Ñ7Ø×Ñ˜×5Ñ5Ø×"Ñ" L×$KÑ$KØ×!Ñ! <×#IÑ#IØ‡M�M�<×)Ñ)Ø×Ñ˜|×AÑAØ‡O�O�\×-Ñ-ð	IÐ ÐEó 	ð=Ø&ð=àð=ð ð=ð ð	=ð
 ó=ð@	)Øð	)Ø,/ð	)à	ó	)ð ØØñØ	/ðð ðð ð	ð
 ðð 
óð,Ø2ðàðð ðð ð	ð
  óó óð4Ø$ðØ,4ðØ:Oðàóð0ØðØ#8ðàôr)   