a
    0f                     @   s   d dl mZmZ d dlmZ d dlmZmZ d dl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G dd deZdS )    )AnyOptional)SpecifierSet)NormalizedNamecanonicalize_name)install_req_drop_extras)InstallRequirement   )	CandidateCandidateLookupRequirementformat_namec                   @   s   e Zd ZeddddZedddZeddd	Zedd
dZ	e
edddZeedddZeedddZedddZedddZeedddZdS )ExplicitRequirementN	candidatereturnc                 C   s
   || _ d S Nr   selfr    r   i/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py__init__   s    zExplicitRequirement.__init__r   c                 C   s
   t | jS r   )strr   r   r   r   r   __str__   s    zExplicitRequirement.__str__c                 C   s   | j j d| jdS N())	__class____name__r   r   r   r   r   __repr__   s    zExplicitRequirement.__repr__c                 C   s
   t | jS r   )hashr   r   r   r   r   __hash__   s    zExplicitRequirement.__hash__otherr   c                 C   s   t |tsdS | j|jkS NF)
isinstancer   r   r   r&   r   r   r   __eq__   s    
zExplicitRequirement.__eq__c                 C   s   | j jS r   )r   project_namer   r   r   r   r+      s    z ExplicitRequirement.project_namec                 C   s   | j jS r   )r   namer   r   r   r   r,   #   s    zExplicitRequirement.namec                 C   s
   | j  S r   )r   format_for_errorr   r   r   r   r-   (   s    z$ExplicitRequirement.format_for_errorc                 C   s
   | j d fS r   r   r   r   r   r   get_candidate_lookup+   s    z(ExplicitRequirement.get_candidate_lookupc                 C   s
   || j kS r   r   r   r   r   r   is_satisfied_by.   s    z#ExplicitRequirement.is_satisfied_by)r!   
__module____qualname__r
   r   r   r   r"   intr$   r   boolr*   propertyr   r+   r,   r-   r   r.   r/   r   r   r   r   r      s   r   c                   @   s   e Zd ZeddddZeedddZeddd	Zedd
dZ	e
edddZedddZeedddZeedddZedddZedddZeedddZdS )SpecifierRequirementNireqr   c                 C   s@   |j d u sJ d|| _d | _d | _tdd | jjD | _d S )NThis is a link, not a specifierc                 s   s   | ]}t |V  qd S r   r   .0er   r   r   	<genexpr>8       z0SpecifierRequirement.__init__.<locals>.<genexpr>)link_ireq_equal_cache_hash	frozensetextras_extrasr   r7   r   r   r   r   3   s
    zSpecifierRequirement.__init__r   c                 C   s"   | j d ur| j S t| j| _ | j S r   rA   r   r@   r   r   r   r   _equal:   s    
zSpecifierRequirement._equalc                 C   s   t | jjS r   )r   r@   reqr   r   r   r   r   B   s    zSpecifierRequirement.__str__c                 C   s   | j j dt| jjdS r   )r    r!   r   r@   rI   r   r   r   r   r"   E   s    zSpecifierRequirement.__repr__r%   c                 C   s   t |tstS | j|jkS r   )r(   r5   NotImplementedrH   r)   r   r   r   r*   H   s    
zSpecifierRequirement.__eq__c                 C   s"   | j d ur| j S t| j| _ | j S r   rB   r#   rH   r   r   r   r   r$   M   s    
zSpecifierRequirement.__hash__c                 C   s   | j jsJ dt| j jjS )N'Specifier-backed ireq is always PEP 508)r@   rI   r   r,   r   r   r   r   r+   T   s    z!SpecifierRequirement.project_namec                 C   s   t | j| jS r   )r   r+   rE   r   r   r   r   r,   Y   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)r;   sr   r   r   
<listcomp>b   r>   z9SpecifierRequirement.format_for_error.<locals>.<listcomp>,r    r	   z, z and )r   splitlenjoin)r   partsr   r   r   r-   ]   s    z%SpecifierRequirement.format_for_errorc                 C   s
   d | j fS r   )r@   r   r   r   r   r.   j   s    z)SpecifierRequirement.get_candidate_lookupr   c                 C   sN   |j | j ks$J d|j  d| j  | jjs4J d| jjj}|j|jddS )Nz6Internal issue: Candidate is not for this requirement z vs rL   Tprereleases)r,   r@   rI   	specifiercontainsversion)r   r   specr   r   r   r/   m   s    
z$SpecifierRequirement.is_satisfied_by)r!   r0   r1   r   r   r4   r   rH   r   r"   objectr3   r*   r2   r$   r   r+   r,   r-   r   r.   r
   r/   r   r   r   r   r5   2   s   r5   c                   @   sP   e Zd ZdZeddddZeedddZe	e
d	d
dZedddZdS )!SpecifierWithoutExtrasRequirementz
    Requirement backed by an install requirement on a base package.
    Trims extras from its install requirement if there are any.
    Nr6   c                 C   sD   |j d u sJ dt|| _d | _d | _tdd | jjD | _d S )Nr8   c                 s   s   | ]}t |V  qd S r   r9   r:   r   r   r   r=      r>   z=SpecifierWithoutExtrasRequirement.__init__.<locals>.<genexpr>)r?   r   r@   rA   rB   rC   rD   rE   rF   r   r   r   r      s
    
