Ë
    ÚÍ:j_‚  ã                  ó*  — U d dl mZ d dlmZmZ d dlmZmZmZ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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+	 	 	 	 	 	 	 	 d/d„Z, G d„ de«      Z-d0d„Z. G d„ de«      Z/ G d„ d«      Z0 G d„ d«      Z1e-jd                  e1jf                  e-jh                  e1jj                  e-jl                  e1jn                  e-jp                  e1jj                  e-jr                  e1jt                  e-jv                  e1jx                  e-jz                  e1j|                  e-j~                  e1j€                  e-j‚                  e1jj                  i	ZBdeCd<   e-jd                  e1jˆ                  e-jl                  e1jŠ                  e-jŒ                  e1jŽ                  e-j�                  e1j’                  e-j”                  e1j–                  e-j˜                  e1jš                  e-jœ                  e1jž                  e-j                   e1j¢                  iZRdeCd<   	 	 	 	 	 	 	 	 	 	 d1d„ZS	 	 	 	 	 	 d2d „ZTd!d"d#d$œ	 	 	 	 	 	 	 	 	 d3d%„ZU	 	 	 	 	 	 	 	 	 	 d4d&„ZVd5d'„ZWd6d(„ZX	 	 	 	 	 	 	 	 d7d)„ZY	 	 	 	 	 	 d8d*„ZZy")9é    )Úannotations)ÚEnumÚauto)ÚTYPE_CHECKINGÚAnyÚLiteralÚcast)Úis_numpy_array_1d)ÚInvalidIntoExprErrorÚInvalidOperationErrorÚMultiOutputExpressionError)ÚCallableÚ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     úq/home/mcse/projects/srt_converter/srt-converter-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_names6   s   ø€ Ø�Q‰x×.Ñ.¨rÓ2°2°AÐ6Ð6r(   )r1   r   ÚreturnúSequence[str]© )r2   r3   s   ` r&   Úcombine_evaluate_output_namesr7   1   s   ø€ õ
7ð !Ð r(   c                 ó4   ‡ — ‰ d   j                   €y dˆ fd„}|S )Nr   c                ó2   •— ‰d   j                  | «      d d S r.   ©Ú_alias_output_names)Únamesr2   s    €r&   Úalias_output_namesz6combine_alias_output_names.<locals>.alias_output_namesB   s   ø€ Ø�Q‰x×+Ñ+¨EÓ2°2°AÐ6Ð6r(   )r<   r5   r4   r5   r:   )r2   r=   s   ` r&   Úcombine_alias_output_namesr>   <   s%   ø€ ð ˆQ�x×#Ñ#Ð+Øõ7ð Ðr(   c                ó  — | j                  |«      }| j                  x}� ||«      n|}|rW| j                  j                  j	                  «       r3t        t        ||d¬«      D ��cg c]  \  }}||vr||f‘Œ c}}ddiŽ\  }}||fS c c}}w )NT)Ústrictr@   )r0   r;   Ú	_metadataÚexpansion_kindÚis_multi_unnamedÚzip)Úexprr1   ÚexcludeÚoutput_namesÚalias_fnÚaliasesÚxÚaliass           r&   Ú!evaluate_output_names_and_aliasesrL   H   s¯   € ð ×.Ñ.¨rÓ2€Lð ×0Ñ0Ð0ˆHÐ=ñ 	�Ôàð ñ
 �4—>‘>×0Ñ0×AÑAÔCÜ #ô !$ L°'À$Ô G÷á�A�uØ˜GÑ#ð �E’
óð!
ð ñ!
Ñˆ�gð ˜Ð Ð ùós   Á&B
c                  óX  — 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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 ©N)rN   Ú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 rP   )
rN   ÚALLÚCOLÚELEMENTWISEÚEXCLUDEÚLITERALÚNTHÚSELECTORÚSERIESÚ	WHEN_THENrU   s    r&   Úis_elementwisezExprKind.is_elementwise›   s_   € ð Ü�L‰LÜ�L‰LÜ× Ñ Ü×ÑÜ×ÑÜ�L‰LÜ×ÑÜ�O‰OÜ×Ñð

ð 

ð 
	
