
    daf$                          d dl Z  G d d      Zy)    Nc                       e Zd ZdZd Zy)ASTTestMixinz3Test mixing to have basic assertions for AST nodes.c                       j                  |t        j                          j                  |t        j                         t               f fd	 ||       y )Nc                 f   t        |       t        |      ur(j                  t        |       dt        |             t        | t        j                        r:| j
                  D ]*  }t        | ||      }t        |||      }||us" ||       , y t        | t              r!	 t        | |d      D ]  \  }} ||        y | |k7  rj                  | d|       y y # t        $ rE t        |       }t        |      }	||	kD  rd}
||	z
  }nd}
|	|z
  }|
 d| d}j                  |      d w xY w)	Nz is not T)strictFirstSecondz list contains z additional elements.z != )typefail
isinstanceastAST_fieldsgetattrlistzip
ValueErrorlenfailureException)abmissingfieldvalue1value2node1node2len1len2whatdiffmsgselftraverse_compares                2/root/Python-3.12.4/Lib/test/support/ast_helper.pyr$   z5ASTTestMixin.assertASTEqual.<locals>.traverse_compare   sK   Awd1g%		T!WKxQ{;<!SWW%YY 9E$Qw7F$Qw7F V+(89 At$?(+Aq(> 7u(67 a		QEaU+,  " ?q6Dq6Dd{&#d{'#d{!F/$7LMC//4$>?s   %C" "AD0)assertIsInstancer   r   object)r#   ast1ast2r$   s   `  @r%   assertASTEqualzASTTestMixin.assertASTEqual   sC    dCGG,dCGG,
 ,28 	-: 	t$    N)__name__
__module____qualname____doc__r*    r+   r%   r   r      s
    =%%r+   r   )r   r   r0   r+   r%   <module>r1      s    
(% (%r+   