B
    0*\                 @   s~   d dl Z d dlZd dlZe de jZe dZe dZdd Z	ej
ejejejejejdZG dd	 d	Zdad
d ZdS )    Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$c             C   s6   t | }|std|  | \}}|tj|fS )Nz"bad package restriction syntax: %r)re_splitComparisonmatch
ValueErrorgroups	distutilsversionStrictVersion)predresZcompZverStr r   EC:\ALexclude\prg\programme\Python37\Lib\distutils\versionpredicate.pysplitUp   s
    
r   )<z<=z==>z>=z!=c               @   s$   e Zd Zdd Zdd Zdd ZdS )VersionPredicatec             C   s   |  }|stdt|}|s.td| | \| _}|  }|rt|}|sbtd| | d }dd |dD | _| jstd| ng | _d S )	Nzempty package restrictionzbad package name in %rzexpected parenthesized list: %rr   c             S   s   g | ]}t |qS r   )r   ).0ZaPredr   r   r   
<listcomp>t   s    z-VersionPredicate.__init__.<locals>.<listcomp>,zempty parenthesized list in %r)	stripr   re_validPackager   r   namere_parensplitr	   )selfZversionPredicateStrr   Zparenstrr   r   r   __init__`   s$    


zVersionPredicate.__init__c             C   s8   | j r.dd | j D }| jd d| d S | jS d S )Nc             S   s    g | ]\}}|d  t | qS ) )r   )r   condverr   r   r   r   }   s    z,VersionPredicate.__str__.<locals>.<listcomp>z (z, ))r	   r   join)r   seqr   r   r   __str__{   s    zVersionPredicate.__str__c             C   s*   x$| j D ]\}}t| ||sdS qW dS )NFT)r	   compmap)r   r   r   r   r   r   r   satisfied_by   s    zVersionPredicate.satisfied_byN)__name__
__module____qualname__r   r"   r$   r   r   r   r   r      s   Ar   c             C   sd   t d krtdtja |  } t | }|s8td|  |dpDd }|rVtj	
|}|d|fS )Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r      )_provision_rxrecompileASCIIr   r   r   groupr   r   r   )valuemr   r   r   r   split_provision   s    
r1   )r+   Zdistutils.versionr   operatorr,   r-   r   r   r   r   ltleeqgtgener#   r   r*   r1   r   r   r   r   <module>   s   

n