o
    g}”eD  ã                   @   sf  d dl Z d dlZd dlZd dlmZmZmZ d dl	m
Z
mZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZmZ G dd„ deƒZeejej ƒZed	ƒ  ¡ Z!ed
ƒ  ¡ Z"edƒ  ¡ Z#edƒ  ¡ Z$edƒ  ¡ Z%edƒ  ¡ Z&edƒ  ¡ Z'edƒZ(eee(ƒe B Z)e
eee)ƒ ƒZ*e*dƒZ+e*Z,edƒdƒZ-e'e- Z.e,ee%e, ƒ Z/e!ee/ƒ e" dƒZ0eej1e j2e j3B ƒZ4eej1e j2e j3B ƒZ5e4e5A Z6e
e6ee%e6 ƒ ddd�dƒZ7ee#e7 e$ e7B ƒZ8e8 9dd„ ¡ ee8ƒdƒZ:e: 9dd„ ¡ eeƒ ƒdƒZe 9dd„ ¡ e&Z;e;e Z<e:ee<ƒ Z=e.ee<ƒ Z>e+ee0ƒ e>e=B  Z?ee? e Z@e@ Ad¡ G dd „ d ƒZBdS )!é    N)ÚListÚOptionalÚSet)
ÚCombineÚLiteralr   ÚParseExceptionÚRegexÚWordÚ
ZeroOrMoreÚoriginalTextForÚ	stringEndÚstringStarté   )ÚMARKER_EXPRÚMarker)ÚLegacySpecifierÚ	SpecifierÚSpecifierSetc                   @   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   úk/Users/abhinavbhinder/Documents/map/venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.pyr      s    r   ú[ú]ú(ú)ú,ú;ú@z-_.Únamez[^ ]+ÚurlÚextrasF)Z
joinStringZadjacentÚ	_raw_specc                 C   s
   |j pdS )NÚ )r%   ©ÚsÚlÚtr   r   r   Ú<lambda>@   s   
 r+   Ú	specifierc                 C   s   |d S )Nr   r   r'   r   r   r   r+   C   s    Úmarkerc                 C   s   t | |j|j… ƒS )N)r   Z_original_startZ_original_endr'   r   r   r   r+   G   s    zx[]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dS )ÚRequirementzÁParse 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d||j|jd … ›d|j› �ƒ‚d }~ww |j| _|jratj	 
|j¡}|jdkrHtj	 |¡|jkrGtdƒ‚n|jrT|jrT|js\|js\td|j› �ƒ‚|j| _nd | _t|jrm|j ¡ ng ƒ| _t|jƒ| _|jr€|j| _d S d | _d S )NzParse error at "é   z": ÚfilezInvalid URL givenzInvalid URL: )ÚREQUIREMENTÚparseStringr   r   ÚlocÚmsgr"   r#   ÚurllibÚparseÚurlparseÚschemeÚ
urlunparseÚnetlocÚsetr$   ZasListr   r,   r-   )Úselfr/   ÚreqÚeZ
parsed_urlr   r   r   Ú__init__d   s4    ÿ€ÿ
ÿÿÿ
zRequirement.__init__c                 C   s�   | j g}| jrd t| jƒ¡}| d|› d�¡ | jr#| t| jƒ¡ | jr7| d| j› �¡ | jr7| d¡ | jrC| d| j› �¡ d |¡S )Nr   r   r   z@ ú z; r&   )	r"   r$   ÚjoinÚsortedÚappendr,   Ústrr#   r-   )r>   ÚpartsZformatted_extrasr   r   r   Ú__str__}   s   

zRequirement.__str__c                 C   s   d| › d�S )Nz<Requirement('z')>r   )r>   r   r   r   Ú__repr__‘   s   zRequirement.__repr__)r   r   r   r   rF   rA   rH   rI   r   r   r   r   r.   W   s
    r.   )CÚreÚstringÚurllib.parser7   Útypingr   r   Z	TOptionalr   Zpip._vendor.pyparsingr   r   ÚLr   r   r	   r
   r   r   r   Úmarkersr   r   Ú
specifiersr   r   r   Ú
ValueErrorr   Úascii_lettersÚdigitsZALPHANUMÚsuppressZLBRACKETZRBRACKETZLPARENZRPARENÚCOMMAZ	SEMICOLONÚATZPUNCTUATIONZIDENTIFIER_ENDZ
IDENTIFIERÚNAMEZEXTRAZURIÚURLZEXTRAS_LISTZEXTRASÚ
_regex_strÚVERBOSEÚ
IGNORECASEZVERSION_PEP440ZVERSION_LEGACYZVERSION_ONEZVERSION_MANYZ_VERSION_SPECZsetParseActionZVERSION_SPECZMARKER_SEPARATORZMARKERZVERSION_AND_MARKERZURL_AND_MARKERZNAMED_REQUIREMENTr3   r4   r.   r   r   r   r   Ú<module>   sb   0ÿþÿ
