o
    b	                     @   sV   d Z ddlZddlZddlZddlZddlmZ d
ddZdddZej	dd	 Z
dS )z@Utility functions for test code that uses astroid ASTs as input.    N)nodesc                    s   ddd fdd}|S )zY Compare version of python interpreter to the given one. Skip the test
    if older.
    Nc              
   S   sN   | p|} zt dd | dD W S  ty& } z	tdj| d|d }~ww )Nc                 s       | ]}t |V  qd S N)int.0v r	   Q/var/www/secure340b-portal/env/lib/python3.10/site-packages/astroid/test_utils.py	<genexpr>       z1require_version.<locals>.parse.<locals>.<genexpr>.z6{string} is not a correct version : should be X.Y[.Z].)string)tuplesplit
ValueErrorformat)r   defaultexcr	   r	   r
   parse   s   zrequire_version.<locals>.parsec                    sf   t jd d }d|  k rdkr| S  ddd t jD  t|  fdd}|S )	N   04r   c                 s   r   r   )strr   r	   r	   r
   r   )   r   zArequire_version.<locals>.check_require_version.<locals>.<genexpr>c                    s@   d ur|  df  d S  d ur|  d f  d S d S )Nz)Needs Python > %s. Current version is %s.z*Needs Python <= %s. Current version is %s.)ZskipTest)selfargskwargs)maxverminverstr_versionr	   r
   new_f+   s   

z=require_version.<locals>.check_require_version.<locals>.new_f)sysversion_infojoin	functoolswraps)fcurrentr    r   r   r   )r   r
   check_require_version$   s   
z.require_version.<locals>.check_require_versionr   r	   )r   r   r)   r	   r(   r
   require_version   s   
r*   c                    s    fdd|  tjD | S )Nc                    s   g | ]	}|j  kr|qS r	   name)r   nr+   r	   r
   
<listcomp><   s    z!get_name_node.<locals>.<listcomp>)Znodes_of_classr   Name)Z
start_fromr,   indexr	   r+   r
   get_name_node;   s   r1   c              
   c   s6    t d|  zd V  W t d|  d S t d|  w )Nalwaysr   )warningssimplefilter)warningr	   r	   r
   enable_warning?   s
   r6   )NN)r   )__doc__
contextlibr$   r!   r3   Zastroidr   r*   r1   contextmanagerr6   r	   r	   r	   r
   <module>   s   


'