%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/share/dh-python/dhpython/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/share/dh-python/dhpython/__pycache__/pydist.cpython-35.pyc



�U]�(�@stddlZddlZddlZddlmZmZmZddlmZm	Z	ddl
mZmZm
Z
mZmZddlmZmZddlmZejd�Zejdej�Zejd	ej�Zd
d�Zedd
��Zddd�Zdd�Zdd�Zdd�Z dd�Z!ejd�Z"ejd�Z#dd�Z$dd�Z%dS)�N)�exists�isdir�join)�PIPE�Popen)�PKG_PREFIX_MAP�
PUBLIC_DIR_RE�PYDIST_DIRS�PYDIST_OVERRIDES_FNAMES�PYDIST_DPKG_SEARCH_TPLS)�get_requested_versions�Version)�memoize�dhpythona�
    (?P<name>[A-Za-z][A-Za-z0-9_.\-]*)             # Python distribution name
    \s*
    (?P<vrange>(?:-?\d\.\d+(?:-(?:\d\.\d+)?)?)?) # version range
    \s*
    (?P<dependency>(?:[a-z][^;]*)?)              # Debian dependency
    (?:  # optional upstream version -> Debian version translator
        ;\s*
        (?P<standard>PEP386)?                    # PEP-386 mode
        \s*
        (?P<rules>(?:s|tr|y).*)?                 # translator rules
    )?
    a_
    (?P<name>[A-Za-z][A-Za-z0-9_.]*)     # Python distribution name
    \s*
    (?P<enabled_extras>(?:\[[^\]]*\])?)  # ignored for now
    \s*
    \(?  # optional parenthesis
    (?:  # optional minimum/maximum version
        (?P<operator><=?|>=?|==|!=)
        \s*
        (?P<version>(\w|[-.])+)
    )?
    \)?  # optional closing parenthesis
    c
Cs�t|dd��v}xl|D]d}|jd�}|jd�s|rJqtj|�stjd|jdd�d|�dSqWWd	QRXd
S)z Check if pydist file looks good.�encodingzutf-8z
�#z"invalid pydist data in file %s: %s�/�FNT���)�open�strip�
startswith�	PYDIST_RE�match�log�error�rsplit)�fpath�fp�line�r �'/usr/share/dh-python/dhpython/pydist.py�validate>s
	r"c

s�tj|�}t|�r'|g}ng}tj|��t��rq|j�fdd�tj��D��dj|�}t|�r�|j	|�i}x|D]}t
|dd���}x�|D]�}|jd�}|jd�s�|r�q�t
j|�}|s!td||f��|j�}t|d	�}	t||d
�|d<|dj�|d<|d
r�|d
jd�|d
<n
g|d
<|j|	g�j	|�q�WWdQRXq�W|S)z�Load iformation about installed Python distributions.

    :param impl: interpreter implementation, f.e. cpython2, cpython3, pypy
    :type impl: str
    c3s|]}t�|�VqdS)N)r)�.0�i)�dnamer r!�	<genexpr>[szload.<locals>.<genexpr>z%/usr/share/dh-python/dist/{}_fallbackrzutf-8z
rzinvalid pydist line: %s (in %s)�nameZvrange�versions�
dependency�rules�;N)r
�getrr	r�extend�os�listdir�format�appendrrrr�search�	Exception�	groupdict�	safe_namer�split�
setdefault)
�impl�fnameZto_checkZfbname�resultrrrZdistr'r )r%r!�loadLs:)




