+
    VBip                         ^RI HtHtHt ^RIHt  ! R R]4      t ! R R]4      t ! R R]4      t ! R	 R
]4      t	 ! R R]4      t
 ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )   )NodeStatNode	ErrorNode)errorc                   8   a  ] tR t^	t o RtRR.tR tR tRtV t	R# )	MatchNodez[
subject  ExprNode    The expression to be matched
cases    [MatchCaseNode]  list of cases
subjectcasesc                (   R pV P                    F  p\        V\        4      '       d   K  V'       d5   \        VP                  VP
                  P                  4        R24        R # VP                  4       '       d   TpVP                  4        K  	  R # Nz% makes remaining patterns unreachable)	r
   
isinstancer   r   pospatternirrefutable_messageis_irrefutablevalidate_irrefutable)selffound_irrefutable_casecases   &  C/usr/lib/python3.14/site-packages/Cython/Compiler/MatchCaseNodes.pyr   MatchNode.validate_irrefutable   s}    !%JJD$	** %*..-55IIKLLqr ""$$)-&%%'     c                2    \        V P                  R 4       V # )z/Structural pattern match is not yet implemented)r   r   )r   envs   &&r   analyse_expressionsMatchNode.analyse_expressions"   s    dhhIJr    N)
__name__
__module____qualname____firstlineno____doc__child_attrsr   r   __static_attributes____classdictcell____classdict__s   @r   r   r   	   s%     
 g&K(" r   r   c                   >   a  ] tR t^'t o Rt. ROtR tR tR tRt	V t
R# )MatchCaseNodezL
pattern    PatternNode
body       StatListNode
guard      ExprNode or None
c                    \        V P                  \        4      '       d   R # V P                  P                  4       ;'       d    V P                  '       * # )T)r   r   r   r   guardr   s   &r   r   MatchCaseNode.is_irrefutable0   s7    dllI..||**,??TZZ?r   c                ~    \        V P                  \        4      '       d   R # V P                  P                  4        R # N)r   r   r   get_targetsr,   s   &r   validate_targetsMatchCaseNode.validate_targets5   s&    dllI..  "r   c                ~    \        V P                  \        4      '       d   R # V P                  P                  4        R # r/   )r   r   r   r   r,   s   &r   r   "MatchCaseNode.validate_irrefutable:   s&    dllI..))+r   r   N)r   bodyr+   )r   r   r    r!   r"   r#   r   r1   r   r$   r%   r&   s   @r   r)   r)   '   s&      /K@
#
, ,r   r)   c                   `   a a ] tR t^@t oRtR.tV 3R ltR tR tR t	R t
R tR	 tR
tVtV ;t# )PatternNodez
PatternNode is not an expression because
it does several things (evaluating a boolean expression,
assignment of targets), and they need to be done at different
times.

as_targets   [NameNode]    any target assign by "as"

as_targetsc                J   < R V9  d   . VR &   \         \        V `
  ! V3/ VB  R# )r8   N)superr7   __init__)r   r   kwds	__class__s   &&,r   r;   PatternNode.__init__L   s)    t#!#Dk4)#66r   c                    R # )Fr   r,   s   &r   r   PatternNode.is_irrefutableQ   s    r   c                    V P                  4       pV P                   F  pV P                  WP                  4       K   	  V# r/   )get_main_pattern_targetsr8   add_target_to_targetsnamer   targetstargets   &  r   r0   PatternNode.get_targetsT   s5    //1ooF&&w< &r   c                    VP                  V4       F  p\        V P                  R V R24       K  	  VP                  V4       R# zmultiple assignments to name 'z' in patternN)intersectionr   r   update)r   rF   other_targetsrD   s   &&& r   update_targets_with_targets'PatternNode.update_targets_with_targetsZ   s;    ((7D$((<TF,OP 8}%r   c                h    W!9   d   \        V P                  R V R24       VP                  V4       R# rJ   )r   r   addrE   s   &&&r   rC   !PatternNode.add_target_to_targets_   s,    $((<VHLQRFr   c                    \         hr/   )NotImplementedErrorr,   s   &r   rB   $PatternNode.get_main_pattern_targetsd   s    !!r   c                    V P                    F<  p\        W4      pVf   K  \        V\        4      '       g   K,  VP	                  4        K>  	  R # r/   )r#   getattrr   r7   r   )r   attrchilds   &  r   r    PatternNode.validate_irrefutableh   s:    $$DD'E Z{%C%C**, %r   r   )r   r   r    r!   r"   r#   r;   r   r0   rN   rC   rB   r   r$   r%   __classcell__r=   r'   s   @@r   r7   r7   @   s;       .K7
&

"- -r   r7   c                   V   a  ] tR t^ot o Rt]P                  R.,           tRtR tRt	V t
R# )MatchValuePatternNodeze
value   ExprNode        # todo be more specific
is_is_check   bool     Picks "is" or equality check
valueFc                    \        4       # r/   )setr,   s   &r   rB   .MatchValuePatternNode.get_main_pattern_targetsx   s	    ur   r   N)r   r   r    r!   r"   r7   r#   is_is_checkrB   r$   r%   r&   s   @r   r^   r^   o   s-     
 ))WI5KK r   r^   c                   f   a  ] tR t^|t o RtRtRt]P                  R.,           t	R t
