�
�(�g$ � � � d dl Z G d� d� Zy)� Nc � � e Zd ZdZd� Zy)�ASTTestMixinz3Test mixing to have basic assertions for AST nodes.c � � �� � j |t j � � j |t j � t � f� �fd� � �||� y )Nc �f �� t | � t |� ur(�
j t | � �dt |� ��� t | t j � r:| j
D ]* }t
| ||� }t
|||� }||us�" �||� �, y t | t � r! t | |d�� D ] \ }} �||� � y | |k7 r�
j | �d|��� y y # t $ rE t | � }t |� } || kD rd}
|| z
}nd}
| |z
}|
� d|� d�}�
j |� d �w xY 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 ���./usr/lib/python3.12/test/support/ast_helper.pyr$ z5ASTTestMixin.assertASTEqual.<locals>.traverse_compare sK �� ��A�w�d�1�g�%�� � �T�!�W�K�x��Q��{�;�<��!�S�W�W�%��Y�Y� 9�E�$�Q��w�7�F�$�Q��w�7�F� �V�+�(���8�
9� �A�t�$�?�(+�A�q��(>� 7���u�(���6�7� �a��� � �Q�E��a�U�+�,� �� "� ?��q�6�D��q�6�D��d�{�&��#�d�{��'��#�d�{��!�F�/�$��7L�M�C��/�/��4�$�>�?�s
�%C" |