o
    g                     @   sz   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mZ ddlmZ ddlmZ G dd	 d	eZG d
d dZdS )    )AnyIteratorOptionalSet   )parse_requirement)ParserSyntaxError)Marker_normalize_extra_values)SpecifierSet)canonicalize_namec                   @   s   e Zd ZdZdS )InvalidRequirementzJ
    An invalid requirement was found, users should refer to PEP 508.
    N)__name__
__module____qualname____doc__ r   r   c/var/www/html/portale_awareness/portale-venv/lib/python3.10/site-packages/packaging/requirements.pyr      s    r   c                   @   st   e Zd ZdZdeddfddZdedee fdd	Z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 )RequirementzParse a requirement.

    Parse a given requirement string into its parts, such as name, specifier,
    URL, and extras. Raises InvalidRequirement on a badly-formed requirement
    string.
    requirement_stringreturnNc              
   C   s   zt |}W n ty } ztt||d }~ww |j| _|jp"d | _t|jr+|jng | _t|j	| _	d | _
|j
d urLtt| _
t|j
| j
_d S d S N)_parse_requirementr   r   strnameurlsetextrasr   	specifiermarkerr	   __new__r
   _markers)selfr   parseder   r   r   __init__!   s   
zRequirement.__init__r   c                 c   sz    |V  | j rdt| j }d| dV  | jrt| jV  | jr/d| j V  | jr/dV  | jr;d| j V  d S d S )N,[]z@  z; )r   joinsortedr   r   r   r   )r"   r   formatted_extrasr   r   r   _iter_parts0   s   zRequirement._iter_partsc                 C   s   d | | jS )N )r*   r-   r   r"   r   r   r   __str__B   s   zRequirement.__str__c                 C   s   d|  dS )Nz<Requirement('z')>r   r/   r   r   r   __repr__E   s   zRequirement.__repr__c                 C   s    t | jjg| t| jR S r   )hash	__class__r   r-   r   r   r/   r   r   r   __hash__H   s   zRequirement.__hash__otherc                 C   sR   t |tstS t| jt|jko(| j|jko(| j|jko(| j|jko(| j|jkS r   )	
isinstancer   NotImplementedr   r   r   r   r   r   )r"   r5   r   r   r   __eq__P   s   




zRequirement.__eq__)r   r   r   r   r   r%   r   r-   r0   r1   intr4   r   boolr8   r   r   r   r   r      s    r   N)typingr   r   r   r   _parserr   r   
_tokenizerr   markersr	   r
   
specifiersr   utilsr   
ValueErrorr   r   r   r   r   r   <module>   s   