z*SpecifierWithoutExtrasRequirement.__init__r   c                 C   s"   | j d ur| j S t| j| _ | j S r   rG   r   r   r   r   rH      s    
z(SpecifierWithoutExtrasRequirement._equalr%   c                 C   s   t |tstS | j|jkS r   )r(   r^   rJ   rH   r)   r   r   r   r*      s    
z(SpecifierWithoutExtrasRequirement.__eq__c                 C   s"   | j d ur| j S t| j| _ | j S r   rK   r   r   r   r   r$      s    
z*SpecifierWithoutExtrasRequirement.__hash__)r!   r0   r1   __doc__r   r   r4   r   rH   r]   r3   r*   r2   r$   r   r   r   r   r^   z   s   r^   c                   @   s   e Zd ZdZeeddddZedddZedd	d
Z	e
dddZeedddZeedddZeedddZedddZedddZeedddZdS )RequiresPythonRequirementz4A requirement representing Requires-Python metadata.N)rY   matchr   c                 C   s    || _ t|| _d | _|| _d S r   )rY   r   _specifier_stringrB   
_candidate)r   rY   ra   r   r   r   r      s    
z"RequiresPythonRequirement.__init__r   c                 C   s   d| j  S )NzPython )rY   r   r   r   r   r      s    z!RequiresPythonRequirement.__str__c                 C   s   | j j dt| jdS r   )r    r!   r   rY   r   r   r   r   r"      s    z"RequiresPythonRequirement.__repr__c                 C   s(   | j d ur| j S t| j| jf| _ | j S r   )rB   r#   rb   rc   r   r   r   r   r$      s    
z"RequiresPythonRequirement.__hash__r%   c                 C   s&   t |tsdS | j|jko$| j|jkS r'   )r(   r`   rb   rc   r)   r   r   r   r*      s
    

z RequiresPythonRequirement.__eq__c                 C   s   | j jS r   )rc   r+   r   r   r   r   r+      s    z&RequiresPythonRequirement.project_namec                 C   s   | j jS r   )rc   r,   r   r   r   r   r,      s    zRequiresPythonRequirement.namec                 C   s   t | S r   r   r   r   r   r   r-      s    z*RequiresPythonRequirement.format_for_errorc                 C   s"   | j j| jjddr| jd fS dS )NTrW   NN)rY   rZ   rc   r[   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 candidateTrW   )r,   rc   rY   rZ   r[   r   r   r   r   r/      s    z)RequiresPythonRequirement.is_satisfied_by)r!   r0   r1   r_   r   r
   r   r   r   r"   r2   r$   r   r3   r*   r4   r   r+   r,   r-   r   r.   r/   r   r   r   r   r`      s   r`   c                   @   s   e Zd ZdZeddddZedddZedd	d
Ze	e
dddZedddZeedddZeedddZedddZedddZee
dddZdS )UnsatisfiableRequirementz'A requirement that cannot be satisfied.N)r,   r   c                 C   s
   || _ d S r   _name)r   r,   r   r   r   r      s    z!UnsatisfiableRequirement.__init__r   c                 C   s   | j  dS )Nz (unavailable)rg   r   r   r   r   r      s    z UnsatisfiableRequirement.__str__c                 C   s   | j j dt| jdS r   )r    r!   r   rh   r   r   r   r   r"      s    z!UnsatisfiableRequirement.__repr__r%   c                 C   s   t |tstS | j|jkS r   )r(   rf   rJ   rh   r)   r   r   r   r*      s    
zUnsatisfiableRequirement.__eq__c                 C   s
   t | jS r   )r#   rh   r   r   r   r   r$      s    z!UnsatisfiableRequirement.__hash__c                 C   s   | j S r   rg   r   r   r   r   r+      s    z%UnsatisfiableRequirement.project_namec                 C   s   | j S r   rg   r   r   r   r   r,      s    zUnsatisfiableRequirement.namec                 C   s   t | S r   rd   r   r   r   r   r-      s    z)UnsatisfiableRequirement.format_for_errorc                 C   s   dS )Nre   r   r   r   r   r   r.      s    z-UnsatisfiableRequirement.get_candidate_lookupr   c                 C   s   dS r'   r   r   r   r   r   r/      s    z(UnsatisfiableRequirement.is_satisfied_by)r!   r0   r1   r_   r   r   r   r   r"   r]   r3   r*   r2   r$   r4   r+   r,   r-   r   r.   r
   r/   r   r   r   r   rf      s   rf   N)typingr   r   Z pip._vendor.packaging.specifiersr   Zpip._vendor.packaging.utilsr   r   pip._internal.req.constructorsr   Zpip._internal.req.req_installr   baser
   r   r   r   r   r5   r^   r`   rf   r   r   r   r   <module>   s   &H"6