o
    2h                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlZddlm	Z	 G dd dej
Z
ee
d	s;ee
d	e
j d
d Zdd ZdS )zUseful stuff for tests.    )absolute_import)division)print_functionN)zipc                   @   s   e Zd Zdd ZdS )TestCasec              
   C   sr  |du r
|du r
dS z|  | |  | tt|t|D ]r\}}| t|t| t| jD ]]}t||d}t||d}t|t	rXt||D ]
\}}	| 
||	 qLq4t|tjsdt|tjrt|tjtjtjfst|tjtjtjfs|  | |  | | 
|| q4| || q4q W dS  ty }
 z| dt|t||
f  W Y d}
~
dS d}
~
ww )ziCompares two ASTs and fails if there are differences.

    Ignores `ctx` fields and formatting info.
    NzASTs differ:
%s
  !=
%s

%s)assertIsNotNoner   astwalkassertEqualtype_fieldsgetattr
isinstancelistcheckAstsEqualASTLoadStoreParamAssertionErrorfaildump)selfabnode_anode_bfielda_valb_valitem_aitem_bae r#   P/var/www/html/chatgem/venv/lib/python3.10/site-packages/pasta/base/test_utils.pyr      s>   




zTestCase.checkAstsEqualN)__name__
__module____qualname__r   r#   r#   r#   r$   r      s    r   assertItemsEqualc                  G   s(   t tdd | D ddd | D  S )Nc                 s   s    | ]}t | V  qd S )Nsupports_feature).0featurer#   r#   r$   	<genexpr>D   s    z$requires_features.<locals>.<genexpr>zMTests features which are not supported by this version of python. Missing: %rc                 S   s   g | ]}t |s|qS r#   r)   )r+   fr#   r#   r$   
<listcomp>F   s    z%requires_features.<locals>.<listcomp>)unittestskipIfany)featuresr#   r#   r$   requires_featuresB   s   r4   c                 C   s   | dkrt tdottjtjS | dkr t tdottjtjS | dkr7ztd W dS  ty6   Y dS w | d	krGt td
oFttjtjS | dkrRt	j
d dk S dS )N
bytes_nodeBytes	exec_nodeExectype_annotationsz#def foo(bar: str=123) -> None: passFTfstring	JoinedStrmixed_tabs_spacesr      )hasattrr   
issubclassr6   r   r8   parseSyntaxErrorr;   sysversion_info)r,   r#   r#   r$   r*   I   s    r*   )__doc__
__future__r   r   r   r   rB   r0   	six.movesr   r   r>   setattrassertCountEqualr4   r*   r#   r#   r#   r$   <module>   s   
"