o
    Zh                     @   sR   d Z ddlZddlZddlZddlZddlZdd ZdddZdd Zd	d
 Z	dS )zUtility functions.    Nc                  C   s   zt  } | d | d | d | d g}W n ty   g }Y nw z,ddl}t|ddr1| g}nt|d	dr<|jg}ng }W || S W || S W || S  tyZ   g }Y || S w )
zd
    Create list of Python library paths to be skipped from module
    reloading and Pdb steps.
    stdlibpurelibscriptsdatar   NgetusersitepackagesF	USER_SITE)	sysconfig	get_paths	Exceptionsitegetattrr   r   )pathsZstandard_pathsr   Z	user_path r   U/var/www/html/lang_env/lib/python3.10/site-packages/spyder_kernels/customize/utils.pycreate_pathlist   s4   

r   c                    s   dt  vrt a|du rg }|t } du rdS t fdd|D r%dS tjdkr4td r2dS dS tjdksJg d	} fd
d|D rHdS dS dS )zDDecide if a path is in user code or a library according to its path.DEFAULT_PATHLISTNTc                    s   g | ]}| v qS r   r   .0ppathr   r   
<listcomp>D   s    z#path_is_library.<locals>.<listcomp>ntz.*\\pkgs\\.*F)z^/usr/lib.*z^/usr/local/lib.*z^/usr/.*/dist-packages/.*z^/home/.*/.local/lib.*z^/Library/.*z^/Users/.*/Library/.*z^/Users/.*/.local/.*c                    s   g | ]
}t | r|qS r   )researchr   r   r   r   r   [   s    )globalsr   r   anyosnamer   r   )r   Zinitial_pathlistZpathlistpatternsr   r   r   path_is_library2   s&   



r    c                 C   s   d}t | jrWt| jd tjrWd}| jd }tdt|jd }|j|_|j	|_	|j
|_
tjdd dkrR|j|_|j	|jkrN| j|jd	 7  _n|j|_|| jd< | |fS )
zEParse line and modify code to capture in globals the last expression.FTzglobals()[{}] = Noner   N   )         )lenbody
isinstanceastExprparseformatreprvaluelineno
col_offsetsysversion_info
end_linenoend_col_offset)Zcode_astZout_varnameZcapture_last_expressionZ	expr_nodeZassign_noder   r   r   capture_last_Exprc   s,   

r5   c                 C   s8   | d| dd  d kr| S t j| }t j|}|S )z
    Return canonical form of filename.

    This is a copy of bdb.canonic, so that the debugger will process 
    filenames in the same way
    <   r!   >)r   r   abspathnormcase)filenamecanonicr   r   r   r<      s
   r<   )N)
__doc__r)   r   r   r1   r   r   r    r5   r<   r   r   r   r   <module>   s   
#1