§
    øyIfM  ã                  óä  — d Z ddlmZ ddlZddlZddlZddlZddlZddl	m
Z
mZ ddlmZ ddlmZmZmZmZmZmZ ddlmZ ddlZddlmZmZ d	d
lmZ d	dlmZmZm Z m!Z!  ej"        d¦  «        Z# ej"        dej$        ¦  «        Z% ej"        d¦  «        Z& ej"        d¦  «        Z' ej"        d¦  «        Z(eee)e*f                  Z+dZ, G d„ d¦  «        Z- G d„ d¦  «        Z. G d„ d¦  «        Z/dZ0dS )zAdapted from the pip code base.é    )ÚannotationsN)ÚArgumentParserÚ	Namespace)ÚPath)ÚIOÚAnyÚIteratorÚListÚTupleÚcast)Úurlopen)ÚInvalidRequirementÚRequirementé   )Úbuild_parser)ÚVCSÚget_url_schemeÚis_urlÚurl_to_pathz!(?P<var>\${(?P<name>[A-Z0-9_]+)})z^(http|https|file):z(^|\s+)#.*$z(.*)\[([-._,\sa-zA-Z0-9]*)]z[a-zA-Z0-9]*[-._a-zA-Z0-9]zhttps://pypi.org/simplec                  óŽ   — e Zd Zdd
„Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zdd„Z	dd„Z
dd„ZdS )ÚParsedRequirementÚreqÚstrÚoptionsúdict[str, Any]Ú	from_fileÚlinenoÚintÚreturnÚNonec                ó¦  ‡— ‰                      d¦  «                             d¦  «        Š	 t          ‰¦  «        | _        �nû# t          $ �rí t          ‰¦  «        s t          ˆfd„t          D ¦   «         ¦  «        r	‰| _        �n²t          |¦  «        j	        }g }t                               t          ‰¦  «        j        ¦  «        }|r¨|                     d¦  «                             d¦  «        D ]Q}|                     ¦   «         }|sŒt                                |¦  «        s	g }|‰z  }	 nC|                     |¦  «         ŒR|t          ‰¦  «        j	        z  |                     d¦  «        z  }	n|‰z  }	|r&dd                     t'          |¦  «        ¦  «        › d�nd}
	 t)          |	                     ¦   «                              |¦  «        ¦  «        }|d	k    rt.          j        |vrd	t.          j        › |› �}n1# t2          $ r$ t)          |	                     ¦   «         ¦  «        }Y nw xY w|› |
