o
     JAf                     @   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   s8   	 t | }|std|  | \}}|tj|fS )Nz"bad package restriction syntax: %r)re_splitComparisonmatch
ValueErrorgroups	distutilsversionStrictVersion)predrescompZverStr r   1/usr/lib/python3.10/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| | \| _}|  }|rNt|}|s2td| | d }dd |dD | _| jsLtd| d S 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   s4   | j rdd | j D }| jd d| d S | j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*   	 | j D ]\}}t| ||s dS q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
    @r   c                 C   sf   	 t d u rtdtja |  } t | }|std|  |dp#d }|r,t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   
r2   )r,   Zdistutils.versionr   operatorr-   r.   r   r   r   r   ltleeqgtgener$   r   r+   r2   r   r   r   r   <module>   s     

n