(r;cCs�tjd||�t|t�r.t|�}tjd�j|�j�\}}t	|�|}t
|�}tj|�}|s�tjd�t
d|��|j�}|d}|j|j��}|r�x�|D]�}|r�||jd|�kr�q�|ds
dS|djd�r(|dS|d	r�|d
sF|dr�|ddkr�t|d	|d|d
�}	d|d|d|	fS|dSq�Wt|jtt	|���}
tjd|
�td|
dddtdt�}|j�\}}
|jdkr�t�}t|d�}x@|jd�D]/}|j�sHq3|j|jd�d�q3Wt|�dkr�tjd|�q�|j �Sntjd||
�t!||�}tjd|t	|�|t"|�dS)Nz,trying to find dependency for %s (python=%s)z([^!><= \(\)\[]+)(.*)z[please ask dh_python3 author to fix REQUIRES_RE or your upstream author to fix requires.txtzrequirement is not valid: %sr'r(r)�)�version�standardr*�operator�==�!=z
%s (%s %s)zinvoking dpkg -S %sz/usr/bin/dpkg -S %s�shellT�stdout�stderrrzutf-8�
�:rz,more than one package name found for %s distz'dpkg -S did not find package for %s: %sz�Cannot find package that provides %s. Please add package that provides it to Build-Depends or add "%s %s" line to %s or add proper  dependency to Depends by hand and ignore this info.)Nr@rA)#r�debug�
isinstance�strr
�re�compiler�groupsr5r;�REQUIRES_RE�infor3r4r,�lower�endswith�
_translaterr0�	ci_regexprrZcommunicate�
returncode�setr6r�add�lenr�pop�sensible_pnamer
)r8Zreqr=r'�rest�dataZreq_dZdetails�item�vZqueryZprocessrCrDr:rZpnamer r r!�guess_dependencyws\	
$




	
	r]cCsvt|j|�}d}|rU|j�rUt|jd��dkrU|jd�}g}d}}g}t|ddd���}x�|D]�}	|	j�}	|	s�|	jd�r�|j|	�q�|	jd�r�d}|r�|j|	�q�t	||	|�}
|
r|j|
�d}q�|j|	�q�WWdQRX|rrt|d	dd��!}|j
d
d�|D��WdQRX|S)NrF�rrzutf-8r�[T�wcss|]}|dVqdS)rENr )r#r$r r r!r&�szparse_pydep.<locals>.<genexpr>)rrrLrV�grouprrrr1r]�
writelines)r8r9Z
public_dirZverr:ZmodifiedZoptional_sectionZ	processedrrr)r r r!�parse_pydep�s6-




	!rccCstjd�jd|�j�S)zEmulate distribute's safe_name.z[^A-Za-z0-9.]+�_)rJrK�subrO)r'r r r!r5�sr5cCsQt|�jdd�}|jd�r7|dd�}djt||j��S)z(Guess Debian package name from Egg name.rd�-zpython-�Nz{}-{})r5�replacerr0rrO)r8Zegg_namer r r!rX�srXcCs djdd�|j�D��S)z'Return case insensitive dpkg -S regexp.�css7|]-}|j�r+d|j�|fn|VqdS)z[%s%s]N)�isalpha�upper)r#r$r r r!r&�szci_regexp.<locals>.<genexpr>)rrO)r'r r r!rR�srRz[-.]?(alpha|beta|rc|dev|a|b|c)z\$(\d+)cCstjd|�S)zdConvert Perl RE patterns used in uscan to Python's

    >>> print(_pl2py('foo$3'))
    foo\g<3>
    z\\g<\1>)�GROUP_REre)�patternr r r!�_pl2py�srnc	CslxG|D]?}|jd
�r~|jd�r1dnd}||dd�j||�}|jtj|d|d��}q|jd�r6|dd�j|d�}tj|d�}d}|dd�r|d}d|kr�d}d	|krtj|dtj�}|jt	|d�||�}qt
jd
|�qW|dkrhtjd|�}|S)a>Translate Python version into Debian one.

    >>> _translate('1.C2betac', ['s/c//gi'], None)
    '1.2beta'
    >>> _translate('5-fooa1.2beta3-fooD',
    ...     ['s/^/1:/', 's/-foo//g', 's:([A-Z]):+$1:'], 'PEP386')
    '1:5~a1.2~beta3+D'
    >>> _translate('x.y.x.z', ['tr/xy/ab/', 'y,z,Z,'], None)
    'a.b.a.Z'
    �tr�yr�Nr�s�gr$zunknown rule ignored: %sZPEP386z~\g<1>)rorp)
rr6�	translaterI�	maketransrJrK�Irernr�warn�
PRE_VER_RE)	r=r*r>Zrule�posZtmprm�count�flagsr r r!rQ�s(
!&
"rQ)&Zloggingr.rJ�os.pathrrr�
subprocessrrrrrr	r
rZdhpython.versionrr
Zdhpython.toolsrZ	getLoggerrrK�VERBOSErrMr"r;r]rcr5rXrRrxrlrnrQr r r r!�<module>s.(+E 	

Zerion Mini Shell 1.0