r(   c                ób   — | j                   xs" | t        j                  t        j                  hv S rP   )rb   rN   rR   rQ   rU   s    r&   Úpreserves_lengthzExprKind.preserves_length«   s'   € à×"Ñ"ÒZ d¬x¯©Ä×@YÑ@YÐ.ZÐ&ZÐZr(   c                ód   — | t         j                  t         j                  t         j                  hv S rP   )rN   ÚAGGREGATIONr]   rS   rU   s    r&   Úis_scalar_likezExprKind.is_scalar_like¯   s/   € àÜ× Ñ Ü×ÑÜ×*Ñ*ð
ð 
ð 	
r(   N©r4   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r]   rf   rS   r[   rQ   rR   Ú
FILTRATIONrT   ÚOVERrZ   r^   r\   rY   r_   ra   r`   ÚpropertyrW   rb   rd   rg   r6   r(   r&   rN   rN   ]   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(   rN   c                ó.   — | j                   j                  S rP   )rA   rg   )r%   s    r&   rg   rg   ¸   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 rP   ©rs   ÚMULTI_UNNAMEDrU   s    r&   rC   zExpansionKind.is_multi_unnamedÈ   s   € Ø”}×2Ñ2Ð2Ð2r(   c                óF   — | t         j                  t         j                  hv S rP   )rs   ÚMULTI_NAMEDrv   rU   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.)rs   rv   ÚAssertionError)rV   ÚotherÚmsgs      r&   Ú__and__zExpansionKind.__and__Î   sI   € Ø”=×.Ñ.Ñ.°5¼M×<WÑ<WÑ3Wä ×.Ñ.Ð.à;¸D¸6ÀÀuÀgÐMcÐdˆÜ˜SÓ!Ð!r(   Nrh   )r|   rs   r4   z$Literal[ExpansionKind.MULTI_UNNAMED])rj   rk   rl   rm   r   ÚSINGLErx   rv   rC   ry   r~   r6   r(   r&   rs   rs   ¼   s3   „ ÙBá‹V€FØ9á“&€KØ!á“F€MØ'ó3óPô"r(   rs   c                  óx   — e Zd ZdZd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.
    r6   F)r2   Ú
str_as_litÚallow_multi_outputc              ót   — || _         || _        || _        || _        || _        || _        d | _        d | _        y rP   )ÚkindÚnamer2   Úkwargsr‚   rƒ   Ú_is_orderable_cachedÚ_is_elementwise_cached)rV   r…   r†   r2   r‚   rƒ   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rP   ©Ústr©Ú.0rJ   s     r&   ú	<genexpr>z$ExprNode.__repr__.<locals>.<genexpr>ü   s   è ø€ ÒC¨œc !ŸfÑCùó   ‚r<   zcol(ú)c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrP   rŽ   r�   s     r&   r’   z$ExprNode.__repr__.<locals>.<genexpr>ÿ   s   è ø€ Ò9¨œc !ŸfÑ9ùr“   c              3  ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)ú=Nr6   )r‘   ÚkeyÚvalues      r&   r’   z$ExprNode.__repr__.<locals>.<genexpr>   s   è ø€ ÒW±Z°S¸% 3 % q¨¨Ô 0ÑWùs   ‚ú()r†   Újoinr‡   r2   ÚitemsÚappend)rV   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†   r2   r‡   r‚   rƒ   r£   rU   s    r&   Úas_dictzExprNode.as_dict  s:   € ð —I‘IØ—I‘IØ—Z‘ZØ—k‘kØŸ/™/Ø"&×"9Ñ"9ñ
ð 	
r(   c                ó€   —  | j                   | j                  | j                  f| j                  | j                  dœ|¤ŽS )N)r2   r‚   )Ú	__class__r…   r†   r2   r‚   )rV   r‡   s     r&   Ú_with_kwargszExprNode._with_kwargs  s<   € Øˆt�~‰~Ø�I‰I�t—y‘yð
Ø(,¯
©
¸t¿¹ñ
ØRXñ
ð 	
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rP   ©rW   ©r‘   Ú	expr_nodes     r&   r’   z9ExprNode._push_down_over_node_in_place.<locals>.<genexpr>"  s   è ø€ ò ,Ø-6�	×&Ñ&×(ñ,ùó   ‚c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrP   ©rb   r­   s     r&   r’   z9ExprNode._push_down_over_node_in_place.<locals>.<genexpr>&  s   è ø€ ò 4Ø/8�	×(Ñ(×*ñ4ùr¯   )r‡   r2   r'   r�   ÚanyÚ_nodesÚ_with_over_nodeÚall)rV   Ú	over_nodeÚover_node_without_order_byr2   Ú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rP   r¬   ©r‘   Únodes     r&   r’   z2ExprNode.is_orderable.<locals>.<genexpr>.<genexpr>6  s   è ø€ Ò@¨D�D×%Ñ%×'Ñ@ùr¯   N©r'   r²   r³   ©r‘   rE   s     r&   r’   z(ExprNode.is_orderable.<locals>.<genexpr>5  s.   è ø€ ò àÜ˜4”=ô Ñ@°D·K±KÔ@×@ñùó   ‚13F)rˆ   r…   rW   r²   r2   rU   s    r&   rW   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rP   r±   r¾   s     r&   r’   z4ExprNode.is_elementwise.<locals>.<genexpr>.<genexpr>F  s   è ø€ ÒF°$˜×+Ñ+Ó-Ô-ÑFùs   ‚NrÀ   rÁ   s     r&   r’   z*ExprNode.is_elementwise.<locals>.<genexpr>E  s.   è ø€ ò àÜ˜4”=ô ÑF¸$¿+¹+ÔF×FñùrÂ   T)r‰   r…   rb   r²   r2   rU   s    r&   rb   zExprNode.is_elementwise?  s|   € Ø×&Ñ&Ð.ð —9‘9×+Ò+Ø.3�Ô+ð ×*Ñ*Ð*ô ñ à ŸJ™Jôô ð
 /4�Ô+ð ×*Ñ*Ð*ð /3�Ô+Ø×*Ñ*Ð*r(   N)r…   rN   r†   r�   r2   z%Sequence[IntoExpr | NonNestedLiteral]r‚   ri   rƒ   ri   r‡   r   r4   ÚNone©r4   r�   )r4   zdict[str, Any])r‡   r   r4   r�   )r¶   r�   r·   r�   r4   rÆ   rh   )rj   rk   rl   rm   rŠ   r¡   r¤   r§   rº   rW   rb   r6   r(   r&   r�   r�   ×   s‘   „ ñ
ð$ 8:Ø Ø#(ñ8àð8ð ð8ð 5ð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_noderB   Úhas_windowsrb   Ú
is_literalrg   Ún_orderable_opsrd   ÚprevFr   TN)rË   rÍ   rd   rb   rg   rÌ   rÎ   c               óŽ   — |r|sJ ‚|| _         || _        || _        || _        || _        || _        || _        || _        |	| _        y rP   )	rB   rË   rÍ   rb   rd   rg   rÌ   rÊ   rÎ   )
rV   rB   rË   rÍ   rd   rb   rg   rÌ   rÊ   rÎ   s
             r&   rŠ   zExprMetadata.__init__n  sU   € ñ Ù!Ð!�>Ø-;ˆÔØ!,ˆÔØ$3ˆÔØ$2ˆÔØ&6ˆÔØ$2ˆÔØ *ˆŒØ&2ˆÔØ)-ˆ�	r(   c               ó6   — d| j                   ›�}t        |«      ‚)NzCannot subclass )rj   Ú	TypeError)ÚclsÚargsÚkwdsr}   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_reversedrB   rË   rÍ   rb   rd   rg   rÌ   )rV   Ú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Î   )rV   Úcurrents     r&   rÙ   z ExprMetadata.iter_nodes_reversedš  s.   è ø€ à'+ˆØÐ!Ø×&Ñ&Ò&Ø—l‘lˆGð Ó!ùs   ‚!&¤&c                ó4   — t        |j                     |g|¢­Ž S rP   )Ú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 rP   )ÚKIND_TO_METADATA_UPDATERr…   ©rV   r¿   Úcompliant_exprÚcompliant_expr_argss       r&   Ú	with_nodezExprMetadata.with_node§  s)   € ô (¨¯	©	Ñ2Ø�$˜ð
Ø)<ò
ð 	
r(   c                ó   — t        |d|d dœŽS ©NT©Úto_single_outputrÊ   rÎ   ©Úcombine_metadatarà   s      r&   Úfrom_aggregationzExprMetadata.from_aggregation±  ó   € ô  Ø¨tÀ$ÈTò
ð 	
r(   c           	     ó<   —  | t         j                  dddd|d ¬«      S )NTF)rb   rd   rÌ   rg   rÊ   rÎ   ©rs   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<   r/   rÜ   ©Úlenr‡   rs   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Úindicesr/   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ö   )rs   rx   ró   s     r&   rû   z&ExprMetadata.from_selector_multi_namedÚ  s   € ñ ”=×,Ñ,¸4ÀdÔKÐKr(   c                ó4   —  | t         j                  |d ¬«      S rö   ru   ró   s     r&   Úfrom_selector_multi_unnamedz(ExprMetadata.from_selector_multi_unnamedß  s   € ñ ”=×.Ñ.¸TÈÔMÐMr(   c                ó   — t        |d|d dœŽS rê   rí   rà   s      r&   Úfrom_elementwisezExprMetadata.from_elementwiseä  rð   r(   c                ó:   — | j                    xr | j                   S rP   )rd   rg   rU   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Í   rd   rb   rg   rÌ   rÊ   rÎ   ©rg   r   rÉ   rB   rË   rÍ   ©rV   r¿   Ú_cer}   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  r/   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î   rA   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	  ©rg   r   rÉ   rB   rË   rÍ   rd   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.r/   Fr	  r  r  s       r&   Úwith_orderable_windowz"ExprMetadata.with_orderable_window4  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   r/   TFr	  )rË   r   rb   r  rÍ   ÚnextÚop_nodes_reversedr…   rN   rR   rW   rÉ   rB   )rV   r¿   r  r}   rÍ   s        r&   Úwith_ordered_overzExprMetadata.with_ordered_overG  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   rb   r  rÉ   rB   rÍ   r  s       r&   Úwith_partitioned_overz"ExprMetadata.with_partitioned_overn  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rP   )rA   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rP   )rA   rÍ   r�   s     r&   r’   z/ExprMetadata.with_filtration.<locals>.<genexpr>•  s   è ø€ Ò$ZÀQ Q§[¡[×%@Õ%@Ñ$Zùr$  Fr	  )rg   r   r²   ÚsumrÉ   rB   )rV   r¿   rá   r}   Ú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"  r/   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.rK   )rÙ   r†   Ú
startswith)rV   r¿   s     r&   r  zExprMetadata.op_nodes_reversed´  s9   è ø€ Ø×,Ñ,Ó.ò 	ˆDØ�y‰y×#Ñ#Ð$6Ô7àØ‹Jñ		ùs   ‚79)rB   rs   rË   ri   rÍ   Úintrd   ri   rb   ri   rg   ri   rÌ   ri   rÊ   r�   rÎ   úExprMetadata | Noner4   rÆ   )rÓ   r   rÔ   r   r4   r   rÇ   )r4   zIterator[ExprNode])r¿   r�   rá   r   r4   rÉ   )r¿   r�   ræ   r   rç   r   r4   rÉ   )r¿   r�   r4   rÉ   rh   )r¿   r�   r  r   r4   rÉ   )!rj   rk   rl   rm   Ú	__slots__rŠ   rÕ   r¡   rÙ   Úclassmethodrâ   rè   rï   rô   r÷   rü   rÿ   rû   r  r  rp   r  r  r  r  r  r  r  r  r   r)  r+  r  r6   r(   r&   rÉ   rÉ   P  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}d}t         j                  }d}d}|j                  j                  }	d}
t	        |«      D ]µ  \  }}|j
                  }|€J ‚|j                  j                  «       r|j                  }| s|dkD  r||z  n|}||j                  z  }||j                  z  }|	|j                  z  }	|
|j                  z  }
|t        |j                  «      z  }|t        |j                  «      z  }Œ· |j                  j                  xs |t        |«      k(  }|j                  j                  xr
 |dk(  xr | }|r#|dkD  s||z   t        |«      k  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   FTr/   zXLength-changing expressions can only be used in isolation, or followed by an aggregationr	  )rs   r   r…   rb   Ú	enumeraterA   rB   ry   rË   rÍ   rÌ   r.  r  rg   rú   rd   r   rÉ   )rì   rÊ   rÎ   rá   Ún_filtrationsÚn_scalar_likeÚresult_expansion_kindr'  r(  Úresult_is_elementwiseÚresult_is_literalÚiÚceÚmetadatarB   Úresult_is_scalar_likeÚresult_preserves_lengthr}   s                     r&   rî   rî   Ô  s½  € ð €MØ€MÜ)×0Ñ0ÐØÐØÐà(×-Ñ-×<Ñ<ÐàÐä˜?Ó+ò 6‰ˆˆ2Ø—<‘<ˆØÐ#Ð#Ð#Ø×"Ñ"×2Ñ2Ô4Ø%×4Ñ4ˆNÙ#à>?À!ºeÐ)¨NÒ:Èð &ð 	˜h×2Ñ2Ñ2ÐØ (×":Ñ":Ñ:ÐØ ×!8Ñ!8Ñ8ÐØ˜X×0Ñ0Ñ0ÐØœ˜X×3Ñ3Ó4Ñ4ˆØœ˜X×4Ñ4Ó5Ñ5‰ð6ð$ )×-Ñ-×<Ñ<ò Øœ˜_Ó-Ñ-ð ð 	×Ñ×*Ñ*ò 	&Ø˜QÑò	&à%Ð%ð ñ Ø	˜Ò	 °Ñ =ÄÀOÓ@TÒ TàhˆÜ# CÓ(Ð(äØØ&Ø.Ø0Ø,Ø,Ø$Ø!Øô
ð 
r(   c                óJ   — t        d„ |D «       «      sd| › d�}t        |«      ‚y )Nc              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wrP   )rA   rd   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Ó   r}   s      r&   Ú!check_expressions_preserve_lengthrA    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Ú )rB  )Únarwhals.functionsrŒ   rE  rF  r$   r�   r
   Ú_to_exprr+   r'   r   Úfrom_invalid_typeÚtype)Úargr‚   rB  rC  rŒ   rE  rF  s          r&   Ú_parse_into_exprrM  +  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‚   rB  z9Multi-output expressions are not allowed in this context.)rM  Ú_implementationÚ_to_compliant_exprrA   rB   ry   r   )Únsr‚   rƒ   r2   rE   Úretr}   s          r&   Úevaluate_into_exprsrS  A  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rP   )rg   )r‘   r:  s     r&   r’   z&maybe_broadcast_ces.<locals>.<genexpr>R  s   è ø€ ÒE¨rœ rÓ*Ô*ÑEùs   ‚)r²   rg   Ú	broadcastrA   Ú_opt_metadatar�   )rá   rV  Úresultsræ   Ú_compliant_exprs        r&   Úmaybe_broadcast_cesrZ  Q  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<   ú.©rQ  r‚   rƒ   r   )r†   Úgetattrr‡   ÚsplitrZ  rS  r2   r‚   rƒ   r	   rÉ   râ   rW  )r¿   rQ  r:  ÚcesÚmoduleÚmethodÚfuncÚmds           r&   Úevaluate_root_nodere  _  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 )Nr]  r\  r   )rA   rZ  rS  r2   r‚   rƒ   rè   r†   r_  r^  r	   r‡   rW  )	ræ   r¿   rQ  rd  rç   Úaccessorrb  rc  rR  s	            r&   Úevaluate_noderh  y  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.   )re  rh  )rÚ   rQ  r:  r¿   s       r&   Úevaluate_nodesrj  ‘  s<   € ô 
˜E !™H bÓ	)€BØ�a�b�	ò )ˆÜ˜2˜t RÓ(‰ð)à€Ir(   )r%   r   r4   zTypeIs[Expr])r%   r   r4   zTypeIs[Series[Any]])r2   z#CompliantExpr[CompliantFrameT, Any]r4   zEvalNames[CompliantFrameT])r2   r   r4   zAliasNames | None)rE   r   r1   r   rF   r5   r4   z#tuple[Sequence[str], Sequence[str]])r%   r   r4   ri   )
rá   r   rì   ri   rÊ   r�   rÎ   r/  r4   rÉ   )rÓ   r   r@  r�   r4   rÆ   )
rL  ú&IntoExpr | NonNestedLiteral | _1DArrayr‚   ri   rB  r   rC  ri   r4   r   )
r2   rk  rQ  r   r‚   ri   rƒ   ri   r4   zIterator[CompliantExprAny])rá   r   r4   zlist[CompliantExprAny])r¿   r�   rQ  r   r4   r   )ræ   r   r¿   r�   rQ  r   r4   r   )rÚ   zSequence[ExprNode]rQ  r   r4   r   )[Ú
__future__r   Úenumr   r   Útypingr   r   r   r	   Únarwhals.dependenciesr
   Únarwhals.exceptionsr   r   r   Úcollections.abcr   r   r   Útyping_extensionsr   r   Únarwhals._compliantr   r   Únarwhals._compliant.typingr   r   r   r   r   r#   r   r*   r   Únarwhals.typingr   r   r    r'   r+   r7   r>   rL   rN   rg   rs   r�   rÉ   rf   rï   rY   r  r[   r  r\   r`   r÷   rZ   rü   r]   rô   r^   rÿ   r_   rß   Ú__annotations__r  r  rn   r)  rS   r  rT   r+  ro   r   rQ   r  rR   r  rä   rî   rA  rM  rS  rZ  re  rh  rj  r6   r(   r&   ú<module>rw     s  ðö
 #ç ß 4Ó 4å 3÷ñ ñ ß<Ñ<ç/çB÷õ õ #Ý&ßDÑDó!ó#ð!Ø/ð!àó!ó	ð!Ø
ð!Ø 1ð!Ø<Ið!à(ó!ô*X
ˆtô X
óv(ô"�Dô "÷6v+ñ v+÷riñ iðZ ×Ñ˜,×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ó 	ðHØ&ðHàðHð ðHð ð	Hð
 óHðV	)Øð	)Ø,/ð	)à	ó	)ð ØØñØ	/ðð ðð ð	ð
 ðð 
óð,Ø2ðàðð ðð ð	ð
  óó óð4Ø$ðØ,4ðØ:Oðàóð0ØðØ#8ðàôr(   