
    yIf	                        d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	Z	ddl
mZmZmZ dddZddZej        d             Zd ZdS )z@Utility functions for test code that uses astroid ASTs as input.    )annotationsN)Callable)managernodes
transforms0.0.04.0.0minverstrmaxverreturnr   c                R     dd} |            |           fd}|S )zSCompare version of python interpreter to the given one and skips the test if older.python_versionr   r   tuple[int, ...]c                    	 t          d |                     d          D                       S # t          $ r}|  d}t          |          |d }~ww xY w)Nc              3  4   K   | ]}t          |          V  d S N)int.0vs     F/var/www/piapp/venv/lib/python3.11/site-packages/astroid/test_utils.py	<genexpr>z1require_version.<locals>.parse.<locals>.<genexpr>   s(      CCAQCCCCCC    .z. is not a correct version : should be X.Y[.Z].)tuplesplit
ValueError)r   emsgs      r   parsezrequire_version.<locals>.parse   sm    	)CC)=)=c)B)BCCCCCC 	) 	) 	)#SSSCS//q(	)s   +. 
AAAc                    t           j        d d         cxk     rk    rn n| S d                    d t           j        D                       t          j        |           fd            }|S )N   r   c              3  4   K   | ]}t          |          V  d S r   )r   r   s     r   r   zArequire_version.<locals>.check_require_version.<locals>.<genexpr>&   s(      AA1AAAAAAAr   c                     k    rt          j        d d d           d S k    rt          j        d d d           d S d S )NzNeeds Python > z. Current version is r   zNeeds Python <= )pytestskip)argskwargscurrentmax_versionr   min_versionr
   versions     r   new_fz=require_version.<locals>.check_require_version.<locals>.new_f(   su    +%%UfUU7UUUVVVVV;&&VvVVGVVVWWWWW '&r   )sysversion_infojoin	functoolswraps)fr.   r*   r-   r+   r   r,   r
   s     @@r   check_require_versionz.require_version.<locals>.check_require_version!   s    (+(8!(<////K/////HxxAA0@AAAAA				X 	X 	X 	X 	X 	X 	X 	X 	X 
		X r   )r   r   r   r    )r
   r   r!   r5   r+   r,   s   ``  @@r   require_versionr7      sf    ) ) ) ) %--K%--K         ! r   c                f    fd|                      t          j                  D             |         S )Nc                *    g | ]}|j         k    |S r6   )name)r   nr:   s     r   
<listcomp>z!get_name_node.<locals>.<listcomp>5   s     OOO!$Ar   )nodes_of_classr   Name)
start_fromr:   indexs    ` r   get_name_noderA   4   s3    OOOOz00<<OOOPUVVr   c              #     K   t          j        d|            	 d V  t          j        d|            d S # t          j        d|            w xY w)Nalwaysdefault)warningssimplefilter)warnings    r   enable_warningrH   8   s[      (G,,,2 	i11111i1111s	   4 Ac                     t          j                    } i | _        g | _        i | _        i | _        t          j                    | _        t                      | _
        | S r   )r   AstroidManager__dict___failed_import_hooksastroid_cache_mod_file_cacher   TransformVisitor
_transformsetextension_package_whitelist)ms    r   brainless_managerrT   C   sQ      A AJAAOA.00AL$'EEA!Hr   )r   r	   )r
   r   r   r   r   r   )r   )__doc__
__future__r   
contextlibr2   r/   rE   collections.abcr   r&   astroidr   r   r   r7   rA   contextmanagerrH   rT   r6   r   r   <module>r[      s   
 G F " " " " " "         



  $ $ $ $ $ $  . . . . . . . . . .! ! ! ! !@W W W W 2 2 2
 
 
 
 
r   