o
    cO                     @   s   d dl mZ d dlmZmZ d dlmZ ddlmZm	Z	m
Z
mZ G dd de
ZG dd	 d	e
ZG d
d de
ZG dd de
ZdS )    )SpecifierSet)NormalizedNamecanonicalize_name)InstallRequirement   )	CandidateCandidateLookupRequirementformat_namec                   @   s   e Zd ZdeddfddZdefddZdefdd	Zede	fd
dZ
edefddZdefddZdefddZdedefddZdS )ExplicitRequirement	candidatereturnNc                 C   
   || _ d S Nr   selfr    r   ]/opt/certbot/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py__init__
      
zExplicitRequirement.__init__c                 C   s
   t | jS r   )strr   r   r   r   r   __str__   r   zExplicitRequirement.__str__c                 C   s   dj | jj| jdS )Nz{class_name}({candidate!r}))
class_namer   )format	__class____name__r   r   r   r   r   __repr__   s   zExplicitRequirement.__repr__c                 C      | j jS r   )r   project_namer   r   r   r   r          z ExplicitRequirement.project_namec                 C   r   r   )r   namer   r   r   r   r"      r!   zExplicitRequirement.namec                 C   s
   | j  S r   )r   format_for_errorr   r   r   r   r#       r   z$ExplicitRequirement.format_for_errorc                 C   s
   | j d fS r   r   r   r   r   r   get_candidate_lookup#   r   z(ExplicitRequirement.get_candidate_lookupc                 C   s
   || j kS r   r   r   r   r   r   is_satisfied_by&   r   z#ExplicitRequirement.is_satisfied_by)r   
__module____qualname__r   r   r   r   r   propertyr   r    r"   r#   r   r$   boolr%   r   r   r   r   r   	   s    r   c                   @   s   e Zd ZdeddfddZdefddZdefdd	Zede	fd
dZ
edefddZdefddZdefddZdedefddZdS )SpecifierRequirementireqr   Nc                 C   s(   |j d u s	J d|| _t|j| _d S )NzThis is a link, not a specifier)link_ireq	frozensetextras_extras)r   r+   r   r   r   r   +   s   zSpecifierRequirement.__init__c                 C   s   t | jjS r   )r   r-   reqr   r   r   r   r   0      zSpecifierRequirement.__str__c                 C   s   dj | jjt| jjdS )Nz{class_name}({requirement!r}))r   requirement)r   r   r   r   r-   r1   r   r   r   r   r   3   s   
zSpecifierRequirement.__repr__c                 C   s   | j jsJ dt| j jjS )N'Specifier-backed ireq is always PEP 508)r-   r1   r   r"   r   r   r   r   r    9   s   z!SpecifierRequirement.project_namec                 C   s   t | j| jS r   )r
   r    r0   r   r   r   r   r"   >   s   zSpecifierRequirement.namec                 C   sZ   dd t | dD }t|dkrdS t|dkr|d S d|d d d	 |d  S )
Nc                 S   s   g | ]}|  qS r   )strip).0sr   r   r   
<listcomp>H   s    z9SpecifierRequirement.format_for_error.<locals>.<listcomp>,r    r   z, z and )r   splitlenjoin)r   partsr   r   r   r#   B   s   z%SpecifierRequirement.format_for_errorc                 C   s
   d | j fS r   )r-   r   r   r   r   r$   P   r   z)SpecifierRequirement.get_candidate_lookupr   c                 C   sN   |j | j ksJ d|j  d| j  | jjsJ d| jjj}|j|jddS )Nz6Internal issue: Candidate is not for this requirement z vs r4   Tprereleases)r"   r-   r1   	specifiercontainsversion)r   r   specr   r   r   r%   S   s   
z$SpecifierRequirement.is_satisfied_by)r   r&   r'   r   r   r   r   r   r(   r   r    r"   r#   r   r$   r   r)   r%   r   r   r   r   r*   *   s    r*   c                   @   s   e Zd ZdZdededdfddZdefdd	Zdefd
dZ	e
defddZe
defddZdefddZdefddZdedefddZdS )RequiresPythonRequirementz4A requirement representing Requires-Python metadata.rB   matchr   Nc                 C   s   || _ || _d S r   )rB   
_candidate)r   rB   rG   r   r   r   r   c   s   
z"RequiresPythonRequirement.__init__c                 C   s   d| j  S )NzPython )rB   r   r   r   r   r   g   r2   z!RequiresPythonRequirement.__str__c                 C      dj | jjt| jdS )Nz{class_name}({specifier!r}))r   rB   )r   r   r   r   rB   r   r   r   r   r   j      z"RequiresPythonRequirement.__repr__c                 C   r   r   )rH   r    r   r   r   r   r    p      z&RequiresPythonRequirement.project_namec                 C   r   r   )rH   r"   r   r   r   r   r"   t   rK   zRequiresPythonRequirement.namec                 C      t | S r   r   r   r   r   r   r#   x      z*RequiresPythonRequirement.format_for_errorc                 C   s"   | j j| jjddr| jd fS dS )NTr@   NN)rB   rC   rH   rD   r   r   r   r   r$   {   s   
z.RequiresPythonRequirement.get_candidate_lookupr   c                 C   s(   |j | jj ksJ d| jj|jddS )NzNot Python candidateTr@   )r"   rH   rB   rC   rD   r   r   r   r   r%      s   z)RequiresPythonRequirement.is_satisfied_by)r   r&   r'   __doc__r   r   r   r   r   r   r(   r   r    r"   r#   r   r$   r)   r%   r   r   r   r   rF   `   s    rF   c                   @   s   e Zd ZdZdeddfddZdefddZdefd	d
Ze	defddZ
e	defddZdefddZdefddZdedefddZdS )UnsatisfiableRequirementz'A requirement that cannot be satisfied.r"   r   Nc                 C   r   r   _name)r   r"   r   r   r   r      r   z!UnsatisfiableRequirement.__init__c                 C   s   | j  dS )Nz (unavailable)rR   r   r   r   r   r      r2   z UnsatisfiableRequirement.__str__c                 C   rI   )Nz{class_name}({name!r}))r   r"   )r   r   r   r   rS   r   r   r   r   r      rJ   z!UnsatisfiableRequirement.__repr__c                 C      | j S r   rR   r   r   r   r   r          z%UnsatisfiableRequirement.project_namec                 C   rT   r   rR   r   r   r   r   r"      rU   zUnsatisfiableRequirement.namec                 C   rL   r   rM   r   r   r   r   r#      rN   z)UnsatisfiableRequirement.format_for_errorc                 C      dS )NrO   r   r   r   r   r   r$         z-UnsatisfiableRequirement.get_candidate_lookupr   c                 C   rV   )NFr   r   r   r   r   r%      rW   z(UnsatisfiableRequirement.is_satisfied_by)r   r&   r'   rP   r   r   r   r   r   r(   r    r"   r#   r   r$   r   r)   r%   r   r   r   r   rQ      s    rQ   N) pip._vendor.packaging.specifiersr   pip._vendor.packaging.utilsr   r   pip._internal.req.req_installr   baser   r   r	   r
   r   r*   rF   rQ   r   r   r   r   <module>   s    !6(