R tR tRtV tR# )	MatchAndAssignPatternNodezT
target   NameNode or None  the target to assign to (None = wildcard)
is_star  bool
NFrG   c                $    V P                   '       * # r/   )is_starr,   s   &r   r   (MatchAndAssignPatternNode.is_irrefutable   s    <<r   c                d    V P                   '       d   R V P                   P                  ,          # R# )zname capture '%s'wildcard)rG   rD   r,   s   &r   r   -MatchAndAssignPatternNode.irrefutable_message   s#    ;;;&)9)999r   c                h    V P                   '       d   V P                   P                  0# \        4       # r/   )rG   rD   ra   r,   s   &r   rB   2MatchAndAssignPatternNode.get_main_pattern_targets   s%    ;;;KK$$%%5Lr   r   )r   r   r    r!   r"   rG   rg   r7   r#   
child_attsr   r   rB   r$   r%   r&   s   @r   re   re   |   s<     
 FG((H:5J  r   re   c                   v   a a ] tR t^t oRt]P                  R.,           tR tR tR t	R t
V 3R ltRtVtV ;t# )	OrPatternNodez%
alternatives   list of PatternNodes
alternativesc                `    V P                    F  pVP                  4       '       g   K  Vu # 	  R # r/   )rq   r   )r   alternatives   & r   get_first_irrefutable#OrPatternNode.get_first_irrefutable   s,    ,,K))++"" - r   c                &    V P                  4       R J# r/   )rt   r,   s   &r   r   OrPatternNode.is_irrefutable   s    ))+477r   c                >    V P                  4       P                  4       # r/   )rt   r   r,   s   &r   r   !OrPatternNode.irrefutable_message   s    ))+??AAr   c                    R pV P                    F5  pVP                  4       pVe   W8w  d   \        V P                  R4       TpK7  	  V# )Nz)alternative patterns bind different names)rq   r0   r   r   )r   child_targetsrs   alternative_targetss   &   r   rB   &OrPatternNode.get_main_pattern_targets   sM    ,,K"-"9"9";(]-Qdhh KL/M	 -
 r   c                
  < \         \        V `  4        R pV P                   F]  pV'       d+   \	        VP
                  VP                  4        R24        R # VP                  4       '       d   TpVP                  4        K_  	  R # r   )r:   rp   r   rq   r   r   r   r   )r   r   rs   r=   s   &  r   r   "OrPatternNode.validate_irrefutable   su    mT79!%,,K%*..-AACDDij ))++)4&,,. -r   r   )r   r   r    r!   r"   r7   r#   rt   r   r   rB   r   r$   r%   r[   r\   s   @@r   rp   rp      s>      ))^,<<K8B/ /r   rp   c                   R   a  ] tR t^t o Rt]P                  R.,           tR tRtV t	R# )MatchSequencePatternNodez!
patterns   list of PatternNodes
patternsc                ~    \        4       pV P                   F"  pV P                  WP                  4       4       K$  	  V# r/   )ra   r   rN   r0   r   rF   r   s   &  r   rB   1MatchSequencePatternNode.get_main_pattern_targets   s3    %}}G,,W6I6I6KL %r   r   N)
r   r   r    r!   r"   r7   r#   rB   r$   r%   r&   s   @r   r   r      s(      ))ZL8K r   r   c                   `   a  ] tR t^t o Rt. t. tRt]P                  . RO,           t	R t
RtV tR# )MatchMappingPatternNodez
keys   list of NameNodes
value_patterns  list of PatternNodes of equal length to keys
double_star_capture_target  NameNode or None
Nc                    \        4       pV P                   F"  pV P                  WP                  4       4       K$  	  V P                  '       d&   V P                  WP                  P                  4       V# r/   )ra   value_patternsrN   r0   double_star_capture_targetrC   rD   r   s   &  r   rB   0MatchMappingPatternNode.get_main_pattern_targets   s[    %**G,,W6I6I6KL +***&&w0O0O0T0TUr   r   )keysr   r   )r   r   r    r!   r"   r   r   r   r7   r#   rB   r$   r%   r&   s   @r   r   r      s;      DN!%)) - K r   r   c                   d   a  ] tR t^t o RtRt. t. t. t]	P                  . RO,           t
R tRtV tR# )ClassPatternNodez
class_  NameNode or AttributeNode
positional_patterns  list of PatternNodes
keyword_pattern_names    list of NameNodes
keyword_pattern_patterns    list of PatternNodes
                            (same length as keyword_pattern_names)
Nc                    \        4       pV P                  V P                  ,            F"  pV P                  WP	                  4       4       K$  	  V# r/   )ra   positional_patternskeyword_pattern_patternsrN   r0   r   s   &  r   rB   )ClassPatternNode.get_main_pattern_targets   sD    %//$2O2OOOG,,W6I6I6KL Pr   r   )class_r   keyword_pattern_namesr   )r   r   r    r!   r"   r   r   r   r   r7   r#   rB   r$   r%   r&   s   @r   r   r      sB      F!)) - K r   r   N)Nodesr   r   r   Errorsr   r   r)   r7   r^   re   rp   r   r   r   r   r   r   <module>r      s~   
 - ,  <,D ,2,-$ ,-^
K 
 6(/K (/V{ k 4{ r   