
    e	                        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y)z@Utility functions for test code that uses astroid ASTs as input.    )annotationsN)Callable)managernodes
transformsc                F     dd} |        |       fd}|S )zSCompare version of python interpreter to the given one and skips the test if older.c                    	 t        d | j                  d      D              S # t        $ r}|  d}t        |      |d }~ww xY w)Nc              3  2   K   | ]  }t        |        y wN)int.0vs     4/usr/lib/python3/dist-packages/astroid/test_utils.py	<genexpr>z1require_version.<locals>.parse.<locals>.<genexpr>   s     CAQC   .z. is not a correct version : should be X.Y[.Z].)tuplesplit
ValueError)python_versionemsgs      r   parsezrequire_version.<locals>.parse   sM    	)C)=)=c)BCCC 	)#$$RSCS/q(	)s    # 	A=Ac                    t         j                  d d cxk  rk  r| S  dj                  d t         j                  D              t        j                  |       fd       }|S )N   r   c              3  2   K   | ]  }t        |        y wr   )strr   s     r   r   zArequire_version.<locals>.check_require_version.<locals>.<genexpr>&   s     A1AAr   c                     k  rt        j                  d d d       y kD  rt        j                  d d d       y y )NzNeeds Python > z. Current version is r   zNeeds Python <= )pytestskip)argskwargscurrentmax_versionmaxvermin_versionminverversions     r   new_fz=require_version.<locals>.check_require_version.<locals>.new_f(   sS    +%ofX5J7)STUV;&.vh6KG9TUVW '    )sysversion_infojoin	functoolswraps)fr*   r$   r)   r%   r&   r'   r(   s     @@r   check_require_versionz.require_version.<locals>.check_require_version!   sr    (+(8(8!(</K/H 0 xxA0@0@AA			X 	X 
	X r+   )r   r   returnztuple[int, ...] )r(   r&   r   r2   r%   r'   s   ``  @@r   require_versionr5      s)    ) -K-K  ! r+   c                    | j                  t        j                        D cg c]  }|j                  |k(  s| c}|   S c c}w r   )nodes_of_classr   Namename)
start_fromr9   indexns       r   get_name_noder=   4   s5    !00<O!$AOPUVVOs
   AAc              #     K   t        j                  d|        	 d  t        j                  d|        y # t        j                  d|        w xY ww)Nalwaysdefault)warningssimplefilter)warnings    r   enable_warningrD   8   s@     (G,2 	i1i1s   A5 AA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_managerrP   C   sO     A AJAAOA..0AL$'EA!Hr+   )z0.0.0z4.0.0)r(   r   r&   r   r3   r   )r   )__doc__
__future__r   
contextlibr/   r,   rA   collections.abcr   r    astroidr   r   r   r5   r=   contextmanagerrD   rP   r4   r+   r   <module>rW      sQ   
 G "   
  $  . .!@W 2 2
r+   