› �| _        Y nw xY w|| _        || _        || _        d S )
Nzutf-8c              3  ó–   •K  — | ]C}‰                      |› d �¦  «        o&t          ‰t          |¦  «        dz   d…         ¦  «        V — ŒDdS )ú+r   N)Ú
startswithr   Úlen)Ú.0Úvr   s     €úS/var/www/piapp/venv/lib/python3.11/site-packages/tox/tox_env/python/pip/req/file.pyú	<genexpr>z-ParsedRequirement.__init__.<locals>.<genexpr>(   sW   øè è € Ð!eÐ!eÐ\] #§.¢.°A°°°Ñ"9Ô"9Ð"W½fÀSÍÈQÉÌÐRSÉÈÈÔEVÑ>WÔ>WÐ!eÐ!eÐ!eÐ!eÐ!eÐ!eó    é   ú,r   ú[ú]Ú ú.)ÚencodeÚdecoder   Ú_requirementr   r   Úanyr   r   ÚparentÚ_EXTRA_PATHÚ	fullmatchÚnameÚgroupÚsplitÚstripÚ_EXTRA_ELEMENTÚappendÚjoinÚsortedr   ÚresolveÚrelative_toÚosÚsepÚ
ValueErrorÚ_optionsÚ
_from_fileÚ_lineno)Úselfr   r   r   r   ÚrootÚextrasÚmatchÚextraÚpathÚ
extra_partÚrel_paths    `          r(   Ú__init__zParsedRequirement.__init__#   sY  ø€ Ø�jŠj˜Ñ!Ô!×(Ò(¨Ñ1Ô1ˆð 	>Ý:EÀcÑ:JÔ:JˆDÔÑøÝ!ð 	>ñ 	>ð 	>Ý�c‰{Œ{ð >�cÐ!eÐ!eÐ!eÐ!eÕadÐ!eÑ!eÔ!eÑeÔeð >Ø$'�Ô!Ñ!å˜I‘”Ô-�Ø$&�Ý#×-Ò-­d°3©i¬i¬nÑ=Ô=�Øð &Ø!&§¢¨Q¡¤×!5Ò!5°cÑ!:Ô!:ð 
Hð 
H˜Ø %§¢¡¤˜Ø$ð %Ø$Ý-×7Ò7¸Ñ>Ô>ð "Ø%'˜FØ#'¨#¡:˜DØ!˜EØŸš eÑ,Ô,Ð,Ð,à#¥d¨3¡i¤iÔ&6Ñ6¸¿ºÀQ¹¼ÑG˜øà #™:�DØ@FÐNÐ< §¢­&°©.¬.Ñ!9Ô!9Ð<Ð<Ð<Ð<ÈB�
ð3Ý" 4§<¢<¡>¤>×#=Ò#=¸dÑ#CÔ#CÑDÔD�Hà 3’�­2¬6¸Ð+AÐ+AØ#9¥r¤vÐ#9¨xÐ#9Ð#9˜øøÝ!ð 3ð 3ð 3Ý" 4§<¢<¡>¤>Ñ2Ô2�H�H�Hð3øøøð (0Ð$=°Ð$=Ð$=�Ô!øøð=	>øøøð>  ˆŒØ#ˆŒØˆŒˆˆs7   «A ÁEH9Æ AG:Ç9H9Ç:+H(È%H9È'H(È(H9È8H9úRequirement | Path | strc                ó   — | j         S ©N)r3   ©rH   s    r(   ÚrequirementzParsedRequirement.requirementJ   s   € àÔ Ð r*   c                ó   — | j         S rS   )rF   rT   s    r(   r   zParsedRequirement.from_fileN   s
   € àŒÐr*   c                ó   — | j         S rS   )rG   rT   s    r(   r   zParsedRequirement.linenoR   s
   € àŒ|Ðr*   c                ó   — | j         S rS   )rE   rT   s    r(   r   zParsedRequirement.optionsV   s
   € àŒ}Ðr*   c                óŠ   — | j         j        › d| j        › d�}| j        r|d| j        ›d�z  }|                     d¦  «        › d�S )Nz(requirement=z, zoptions=ú))Ú	__class__Ú__name__r3   rE   Úrstrip)rH   Úbases     r(   Ú__repr__zParsedRequirement.__repr__Z   s]   € Ø”.Ô)ÐMÐM¸Ô8IÐMÐMÐMˆØŒ=ð 	3ØÐ2˜tœ}Ð2Ð2Ð2Ñ2ˆDØ—+’+˜dÑ#Ô#Ð&Ð&Ð&Ð&r*   c                ó¤  — g }| j                              d¦  «        r|                     d¦  «         | j                              d¦  «        r|                     d¦  «         |                     t          | j        ¦  «        ¦  «         | j                              dg ¦  «        D ]}|                     d|f¦  «         Œd                     |¦  «        S )NÚis_constraintú-cÚis_editableú-eÚhashz--hashú )r   Úgetr=   r   rU   Úextendr>   )rH   ÚresultÚ
hash_values      r(   Ú__str__zParsedRequirement.__str__`   sÅ   € ØˆØŒ<×Ò˜OÑ,Ô,ð 	 Ø�MŠM˜$ÑÔÐØŒ<×Ò˜MÑ*Ô*ð 	 Ø�MŠM˜$ÑÔÐØ�Š•c˜$Ô*Ñ+Ô+Ñ,Ô,Ð,Øœ,×*Ò*¨6°2Ñ6Ô6ð 	2ð 	2ˆJØ�MŠM˜8 ZÐ0Ñ1Ô1Ð1Ð1Ø�xŠx˜ÑÔÐr*   úIterator[str]c              #  ór   K  — | j                              d¦  «        rdV — t          | j        ¦  «        V — d S )Nrc   rd   )r   rg   r   r3   rT   s    r(   Úas_argszParsedRequirement.as_argsk   sD   è è € ØŒ<×Ò˜MÑ*Ô*ð 	ØˆJˆJˆJÝ�$Ô#Ñ$Ô$Ð$Ð$Ð$Ð$Ð$r*   N)
r   r   r   r   r   r   r   r   r   r    )r   rQ   ©r   r   )r   r   )r   r   )r   rl   )r\   Ú
__module__Ú__qualname__rP   ÚpropertyrU   r   r   r   r_   rk   rn   © r*   r(   r   r   "   så   € € € € € ð%ð %ð %ð %ðN ð!ð !ð !ñ „Xð!ð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð'ð 'ð 'ð 'ð	 ð 	 ð 	 ð 	 ð%ð %ð %ð %ð %ð %r*   r   c                  ó   — e Zd Zdd„ZdS )Ú
ParsedLineÚfilenamer   r   r   ÚargsÚoptsr   Ú
constraintÚboolr   r    c                óÐ   — || _         || _        || _        || _        |rd| _        d| _        || _        d S |j        r"d| _        d| _        |j        d         | _        d S d| _        d S )NTFr   )rv   r   rx   ry   Úis_requirementrc   rU   Ú	editables)rH   rv   r   rw   rx   ry   s         r(   rP   zParsedLine.__init__r   sƒ   € ð !ˆŒØˆŒØˆŒ	Ø$ˆŒØð 
	(Ø"&ˆDÔØ$ˆDÔØ#ˆDÔÐÐØŒ^ð 	(Ø"&ˆDÔØ#ˆDÔà#œ~¨aÔ0ˆDÔÐÐà"'ˆDÔÐÐr*   N)rv   r   r   r   rw   r   rx   r   ry   rz   r   r    )r\   rp   rq   rP   rs   r*   r(   ru   ru   q   s(   € € € € € ð(ð (ð (ð (ð (ð (r*   ru   c                  ó®  — e Zd Zd9d„Zed:d„¦   «         Zd;d
„Zed<d„¦   «         Zed=d„¦   «         Zed>d„¦   «         Z	ed?d„¦   «         Z
ed@d„¦   «         ZdAd„ZdBd„ZdCd„ZdDd„ZdEd„ZdFd!„ZdGd"„ZedHd%„¦   «         ZdId(„ZdJd*„ZedKd,„¦   «         ZdLd.„ZedMd0„¦   «         ZedNd2„¦   «         ZedNd3„¦   «         ZedNd4„¦   «         ZedOd6„¦   «         ZdPd7„Zd8S )QÚRequirementsFilerM   r   ry   rz   r   r    c                ór   — || _         || _        t          ¦   «         | _        d | _        d | _        d | _        d S rS   )Ú_pathÚ_is_constraintr   Ú_optÚ_requirementsÚ_as_root_argsÚ_parser_private)rH   rM   ry   s      r(   rP   zRequirementsFile.__init__Œ   s:   € ØˆŒ
Ø$.ˆÔÝ‘K”KˆŒ	Ø=AˆÔØ/3ˆÔØ6:ˆÔÐÐr*   c                ó   — | S rS   rs   rT   s    r(   Ú_req_parserzRequirementsFile._req_parser”   s   € àˆr*   r   c                ó,   — | j         rdnd› d| j        › �S )Nrb   ú-rrf   )ra   rM   rT   s    r(   rk   zRequirementsFile.__str__˜   s$   € ØÔ,Ð6�$�$°$ÐDÐD¸¼ÐDÐDÐDr*   c                ó   — | j         S rS   )r�   rT   s    r(   rM   zRequirementsFile.path›   s
   € àŒzÐr*   c                ó   — | j         S rS   )r‚   rT   s    r(   ra   zRequirementsFile.is_constraintŸ   s   € àÔ"Ð"r*   r   c                ó8   — |                       ¦   «          | j        S rS   )Ú_ensure_requirements_parsedrƒ   rT   s    r(   r   zRequirementsFile.options£   s   € à×(Ò(Ñ*Ô*Ð*ØŒyÐr*   úlist[ParsedRequirement]c                ót   — |                       ¦   «          t          t          t                   | j        ¦  «        S rS   )rŽ   r   r
   r   r„   rT   s    r(   ÚrequirementszRequirementsFile.requirements¨   s-   € à×(Ò(Ñ*Ô*Ð*Ý•DÕ*Ô+¨TÔ-?Ñ@Ô@Ð@r*   r   c                óx   — | j         €-t          ¦   «         | _         |                      | j         ¦  «         | j         S rS   )r†   r   Ú_extend_parserrT   s    r(   Ú_parserzRequirementsFile._parser­   s7   € àÔÐ'Ý#/¡>¤>ˆDÔ Ø×Ò Ô 4Ñ5Ô5Ð5ØÔ#Ð#r*   Úparserc                ó   — d S rS   rs   )rH   r•   s     r(   r“   zRequirementsFile._extend_parser´   s   € € € r*   c                óZ   — | j         €#|                      | j        d¬¦  «        | _         d S d S )NT©ÚoptÚrecurse)r„   Ú_parse_requirementsrƒ   rT   s    r(   rŽ   z,RequirementsFile._ensure_requirements_parsed¶   s7   € ØÔÐ%Ø!%×!9Ò!9¸d¼iÐQUÐ!9Ñ!VÔ!VˆDÔÐÐð &Ð%r*   r™   rš   c                ó´  — g t          ¦   «         }}|                      t          | j        ¦  «        | j        |¦  «        D ]}}|j        rS|                      |¦  «        }t          |¦  «        }||vr*|                     |¦  «         |                     |¦  «         Œ\|  	                    ||j
        |j        ¦  «         Œ~|                     | j        ¬¦  «         |S )N)Úkey)ÚsetÚ_parse_and_recurser   r�   ra   r|   Ú_handle_requirement_lineÚaddr=   Ú_merge_option_linerx   rv   ÚsortÚ	_key_func)rH   r™   rš   ri   ÚfoundÚparsed_lineÚ
parsed_reqr�   s           r(   r›   z$RequirementsFile._parse_requirementsº   sÑ   € Ø�C™EœE�ˆØ×2Ò2µ3°t´z±?´?ÀDÔDVÐX_Ñ`Ô`ð 	Uð 	UˆKØÔ)ð UØ!×:Ò:¸;ÑGÔG�
Ý˜*‘o”o�Ø˜eÐ#Ð#Ø—I’I˜c‘N”N�NØ—M’M *Ñ-Ô-Ð-øà×'Ò'¨¨[Ô-=¸{Ô?SÑTÔTÐTÐTØ�Š˜œˆÑ'Ô'Ð'Øˆr*   Úliner   ú tuple[int, tuple[int, str, str]]c                ó  — t           dt          dt          dit          |j        ¦  «                 }|t          |j        ¦  «                             ¦   «         t          |j        ¦  «        f}d|j        v rd|fS d|j        v rd|fS d|fS )Nr   r   r+   ra   rc   )r   r   r   ÚtyperU   Úlowerr   )rH   r¨   Úof_typeÚbetweens       r(   r¤   zRequirementsFile._key_funcÈ   s‰   € Ý ¥4¨­C°Ð3µD¸Ô9IÑ4JÔ4JÔKˆØ�3˜tÔ/Ñ0Ô0×6Ò6Ñ8Ô8½#¸d¼lÑ:KÔ:KÐKˆØ˜dœlÐ*Ð*Ø�g�:ÐØ˜DœLÐ(Ð(Ø�g�:ÐØ�'ˆzÐr*   rv   úIterator[ParsedLine]c              #  óF  K  — |                       ||¦  «        D �]}|j        sø|j        j        s|j        j        rà|j        j        rd|j        j        d         }}nd|j        j        d         }}t
                               |¦  «        r!t          j         	                    ||¦  «        }n>t
                               |¦  «        s$t          t          |¦  «        j        |z  ¦  «        }|r#| j                             |||¦  «        E d {V —† Œõ||_        |V — �Œ|V — �Œd S )NFr   T)Ú_parse_filer|   rx   r‘   ÚconstraintsÚ
