+
    Ž°³j,  ã                  ó@  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
HtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt R R	 lt]P,                  R
 R l4       t]P1                  ]4      R R l4       tR R ltR R ltR R ltR R ltR R ltR R lt R R lt!R# )z2
Tools for converting old- to new-style metadata.
)ÚannotationsN)Ú	GeneratorÚIterableÚIterator)ÚMessage)ÚParser)ÚLiteral)ÚRequirementc               ó    € V ^8„  d   QhRRRR/# )é   ÚstrÚreturnzbool | Literal['']© )Úformats   "Úc/home/luca/screen-checking/.venv/lib/python3.14/site-packages/setuptools/_vendor/wheel/_metadata.pyÚ__annotate__r      s   € ÷ +ñ +�3ð +Ð-ñ +ó    c                óB   € T ;'       d    V P                  R 4      '       * # )Ú#)Ú
startswith)r   s   &r   Ú	_nonblankr      s   € Ø×*Ð*�s—~‘~ cÓ*Ô*Ð*r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚiterablezIterable[str]r   úIterator[str]r   )r   s   "r   r   r      s   € ÷ Eñ E˜-ð E¨Mñ Er   c                ó\   € \         P                  P                  \        \        V 4      4      # )aQ  
Yield valid lines of a string or iterable.
>>> list(yield_lines(''))
[]
>>> list(yield_lines(['foo', 'bar']))
['foo', 'bar']
>>> list(yield_lines('foo\nbar'))
['foo', 'bar']
>>> list(yield_lines('\nfoo\n#bar\nbaz #comment'))
['foo', 'baz #comment']
>>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n']))
['foo', 'bar', 'baz', 'bing']
)Ú	itertoolsÚchainÚfrom_iterableÚmapÚyield_lines)r   s   &r   r   r      s    € ô �?‰?×(Ñ(¬¬[¸(Ó)CÓDÐDr   c               ó    € V ^8„  d   QhRRRR/# )r   Útextr   r   r   r   )r   s   "r   r   r   +   s   € ÷ @ñ @ˆCð @�Mñ @r   c                ón   € \        \        \        \        P                  V P                  4       4      4      # ©N)Úfilterr   r   r   ÚstripÚ
splitlines)r!   s   &r   Ú_r'   *   s!   € ä”)œS¤§¡¨D¯O©OÓ,=Ó>Ó?Ð?r   c               ó    € V ^8„  d   QhRRRR/# )r   Úszstr | Iterator[str]r   z3Generator[tuple[str | None, list[str]], None, None]r   )r   s   "r   r   r   /   s   € ÷ ñ Øðà8ñr   c              #  ó2  "  € Rp. p\        V 4       Fz  pVP                  R4      '       dP   VP                  R4      '       d-   V'       g	   V'       d   W3x € V^R P                  4       p. pK]  \	        RV4      hVP                  V4       K|  	  W3x € R# 5i)a^  Split a string or iterable thereof into (section, content) pairs
Each ``section`` is a stripped version of the section header ("[section]")
and each ``content`` is a list of stripped lines excluding blank lines and
comment-only lines.  If there are any such lines before the first section
header, they're returned in a first ``section`` of ``None``.
NÚ[Ú]zInvalid section headingéÿÿÿÿ)r   r   Úendswithr%   Ú
ValueErrorÚappend)r)   ÚsectionÚcontentÚlines   &   r   Úsplit_sectionsr4   /   s‰   é € ð €GØ€GÜ˜A–ˆØ�?‰?˜3×ÒØ�}‰}˜S×!Ò!ßŸgØ!Ð*Ò*Ø˜q ˜*×*Ñ*Ó,�Ø’ä Ð!:¸DÓAÐAà�N‰N˜4Ö ñ ð Ð
Ôùs   ‚A BÁBÁBÁABc               ó    € V ^8„  d   QhRRRR/# )r   Úextrar   r   r   )r   s   "r   r   r   J   s   € ÷ 9ñ 9�cð 9˜cñ 9r   c                óN   € \         P                  ! RRV 4      P                  4       # )z¤Convert an arbitrary string to a standard 'extra' name
Any runs of non-alphanumeric characters are replaced with a single '_',
and the result is always lowercased.
z[^A-Za-z0-9.-]+r'   )ÚreÚsubÚlower)r6   s   &r   Ú
safe_extrar;   J   s!   € ô
 �6Š6Ð# S¨%Ó0×6Ñ6Ó8Ð8r   c               ó    € V ^8„  d   QhRRRR/# )r   Únamer   r   r   )r   s   "r   r   r   R   s   € ÷ /ñ /�Cð /˜Cñ /r   c                ó2   € \         P                  ! RRV 4      # )z†Convert an arbitrary string to a standard distribution name
