
    ` Ie+                     B    d Z ddlZddlmZ  ed      d        ZddZy)	zMiscellaneous utilities    N)	lru_cached   )maxsizec                 V    	 t        |       }t        |dd      ryy# t        $ r Y yw xY w)zG
    Simpler version of spyder.utils.programs.is_module_installed.
    __file__NTF)
__import__getattr	Exception)module_namemods     ;/usr/lib/python3/dist-packages/spyder_kernels/utils/misc.pyis_module_installedr      s7    

% 3
D) s    	((c                 n    dj                  t        j                  d               rNt        j                  d       s8t        j                  d d         s dd  7 rt        j                  d       s8t	                 sd |- |v r) fd	}d} ||      |v r|dz  } ||      |v r ||        S )
zBReturn a syntax-valid Python reference name from an arbitrary name z[^0-9a-zA-Z_]z([a-zA-Z]+[0-9a-zA-Z_]*)$z[a-zA-Z]r      Ndatac                     d| z  z   S )Nz_%03d )indexnames    r   <lambda>z$fix_reference_name.<locals>.<lambda>-   s    T7U?%;     )joinresplitmatchstr)r   	blacklistget_new_namer   s   `   r   fix_reference_namer    "   s    77288,d34D
rxx <dCxxT!W-8D rxx <dC t9D!2;5!Y.QJE 5!Y.E"Kr   )N)__doc__r   spyder_kernels.py3compatr   r   r    r   r   r   <module>r#      s.     	 . 3 "r   