_SCHEME_REÚsearchÚurllibÚparseÚurljoinr   r   r5   rˆ   rŸ   rv   )rH   rv   ry   rš   r¨   Únested_constraintÚreq_paths          r(   rŸ   z#RequirementsFile._parse_and_recurseÑ   sG  è è € ð ×$Ò$ X¨zÑ:Ô:ð 	ñ 	ˆDØÔ&ð ¨D¬IÔ,Bð ÀdÄiÔF[ð Ø”9Ô)ð QØ27¸¼Ô9OÐPQÔ9R xÐ%Ð%à26¸¼	Ô8MÈaÔ8P xÐ%Ý×$Ò$ XÑ.Ô.ð EÝ%œ|×3Ò3°H¸hÑGÔG�H�HÝ#×*Ò*¨8Ñ4Ô4ð EÝ"¥4¨¡>¤>Ô#8¸8Ñ#CÑDÔD�HØð Ø#Ô/×BÒBÀ8ÐM^Ð`gÑhÔhÐhÐhÐhÐhÐhÐhÐhÐhà$,�D”MØ�J�J�J‘Jà�
�
�
‘
ð!	ð 	r*   Úurlc              #  óÄ   K  — |                       |¦  «        }|                      |¦  «        D ]2\  }}|                      |¦  «        \  }}t          |||||¦  «        V — Œ3d S rS   )Ú_get_file_contentÚ_pre_processÚ_parse_lineru   )rH   rº   ry   ÚcontentÚline_numberr¨   Úargs_strrx   s           r(   r±   zRequirementsFile._parse_fileé   s   è è € Ø×(Ò(¨Ñ-Ô-ˆØ!%×!2Ò!2°7Ñ!;Ô!;ð 	Kð 	KÑˆK˜Ø!×-Ò-¨dÑ3Ô3‰NˆH�dÝ˜S +¨x¸¸zÑJÔJÐJÐJÐJÐJð	Kð 	Kr*   c                óÆ  — t          |¦  «        }|dv r=t          |¦  «        5 }|                      |¦  «        cddd¦  «         S # 1 swxY w Y   n|dk    rt          |¦  «        }	 t	          |¦  «                             d¦  «        5 }|                      |¦  «        }ddd¦  «         n# 1 swxY w Y   n*# t          $ r}d|› d|› �}t          |¦  «        |‚d}~ww xY w|S )a  
        Gets the content of a file; it may be a filename, file: URL, or http: URL.  Returns (location, content).
        Content is unicode. Respects # -*- coding: declarations on the retrieved files.

        :param url:         File path or url.
        >   ÚhttpÚhttpsNÚfileÚrbz!Could not open requirements file z: )r   r   Ú_read_decoder   r   ÚopenÚOSErrorrD   )rH   rº   ÚschemeÚresponseÚfile_handlerÚtextÚexcÚmsgs           r(   r¼   z"RequirementsFile._get_file_contentï   sz  € õ   Ñ$Ô$ˆØÐ&Ð&Ð&Ý˜‘”ð 3 Ø×(Ò(¨Ñ2Ô2ð3ð 3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3à�vÒÐÝ˜cÑ"Ô"ˆCð	+Ý�c‘”—’ Ñ%Ô%ð 7¨Ø×(Ò(¨Ñ6Ô6�ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7øøåð 	+ð 	+ð 	+ØB°cÐBÐB¸SÐBÐBˆCÝ˜S‘/”/ sÐ*øøøøð	+øøøð ˆsM   £AÁA	ÁA	Á'"B7 Â	B+ÂB7 Â+B/Â/B7 Â2B/Â3B7 Â7
CÃCÃCrÌ   ú	IO[bytes]c                ó�   — |                       ¦   «         }|sdS t          j        |¦  «        d         }|                     |¦  «        S )Nr/   Úencoding)ÚreadÚchardetÚdetectr2   )rÌ   ÚrawÚcodecs      r(   rÇ   zRequirementsFile._read_decode  sF   € à×ÒÑ!Ô!ˆØð 	Ø�2Ý”˜sÑ#Ô# JÔ/ˆØ�zŠz˜%Ñ Ô Ð r*   r¿   ÚReqFileLinesc                óÆ   — t          |                     ¦   «         d¬¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        S )zŠ
        Split, filter, and join lines, and return a line iterator.

        :param content: the content of the requirements file
        r   )Ústart)Ú	enumerateÚ
