%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core18/current/usr/share/python3/debpython/__pycache__/
Upload File :
Create Path :
Current File : //snap/core18/current/usr/share/python3/debpython/__pycache__/interpreter.cpython-36.pyc

3

Ĥ�[�4�@sxddlZddlZddlZddlmZmZddlmZddlm	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@s�eZdZdZdZdZdZdZfZiZ	d(dd�Z
dd�Zd	d
�Zdd�Z
d
d�Zedd��Zd)dd�Zd*dd�Zd+dd�Zd,dd�Zd-dd�Zd.dd�Zd/dd�Zd0dd �Zd1d!d"�Zd2d#d$�Zd3d&d'�ZdS)4�InterpreterN�pythonF�cpythoncCs�t�}|d=|d=t|t�rJx�|j�D]}	||	dkr&t||	�||	<q&WnX|r�|jdd�j�rr|rrt|�|d<n0x.|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�|dkrJ|rJ|jd�r"d|jd<n|jd�r6d|jd<d|krbd|jd<n|d	krb|dk	rbt|�}|dkr�|dkr�tt|�|j|<n
||j|<dS)Nrrrr�pypyz-dbgTrr
r)rrrr)�
startswith�__dict__rrr)r	rr
rrr�__setattr__Zs


zInterpreter.__setattr__cCs8|jpd}||j|j�7}|jr4|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__cCsF|jdkr|jS|r@t|�|jkr@|jr2dj|�S|jt|�S|jS)Nr!zpython{}-dbg)rr�strr�format)r	r
rrrr&ts

zInterpreter._vstrcCs:tj|�}|siS|j�}d|kr6t|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.parsecCsnt|p
|j�}|jdkrd}n0|td�>r4d|}n|td�>rJd|}nd}|rZd|}|rjd	||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.sitedircCsvt|p
|j�}d|jkrdnd}|td�kr4||St|�\}}|jd�sR|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}|rP|dj|�7}|rP|dj|�7}|jrt|jdkrt|td�>rt|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_filecCs<t|p
|j�}|jdkr(|td�>r(dS|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_numbercCs4t|p
|j�}|jdkr(|td�>r(dS|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_tagcCsHt|p
|j�}y|j|�\}}Wn"tk
rBtjddd�dSX|S)zReturn multiarch tag.zcannot get multiarchT)�exc_infor)rr
r>�	Exception�logr)r	r
r?r@rrrr@�szInterpreter.multiarchcCs4t|p
|j�}|jdkr0|td�?r0dj|j�SdS)Nrz3.2zabi{})rr
rr+�major)r	r
rrr�	stableabiszInterpreter.stableabicCsHt|p
|j�}y|j|�\}}Wn"tk
rBtjddd�dSX|S)z�Return SOABI flag (used to in .so files).

        >>> i = Interpreter('python')
        >>> i.soabi(version=Version('3.3'))
        'cpython-33m'
        zcannot get soabiT)rEr)rr
r>rFrGr)r	r
r?r@rrrr?	szInterpreter.soabic	Cs�t|p
|j�}d|kr(|jdd�\}}nd}tj|�}|s>dS|j�}|drRdSt||d�}|dr�dj|dd	|dd�|_|jr�|d
s�d|dp�dkr�d
|_y|j	�\}}Wn"t
k
r�tjdd
d�dSX|d}|jdk�r|jd?�r|j
d��r|dd�}|d�s&|�rbdj||d�p8|�}|d�sL|�rbdj||d�p^|�}|d7}||k�rxdSt||�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NrI)r
�verz{}.{}rr�d�flagsTzcannot get soabi/multiarch)rErrz3.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�}|jdksB|jdkrH|d?r2|d>sB|d?sB|dkrHd}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>KszInterpreter._get_configTcCs�t|p
|j�}dj|j|�|jdd��}|rD||jjkrD|jj|St|�}|ddkrztj	|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)NNNNNNN)FNN)N)N)N)N)N)N)N)N)N)NT)�__name__�
__module__�__qualname__rrr
rrrr^r r$r(r)r&�staticmethodrr1r;rArDr8r@rIr?rTr>rBrrrrr<s2


&







1
r)�loggingrU�re�os.pathrr�	debpythonr�debpython.versionr�compile�VERBOSEr,rQ�	getLoggerrdrGrrrrr�<module>s




Zerion Mini Shell 1.0