File: //usr/share/dh-python/dhpython/__pycache__/pydist.cpython-39.pyc
a
��:`s: � @ s< d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl m
Z
mZ edkrzd dl
Z
e
j�ej�eej�e�d��� d dlmZmZmZmZmZ d dlmZmZ d d lmZ e �d
�Ze� dej!�Z"e� dej!�Z#d
dddd�Z$dd� Z%edd� �Z&d2dd�Z'd3dd�Z(dd� Z)dd� Z*dd � Z+e� d!�Z,e� d"�Z-d#d$� Z.d%d&� Z/d'd(� Z0d)d*� Z1edk�r8ej2�3d+d,�Z4e
j5d-d� D ]�Z6ej�7e6��r�ze8d.�e(e4e6�d/ �� W n4 e9�y� Z: ze�;d0e6e:� W Y dZ:[:n
dZ:[:0 0 nNze8e'e4e6��p�d1� W n4 e9�y2 Z: ze�;d0e6e:� W Y dZ:[:n
dZ:[:0 0 �q�dS )4� N)�partial)�exists�isdir�join)�PIPE�Popen�__main__z..)�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
)?
a2
(?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 interval minimum/maximum version
\s*
,
\s*
(?P<operator2><=?|>=?|==|!=)
\s*
(?P<version2>(\w|[-.])+)
)?
)?
\)? # optional closing parenthesis
�=�<<z>>z>=)z==�<�>�~=c C s� t | dd��h}|D ]R}|�� }|�d�s|s.qt�|�st�d| �dd�d |� W d � d S qW d � n1 sz0 Y d
S )z Check if pydist file looks good.�utf-8��encoding�#z"invalid pydist data in file %s: %s�/� ���NFT)�open�strip�
startswith� PYDIST_RE�match�log�error�rsplit)�fpath�fp�line� r) �'/usr/share/dh-python/dhpython/pydist.py�validateR s
�2r+ c
sX t �| �}t|�r|g}ng }t�| �� t� �rN|�� fdd�t�� �D �� d�| �}t|�rj|� |� i }|D ]�}t
|dd���}|D ]�}|�� }|�d�s�|s�q�t
�|�}|s�td||f ��|�� }t|d �} t| |d �|d
<