Any runs of non-alphanumeric/. characters are replaced with a single '-'.
z[^A-Za-z0-9.]+Ú-)r8   r9   )r=   s   &r   Ú	safe_namer@   R   s   € ô �6Š6Ð" C¨Ó.Ð.r   c               ó    € V ^8„  d   QhRRRR/# )r   Úrequirementr	   r   r   r   )r   s   "r   r   r   Y   s   € ÷ ñ ¨;ð ¸3ñ r   c                ó$  € V P                   '       d   RV P                   ,           # . pV P                   F/  pVP                  VP                  VP                  ,           4       K1  	  V'       d"   RRP                  \        V4      4      ,           # R# )zFReturn the version specifier for a requirement in PEP 345/566 fashion.z @ Ú Ú,Ú )ÚurlÚ	specifierr0   ÚoperatorÚversionÚjoinÚsorted)rB   Úrequires_distÚspecs   &  r   Úrequires_to_requires_distrO   Y   sk   € à‡‡€Ø�{—‘Õ&Ð&à!€MØ×%Ô%ˆØ×Ñ˜TŸ]™]¨T¯\©\Õ9Ö:ñ &÷ Ø�S—X‘Xœf ]Ó3Ó4Õ4Ð4ár   c               ó    € V ^8„  d   QhRRRR/# )r   Úrequirementsz	list[str]r   r   r   )r   s   "r   r   r   h   s   € ÷ 	Añ 	A yð 	A°]ñ 	Ar   c              #  ó  "  € V  Fw  p\        V4      p\        V4      pRP                  \        R VP                   4       4      4      pV'       d   RV R2p\        VP                  4      V,           V,           x € Ky  	  R# 5i)z=Yield Requires-Dist: strings for parsed requirements strings.rE   c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir#   )r;   )Ú.0Úes   & r   Ú	<genexpr>Ú'convert_requirements.<locals>.<genexpr>m   s   é € Ð RÑ8Q°1¤¨A§ Ó8Qùs   ‚r+   r,   N)r	   rO   rK   rL   Úextrasr@   r=   )rQ   ÚreqÚparsed_requirementrN   rX   s   &    r   Úconvert_requirementsr[   h   sq   é € ãˆÜ(¨Ó-ÐÜ(Ð);Ó<ˆØ—‘œ&Ñ RÐ8J×8QÒ8QÓ RÓRÓSˆßØ˜˜ �]ˆFäÐ*×/Ñ/Ó0°6Õ9¸DÕ@Ô@ó ùs   ‚B Bc               ó    € V ^8„  d   QhRRRR/# )r   Úextras_requirezdict[str | None, list[str]]r   zIterator[tuple[str, str]]r   )r   s   "r   r   r   t   s   € ÷ 1ñ 1Ø/ð1àñ1r   c              #  ó”  "  € V P                  4        F¯  w  rRpT;'       g    RpRV9   d   VP                  R^4      w  r\        V4      pV'       d,   RV3x € V'       d   RV,           R,           pVRV R2,          pV'       d
   RV,           p\        V4       F#  p\	        \        WC,           4      4      pR	V3x € K%  	  K±  	  R
