U
    cUh                     @   s   d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZ eed	 ee f Ze
ee
 ed
ddZeddG dd dZG dd dZed	edddZG dd	 d	ZdS )    )	dataclass)	FrozenSetIterableOptionalTuple)SpecifierSet)NormalizedName)Version)Linklinks_equivalent)InstallRequirement)Hashes	Candidate)projectextrasreturnc                 C   s&   |s| S d t|}|  d| dS )N,[])joinsorted)r   r   Zextras_expr r   h/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/base.pyformat_name   s    r   T)frozenc                   @   s~   e Zd ZU eed< eed< ee ed< ed dddZ	ee
d ddd	Zedd
dZe
d dddZdedddZdS )
Constraint	specifierhasheslinksr   c                 C   s   t t t t S N)r   r   r   	frozenset)clsr   r   r   empty   s    zConstraint.empty)ireqr   c                 C   s.   |j rt|j gnt }t|j|jdd|S NF)trust_internet)linkr!   r   r   r   )r"   r$   r   r   r   r   	from_ireq    s    zConstraint.from_ireqc                 C   s   t | jpt | jpt | jS r    )boolr   r   r   selfr   r   r   __bool__%   s    zConstraint.__bool__)otherr   c                 C   sR   t |tstS | j|j@ }| j|jdd@ }| j}|jrF||jg}t|||S r%   )	
isinstancer   NotImplementedr   r   r   r'   unionr   )r+   r-   r   r   r   r   r   r   __and__(   s    
zConstraint.__and__r   	candidater   c                    s4   | j r"t fdd| j D s"dS | jj jddS )Nc                 3   s   | ]}t | V  qd S r    )_match_link).0r'   r3   r   r   	<genexpr>4   s     z-Constraint.is_satisfied_by.<locals>.<genexpr>FT)prereleases)r   allr   containsversionr+   r3   r   r6   r   is_satisfied_by2   s    zConstraint.is_satisfied_byN)__name__
__module____qualname__r   __annotations__r   r   r
   classmethodr#   r   r(   r)   r,   r1   r=   r   r   r   r   r      s   

r   c                   @   s\   e Zd ZeedddZeedddZdeddd	Z	e
dd
dZedddZdS )Requirementr   c                 C   s   t ddS )zThe "project name" of a requirement.

        This is different from ``name`` if this requirement contains extras,
        in which case ``name`` would contain the ``[...]`` part, while this
        refers to the name of the project.
        Subclass should overrideNNotImplementedErrorr*   r   r   r   project_name=   s    zRequirement.project_namec                 C   s   t ddS )zThe name identifying this requirement in the resolver.

        This is different from ``project_name`` if this requirement contains
        extras, where ``project_name`` would not contain the ``[...]`` part.
        rD   NrE   r*   r   r   r   nameG   s    zRequirement.namer   r2   c                 C   s   dS NFr   r<   r   r   r   r=   P   s    zRequirement.is_satisfied_byc                 C   s   t dd S NrD   rE   r*   r   r   r   get_candidate_lookupS   s    z Requirement.get_candidate_lookupc                 C   s   t dd S rJ   rE   r*   r   r   r   format_for_errorV   s    zRequirement.format_for_errorN)r>   r?   r@   propertyr   rG   strrH   r)   r=   CandidateLookuprK   rL   r   r   r   r   rC   <   s   	rC   )r'   r3   r   c                 C   s   |j rt| |j S dS rI   )source_linkr   )r'   r3   r   r   r   r4   Z   s    r4   c                   @   s   e Zd ZeedddZeedddZeedddZ	ee
ddd	Zee
dd
dZeee dddZe
eee  dddZee dddZedddZdS )r   r   c                 C   s   t ddS )zThe "project name" of the candidate.

        This is different from ``name`` if this candidate contains extras,
        in which case ``name`` would contain the ``[...]`` part, while this
        refers to the name of the project.
        Override in subclassNrE   r*   r   r   r   rG   a   s    zCandidate.project_namec                 C   s   t ddS )zThe name identifying this candidate in the resolver.

        This is different from ``project_name`` if this candidate contains
        extras, where ``project_name`` would not contain the ``[...]`` part.
        rQ   NrE   r*   r   r   r   rH   k   s    zCandidate.namec                 C   s   t dd S NrQ   rE   r*   r   r   r   r;   t   s    zCandidate.versionc                 C   s   t dd S rR   rE   r*   r   r   r   is_installedx   s    zCandidate.is_installedc                 C   s   t dd S rR   rE   r*   r   r   r   is_editable|   s    zCandidate.is_editablec                 C   s   t dd S rR   rE   r*   r   r   r   rP      s    zCandidate.source_link)with_requiresr   c                 C   s   t dd S rR   rE   )r+   rU   r   r   r   iter_dependencies   s    zCandidate.iter_dependenciesc                 C   s   t dd S rR   rE   r*   r   r   r   get_install_requirement   s    z!Candidate.get_install_requirementc                 C   s   t dd S rJ   rE   r*   r   r   r   rL      s    zCandidate.format_for_errorN)r>   r?   r@   rM   r   rG   rN   rH   r	   r;   r)   rS   rT   r   r
   rP   r   rC   rV   r   rW   rL   r   r   r   r   r   `   s   	N)dataclassesr   typingr   r   r   r   Z pip._vendor.packaging.specifiersr   pip._vendor.packaging.utilsr   pip._vendor.packaging.versionr	   pip._internal.models.linkr
   r   pip._internal.req.req_installr   pip._internal.utils.hashesr   rO   rN   r   r   rC   r)   r4   r   r   r   r   r   <module>   s   %