§
    ülc�  ã                  ó~   — d Z ddlmZ ddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ dd„Zdd„Zdd„Zdd„ZdS )z2
Tools for converting old- to new-style metadata.
é    )ÚannotationsN)ÚMessage)ÚParser)ÚIterator)ÚRequirementÚ
safe_extraÚsplit_sectionsÚrequirementr   ÚreturnÚstrc                óÞ   — t          | dd¦  «        r
d| j        z   S g }| j        D ]\  }}|                     ||z   ¦  «         Œ|r(dd                     t          |¦  «        ¦  «        z   dz   S dS )zFReturn the version specifier for a requirement in PEP 345/566 fashion.ÚurlNz @ z (ú,ú)Ú )Úgetattrr   ÚspecsÚappendÚjoinÚsorted)r
   Úrequires_distÚopÚvers       ú0/usr/lib/python3/dist-packages/wheel/metadata.pyÚrequires_to_requires_distr      sŠ   € åˆ{˜E 4Ñ(Ô(ð 'Ø�{”Ñ&Ð&à€MØÔ$ð 'ð '‰ˆˆCØ×Ò˜R #™XÑ&Ô&Ð&Ð&àð Ø�c—h’h�v mÑ4Ô4Ñ5Ô5Ñ5¸Ñ;Ð;àˆró    Úrequirementsú	list[str]úIterator[str]c              #  óÖ   K  — | D ]c}t          j        |¦  «        }t          |¦  «        }d                     t	          |j        ¦  «        ¦  «        }|rd|› d�}|j        |z   |z   V — ŒddS )z=Yield Requires-Dist: strings for parsed requirements strings.r   ú[ú]N)r   Úparser   r   r   ÚextrasÚproject_name)r   ÚreqÚparsed_requirementÚspecr$   s        r   Úconvert_requirementsr)      sŒ   è è € àð >ð >ˆÝ(Ô.¨sÑ3Ô3ÐÝ(Ð);Ñ<Ô<ˆØ—’�&Ð!3Ô!:Ñ;Ô;Ñ<Ô<ˆØð 	#Ø"˜�]�]�]ˆFà Ô-°Ñ6¸Ñ=Ð=Ð=Ð=Ð=ð>ð >r   Úextras_requireúdict[str, list[str]]úIterator[tuple[str, str]]c              #  ó  K  — |                       ¦   «         D ]s\  }}d}|pd}d|v r|                     dd¦  «        \  }}t          |¦  «        }|rd|fV — |rd|z   dz   }|d|z  z  }|rd|z   }t          |¦  «        D ]}d	||z   fV — ŒŒtd
S )a,  
    Convert requirements from a setup()-style dictionary to
    ('Requires-Dist', 'requirement') and ('Provides-Extra', 'extra') tuples.

    extras_require is a dictionary of {extra: [requirements]} as passed to setup(),
    using the empty extra {'': [requirements]} to hold install_requires.
    r   ú:é   úProvides-Extraú(z) and zextra == '%s'z ; úRequires-DistN)ÚitemsÚsplitr   r)   )r*   ÚextraÚdependsÚ	conditionÚnew_reqs        r   Úgenerate_requirementsr9   *   sò   è è € ð )×.Ò.Ñ0Ô0ð 7ð 7‰ˆˆwØˆ	Ø�˜ˆØ�%ˆ<ˆ<Ø$Ÿ{š{¨3°Ñ2Ô2ÑˆE�9å˜5Ñ!Ô!ˆØð 	1Ø" EÐ)Ð)Ð)Ð)Øð 7Ø )™O¨hÑ6�	Ø˜¨5Ñ0Ñ0ˆIàð 	*Ø 	Ñ)ˆIå+¨GÑ4Ô4ð 	7ð 	7ˆGØ! 7¨YÑ#6Ð6Ð6Ð6Ð6Ð6ð	7ð!7ð 7r   Úegg_info_pathÚpkginfo_pathr   c           
     ó®  — t          |d¬¦  «        5 }t          ¦   «                              |¦  «        }ddd¦  «         n# 1 swxY w Y   |                     dd¦  «         |d= |d= t          j                             | d¦  «        }t          j                             |¦  «        r–t          |¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          t          |¦  «        d	„ ¬
¦  «        }|D ]9\  }}	t          ||	i¦  «        D ]"\  }
}|
|f|                     ¦   «         vr|||
<   Œ#Œ:|d         }|r�|d                              ¦   «         }d                     |d                              ¦   «         t          j        d                     |dd…         ¦  «        ¦  «        df¦  «        }|                     |¦  «         |d= |S )zN
    Convert .egg-info directory with PKG-INFO to the Metadata 2.1 format
    zutf-8)ÚencodingNzMetadata-Versionz2.1r0   r2   zrequires.txtc                ó   — | d         pdS )Nr   r   © )Úxs    r   ú<lambda>z%pkginfo_to_metadata.<locals>.<lambda>X   s   € ÈQÈqÌTÈZÐUW€ r   )ÚkeyÚDescriptionú
r   r/   )Úopenr   r#   Úreplace_headerÚosÚpathr   ÚexistsÚreadr   r	   r9   r3   Ú
splitlinesÚlstripÚtextwrapÚdedentÚset_payload)r:   r;   ÚheadersÚpkg_infoÚrequires_pathÚrequires_fileÚrequiresÚparsed_requirementsr5   ÚreqsrB   ÚvalueÚdescriptionÚdescription_linesÚdedented_descriptions                  r   Úpkginfo_to_metadatar[   H   sc  € õ 
ˆl WÐ	-Ñ	-Ô	-ð +°Ý‘8”8—>’> 'Ñ*Ô*ˆð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð ×ÒÐ.°Ñ6Ô6Ð6àÐ!Ð"Ø�Ð!Ý”G—L’L °Ñ?Ô?€MÝ	„w‡~‚~�mÑ$Ô$ð *Ý�-Ñ Ô ð 	, MØ$×)Ò)Ñ+Ô+ˆHð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,õ %¥^°HÑ%=Ô%=ÐCWÐCWÐXÑXÔXÐØ.ð 	*ð 	*‰KˆE�4Ý3°U¸D°MÑBÔBð *ð *‘
��UØ˜�< x§~¢~Ñ'7Ô'7Ð7Ð7Ø$)�H˜S‘Møð*ð ˜=Ô)€KØð $Ø$ ]Ô3×>Ò>Ñ@Ô@ÐØ#Ÿyšyð " !Ô$×+Ò+Ñ-Ô-Ý” §	¢	Ð*;¸A¸B¸BÔ*?Ñ @Ô @ÑAÔAØðñ 
ô  
Ðð 	×ÒÐ1Ñ2Ô2Ð2Ø�]Ð#à€Os#   ’"A Á AÁAÂ5CÃCÃC)r
   r   r   r   )r   r   r   r   )r*   r+   r   r,   )r:   r   r;   r   r   r   )Ú__doc__Ú
__future__r   Úos.pathrG   rM   Úemail.messager   Úemail.parserr   Útypingr   Úpkg_resourcesr   r   r	   r   r)   r9   r[   r?   r   r   ú<module>rc      sã   ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð	>ð 	>ð 	>ð 	>ð7ð 7ð 7ð 7ð<%ð %ð %ð %ð %ð %r   