# 5i)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.
rF   Ú:úProvides-ExtraÚ(z) and z
extra == 'Ú'z ; úRequires-DistN)ÚitemsÚsplitr;   r[   r   r	   )r]   r6   ÚdependsÚ	conditionÚnew_reqÚcanonical_reqs   &     r   Úgenerate_requirementsrj   t   s»   é € ð )×.Ñ.Ö0‰ˆØˆ	Ø—�˜ˆØ�%Œ<Ø$Ÿ{™{¨3°Ó2ÑˆEä˜5Ó!ˆßØ" EÐ)Ò)ßØ )�O¨hÕ6�	Ø˜: e W¨AÐ.Õ.ˆIçØ 	Õ)ˆIä+¨GÖ4ˆGÜ¤¨GÕ,?Ó @ÓAˆMØ! =Ð0Ô0ó 5ó! 1ùs   ‚ C£>CÁ"$CÂACc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úegg_info_pathr   Úpkginfo_pathr   r   r   )r   s   "r   r   r   “   s!   € ÷ %ñ % sð %¸#ð %À'ñ %r   c           	     óž  € \        VRR7      ;_uu_ 4       p\        4       P                  V4      pRRR4       XP                  RR4       VR VR \        P
                  P                  V R4      p\        P
                  P                  V4      '       d‚   \        VRR7      ;_uu_ 4       pVP                  4       pRRR4       \        \        X4      R	 R
7      pV F6  w  r‰\        W‰/4       F!  w  r«W«3VP                  4       9  g   K  W³V
&   K#  	  K8  	  VR,          pV'       d   VR,          P                  4       pRP                  V^ ,          P                  4       \        P                   ! RP                  VR,          4      4      R34      pVP#                  V4       VR V#   + '       g   i     EL€; i  + '       g   i     EL	; i)zF
Convert .egg-info directory with PKG-INFO to the Metadata 2.1 format
zutf-8)ÚencodingNzMetadata-Versionz2.1r`   rc   zrequires.txtc                ó(   € V ^ ,          ;'       g    R# )é    rF   r   )Úxs   &r   Ú<lambda>Ú%pkginfo_to_metadata.<locals>.<lambda>£   s   € ÈQÈqÍTÏZÈZÐUWÈZr   )ÚkeyÚDescriptionÚ
:é   NN)Úopenr   ÚparseÚreplace_headerÚosÚpathrK   ÚexistsÚreadrL   r4   rj   rd   r&   ÚlstripÚtextwrapÚdedentÚset_payload)rl   rm   ÚheadersÚpkg_infoÚrequires_pathÚrequires_fileÚrequiresÚparsed_requirementsr6   Úreqsru   ÚvalueÚdescriptionÚdescription_linesÚdedented_descriptions   &&             r   Úpkginfo_to_metadatar�   “   s�  € ô 
ˆl W×	-Õ	-°Ü“8—>‘> 'Ó*ˆ÷ 
.ð ×ÑÐ.°Ô6àÐ!Ð"Ø�Ð!Ü—G‘G—L‘L °Ó?€MÜ	‡w�w‡~�~�m×$Ò$Ü�-¨'×2Õ2°mØ$×)Ñ)Ó+ˆH÷ 3ô %¤^°HÓ%=ÑCWÔXÐÛ.‰KˆEÜ3°U°MÖB‘
�Ø�< x§~¡~Ó'7Ö7Ø$)˜S“Mó Cñ /ð
 ˜=Õ)€KßØ$ ]Õ3×>Ñ>Ó@ÐØ#Ÿy™yð " !Õ$×+Ñ+Ó-Ü—’ §	¡	Ð*;¸BÕ*?Ó @ÓAØðó 
Ðð 	×ÑÐ1Ô2Ø�]Ð#à€O÷C 
.×	-Ð	-ú÷ 3×2Ð2ús   –F'Â*F;Æ'F8	Æ;G	)"Ú__doc__Ú
__future__r   Ú	functoolsr   Úos.pathr|   r8   r�   Úcollections.abcr   r   r   Úemail.messager   Úemail.parserr   Útypingr   Úpackaging.requirementsr	   r   Úsingledispatchr   Úregisterr   r'   r4   r;   r@   rO   r[   rj   r�   r   r   r   Ú<module>r›      s–   ðñõ #ã Û Û Û 	Û ß 9Ñ 9Ý !Ý Ý å .õ+ð ×ÑôEó ðEð" ×Ñ�cÓô@ó ð@õõ69õ/õõ	Aõ1÷>%r   