splitlinesÚ_join_linesÚ_ignore_commentsÚ_expand_env_variables)rH   r¿   Ú
lines_enums      r(   r½   zRequirementsFile._pre_process  s\   € õ $-¨W×-?Ò-?Ñ-AÔ-AÈÐ#KÑ#KÔ#Kˆ
Ø×%Ò% jÑ1Ô1ˆ
Ø×*Ò*¨:Ñ6Ô6ˆ
Ø×)Ò)¨*Ñ5Ô5Ð5r*   útuple[str, Namespace]c                ó¶   — |                       |¦  «        \  }}t          j        |t          j        dk    ¬¦  «        }| j                             |¦  «        }||fS )NÚwin32)Úposix)Ú_break_args_optionsÚshlexr:   ÚsysÚplatformr”   Ú
parse_args)rH   r¨   rÁ   Úoptions_strrw   rx   s         r(   r¾   zRequirementsFile._parse_line  sT   € Ø $× 8Ò 8¸Ñ >Ô >Ñˆ�+ÝŒ{˜;­c¬l¸gÒ.EÐFÑFÔFˆØŒ|×&Ò& tÑ,Ô,ˆØ˜ˆ~Ðr*   ru   c                óÆ   — i }| j         r
| j         |d<   | j        r
| j        |d<   t          | j        dg ¦  «        }|r||d<   t	          | j        || j        | j        ¦  «        S )Nrc   ra   re   )rc   ry   Úgetattrrx   r   rU   rv   r   )r¨   Úreq_optionsÚhash_valuess      r(   r    z)RequirementsFile._handle_requirement_line  sw   € ð ')ˆØÔð 	:Ø)-Ô)9ˆK˜Ñ&ØŒ?ð 	;Ø+/¬?ˆK˜Ñ(Ý˜dœi¨°Ñ4Ô4ˆØð 	.Ø"-ˆK˜ÑÝ  Ô!1°;ÀÄÈtÌ{Ñ[Ô[Ð[r*   Úbase_optc                óú  — |j         rPt          |d¦  «        sg |_         |j         d         |j         vr%|j                              |j         d         ¦  «         |j        rPt          |d¦  «        sg |_        |j        d         |j        vr%|j                             |j        d         ¦  «         |j        rd|_        |j        r]t          |d¦  «        sg |_        |j        D ]%}||j        vr|j                             |¦  «         Œ&|j                             ¦   «          |j        r.t          |dg ¦  «        r|j        |j        d<   n|j        g|_        |j	        du rg |_        |j
        rPt          |dg ¦  «        st          g|_        |j
        D ]*}||j        vr|j                             |j
        ¦  «         Œ+|j        r­t          |d¦  «        sg |_        |j        d         }t          |¦  «                             ¦   «         j        }||z  }t"          j                             t)          |¦  «        ¦  «        rt)          |¦  «        }||j        vr|j                             |¦  «         |j        rd|_        |j        rd|_        |j        pg D ]<}	t          |d¦  «        sg |_        |	|j        vr|j                             |	¦  «         Œ=|j        r|j        |_        |j        r|j        |_        d S d S )	Nr‘   r   r²   TÚfeatures_enabledÚ	index_urlÚ
find_linksÚtrusted_hosts)r‘   Úhasattrr=   r²   Úrequire_hashesrñ   r£   rò   rì   Úno_indexÚextra_index_urlÚDEFAULT_INDEX_URLrh   ró   r   Úabsoluter5   rB   rM   Úexistsr   ÚpreÚprefer_binaryÚtrusted_hostrô   Ú	no_binaryÚonly_binary)
rH   rï   r™   rv   Úfeaturerº   ÚvalueÚreq_dirÚrelative_to_reqs_fileÚhosts
             r(   r¢   z#RequirementsFile._merge_option_line+  sO  € ð Ôð 	BÝ˜8 ^Ñ4Ô4ð +Ø(*�Ô%ØÔ Ô"¨(Ô*?Ð?Ð?ØÔ%×,Ò,¨SÔ-=¸aÔ-@ÑAÔAÐAØŒ?ð 	@Ý˜8 ]Ñ3Ô3ð *Ø')�Ô$ØŒ˜qÔ!¨Ô)=Ð=Ð=ØÔ$×+Ò+¨C¬O¸AÔ,>Ñ?Ô?Ð?ØÔð 	+Ø&*ˆHÔ#ØÔð 	-Ý˜8Ð%7Ñ8Ô8ð /Ø,.�Ô)ØÔ/ð >ð >�Ø (Ô";Ð;Ð;ØÔ-×4Ò4°WÑ=Ô=Ð=øØÔ%×*Ò*Ñ,Ô,Ð,ØŒ=ð 	5Ý�x ¨bÑ1Ô1ð 5Ø(+¬�Ô" 1Ñ%Ð%à&)¤m _�Ô"ØŒ<˜4ÐÐØ!#ˆHÔØÔð 	CÝ˜8 [°"Ñ5Ô5ð 9Ý&7Ð%8�Ô"ØÔ*ð Cð C�Ø˜hÔ0Ð0Ð0ØÔ&×-Ò-¨cÔ.AÑBÔBÐBøØŒ>ð 
	2å˜8 \Ñ2Ô2ð )Ø&(�Ô#Ø”N 1Ô%ˆEÝ˜8‘n”n×-Ò-Ñ/Ô/Ô6ˆGØ$+¨e¡OÐ!ÝŒw�~Š~�cÐ"7Ñ8Ô8Ñ9Ô9ð 3ÝÐ1Ñ2Ô2�Ø˜HÔ/Ð/Ð/ØÔ#×*Ò*¨5Ñ1Ô1Ð1ØŒ7ð 	 ØˆHŒLØÔð 	*Ø%)ˆHÔ"ØÔ$Ð*¨ð 	4ð 	4ˆDÝ˜8 _Ñ5Ô5ð ,Ø)+�Ô&Ø˜8Ô1Ð1Ð1ØÔ&×-Ò-¨dÑ3Ô3Ð3øØŒ=ð 	/Ø!$¤ˆHÔØŒ?ð 	3Ø#&¤?ˆHÔ Ð Ð ð	3ð 	3r*   útuple[str, str]c                óH  — |                       d¦  «        }g }|dd…         }|D ]C}|                     d¦  «        r n+|                     |¦  «         |                     d¦  «         ŒDd                     |¦  «                             ¦   «         d                     |¦  «        fS )zÉ
        Break up the line into an args and options string.  We only want to shlex (and then optparse) the options, not
        the args. args can contain markers which are corrupted by shlex.
        rf   Nú-r   )r:   r$   r=   Úpopr>   r;   )r¨   Útokensrw   r   Útokens        r(   rå   z$RequirementsFile._break_args_optionsk  sŸ   € ð —’˜C‘”ˆØˆØ˜˜˜”)ˆØð 	ð 	ˆEØ×Ò Ñ$Ô$ð Ø�Ø�KŠK˜ÑÔÐØ�KŠK˜‰NŒNˆNˆNØ�xŠx˜‰~Œ~×#Ò#Ñ%Ô% s§x¢x°Ñ'8Ô'8Ð8Ð8r*   rà   c              #  óÔ  K  — d}g }| D ]½\  }}|                      d¦  «        rt                               |¦  «        r]t                               |¦  «        rd|› �}|r5|                     |¦  «         |€J ‚|d                     |¦  «        fV — g }ŒŠ||fV — Œ‘|s|}|                     |                     d¦  «        ¦  «         Œ¾|r|€J ‚|d                     |¦  «        fV — dS dS )z¢
        Joins a line ending in '' with the previous line (except when following comments). The joined line takes on the
        index of the first line.
        Nú\rf   r/   )ÚendswithÚ_COMMENT_RErK   r=   r>   r;   )rà   Úprimary_line_numberÚnew_linerÀ   r¨   s        r(   rÝ   zRequirementsFile._join_lines{  s?  è è € ð #ÐØ ˆØ!+ð 	2ð 	2ÑˆK˜Ø—=’= Ñ&Ô&ð 2­+×*;Ò*;¸DÑ*AÔ*Að 2Ý×$Ò$ TÑ*Ô*ð &Ø%˜t˜:˜:�DØð ,Ø—O’O DÑ)Ô)Ð)Ø.Ð:Ð:Ð:Ø-¨r¯wªw°xÑ/@Ô/@Ð@Ð@Ð@Ð@Ø!�H�Hà% tÐ+Ð+Ð+Ð+Ð+àð 6Ø*5Ð'Ø—’ §
¢
¨4Ñ 0Ô 0Ñ1Ô1Ð1Ð1àð 	9Ø&Ð2Ð2Ð2Ø% r§w¢w¨xÑ'8Ô'8Ð8Ð8Ð8Ð8Ð8Ð8ð	9ð 	9r*   c              #  ó„   K  — | D ]:\  }}t                                d|¦  «                             ¦   «         }|r||fV — Œ;dS )z'Strips comments and filter empty lines.r/   N)r  Úsubr;   )rà   rÀ   r¨   Úprocessed_lines       r(   rÞ   z!RequirementsFile._ignore_comments—  s_   è è € ð ",ð 	2ð 	2ÑˆK˜Ý(Ÿ_š_¨R°Ñ6Ô6×<Ò<Ñ>Ô>ˆNØð 2Ø! >Ð1Ð1Ð1Ð1øð	2ð 	2r*   c              #  óÄ   K  — | D ]Z\  }}|}t                                |¦  «        D ]2\  }}t          j        |¦  «        }|sŒ|                     ||¦  «        }Œ3||fV — Œ[dS )a¾  
        Replace all environment variables that can be retrieved via `os.getenv`.

        The only allowed format for environment variables defined in the requirement file is `${MY_VARIABLE_1}` to
        ensure two things:

        1. Strings that contain a `$` aren't accidentally (partially) expanded.
        2. Ensure consistency across platforms for requirement files.

        These points are the result of a discussion on the `github pull request #3514
        <https://github.com/pypa/pip/pull/3514>`_. Valid characters in variable names follow the `POSIX standard
        <http://pubs.opengroup.org/onlinepubs/9699919799/>`_ and are limited to uppercase letter, digits and the `_`.
        N)Ú_ENV_VAR_REÚfindallrB   ÚgetenvÚreplace)rà   rÀ   r¨   Úexpanded_lineÚenv_varÚvar_namer  s          r(   rß   z&RequirementsFile._expand_env_variablesŸ  s”   è è € ð ",ð 	-ð 	-ÑˆK˜Ø ˆMÝ%0×%8Ò%8¸Ñ%GÔ%Gð Fð FÑ!�˜Ýœ	 (Ñ+Ô+�Øð ØØ -× 5Ò 5°g¸uÑ EÔ E��Ø˜}Ð,Ð,Ð,Ð,Ð,ð	-ð 	-r*   ú	list[str]c                ó"  — | j         €‚t          ¦   «         }g }|                      |d¬¦  «        D ])}|                     |                     ¦   «         ¦  «         Œ*|                      |¦  «        }|                     |¦  «         || _         | j         S )NFr˜   )r…   r   r›   rh   rn   Ú_option_to_args)rH   r™   ri   r   Úoption_argss        r(   Úas_root_argszRequirementsFile.as_root_args·  sŽ   € àÔÐ%Ý‘+”+ˆCØ "ˆFØ×/Ò/°CÀÐ/ÑGÔGð -ð -�Ø—’˜cŸkšk™mœmÑ,Ô,Ð,Ð,Ø×.Ò.¨sÑ3Ô3ˆKØ�MŠM˜+Ñ&Ô&Ð&à!'ˆDÔØÔ!Ð!r*   c                ó@  — g }t          |dg ¦  «        D ]}|                     d|f¦  «         Œt          |dg ¦  «        D ]}|                     d|f¦  «         Œt          |dd ¦  «        }|�j|rS|d         t          k    r|                     d|d         f¦  «         |dd …         D ]}|                     d	|f¦  «         Œn|                     d
¦  «         t          |dg ¦  «        D ]}|                     d|f¦  «         Œt	          |d¦  «        r|                     d¦  «         t          |dg ¦  «        D ]}|                     d|f¦  «         Œt	          |d¦  «        r|                     d¦  «         t	          |d¦  «        r|                     d¦  «         t          |dg ¦  «        D ]}|                     d|f¦  «         Œt	          |d¦  «        r|                     d|j        f¦  «         t	          |d¦  «        r|                     d|j        f¦  «         |S )Nr‘   rŠ   r²   rb   rò   r   z-ir   z--extra-index-urlz
--no-indexró   z-frü   z--prerô   z--trusted-hostrý   z--prefer-binaryrö   z--require-hashesrñ   z--use-featurerÿ   z--no-binaryr   z--only-binary)rì   rh   rù   r=   rõ   rÿ   r   )	rH   r™   ri   r   rò   rº   Úlinkr  r  s	            r(   r  z RequirementsFile._option_to_argsÄ  sn  € ØˆÝ˜3 °Ñ3Ô3ð 	'ð 	'ˆCØ�MŠM˜4 ˜+Ñ&Ô&Ð&Ð&Ý˜3 ¨rÑ2Ô2ð 	'ð 	'ˆCØ�MŠM˜4 ˜+Ñ&Ô&Ð&Ð&Ý˜C ¨dÑ3Ô3ˆ	ØÐ Øð ,Ø˜Q”<Õ#4Ò4Ð4Ø—M’M 4¨°1¬Ð"6Ñ7Ô7Ð7Ø$ Q R Rœ=ð >ð >�CØ—M’MÐ#6¸Ð"<Ñ=Ô=Ð=Ð=ð>ð —’˜lÑ+Ô+Ð+Ý˜C ¨rÑ2Ô2ð 	(ð 	(ˆDØ�MŠM˜4 ˜,Ñ'Ô'Ð'Ð'Ý�3˜ÑÔð 	#Ø�MŠM˜'Ñ"Ô"Ð"Ý˜C °"Ñ5Ô5ð 	4ð 	4ˆDØ�MŠMÐ+¨TÐ2Ñ3Ô3Ð3Ð3Ý�3˜Ñ(Ô(ð 	-Ø�MŠMÐ+Ñ,Ô,Ð,Ý�3Ð(Ñ)Ô)ð 	.Ø�MŠMÐ,Ñ-Ô-Ð-Ý˜sÐ$6¸Ñ;Ô;ð 	6ð 	6ˆGØ�MŠM˜?¨GÐ4Ñ5Ô5Ð5Ð5Ý�3˜Ñ$Ô$ð 	:Ø�MŠM˜=¨#¬-Ð8Ñ9Ô9Ð9Ý�3˜Ñ&Ô&ð 	>Ø�MŠM˜?¨C¬OÐ<Ñ=Ô=Ð=Øˆr*   N)rM   r   ry   rz   r   r    )r   r   ro   )r   r   )r   rz   )r   r   )r   r�   )r   r   )r•   r   r   r    )r   r    )r™   r   rš   rz   r   r�   )r¨   r   r   r©   )rv   r   ry   rz   rš   rz   r   r¯   )rº   r   ry   rz   r   r¯   )rº   r   r   r   )rÌ   rÐ   r   r   )r¿   r   r   rØ   )r¨   r   r   rá   )r¨   ru   r   r   )rï   r   r™   r   rv   r   r   r    )r¨   r   r   r  )rà   rØ   r   rØ   )r   r  )r™   r   r   r  )r\   rp   rq   rP   rr   rˆ   rk   rM   ra   r   r‘   r”   r“   rŽ   r›   r¤   rŸ   r±   r¼   ÚstaticmethodrÇ   r½   r¾   r    r¢   rå   rÝ   rÞ   rß   r!  r  rs   r*   r(   r   r   ‹   sÈ  € € € € € ð;ð ;ð ;ð ;ð ðð ð ñ „XððEð Eð Eð Eð ðð ð ñ „Xðð ð#ð #ð #ñ „Xð#ð ðð ð ñ „Xðð ðAð Að Añ „XðAð ð$ð $ð $ñ „Xð$ð BÐAÐAÐAðWð Wð Wð Wðð ð ð ðð ð ð ðð ð ð ð0Kð Kð Kð Kðð ð ð ð* ð!ð !ð !ñ „\ð!ð	6ð 	6ð 	6ð 	6ðð ð ð ð ð\ð \ð \ñ „\ð\ð>3ð >3ð >3ð >3ð@ ð9ð 9ð 9ñ „\ð9ð ð9ð 9ð 9ñ „\ð9ð6 ð2ð 2ð 2ñ „\ð2ð ð-ð -ð -ñ „\ð-ð. ð
"ð 
"ð 
"ñ „Xð
"ðð ð ð ð ð r*   r   )r   rØ   r   )1Ú__doc__Ú
__future__r   rB   Úreræ   rç   Úurllib.parserµ   Úargparser   r   Úpathlibr   Útypingr   r   r	   r
   r   r   Úurllib.requestr   rÔ   Úpackaging.requirementsr   r   rw   r   Úutilr   r   r   r   Úcompiler  Ú
IGNORECASEr³   r  r6   r<   r   r   rØ   rù   r   ru   r   Ú__all__rs   r*   r(   ú<module>r2     s  ðØ %Ð %à "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ð ˆbŒjÐ=Ñ>Ô>€ØˆRŒZÐ.°´Ñ>Ô>€
ØˆbŒj˜Ñ(Ô(€àˆbŒjÐ7Ñ8Ô8€Ø�”Ð9Ñ:Ô:€Ø˜˜c 3˜hœÔ(€à-Ð ðL%ð L%ð L%ð L%ð L%ñ L%ô L%ð L%ð^(ð (ð (ð (ð (ñ (ô (ð (ð4Xð Xð Xð Xð Xñ Xô Xð Xðv
€€€r*   