+
    JV-j“
  ã            
      ó  € R t ^ RIH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 R]	4      tR R lt]P                  R	 R
 l4       tR R lt]R8X  d¤   ^ RIt]P(                  ! 4       t]P-                  R4      '       g   Q R4       h]! R]4       ]! R]! ]P0                  4      4       ]! RRR7       ]! ]P2                  ! RR]P5                  R^4      R,          4      4       F  t]! ]RR7       K  	  R# R# )z�PEP 656 support.

This module implements logic to detect if the currently running Python is
linked against musl, and what musl version is used.
)ÚannotationsN)ÚIteratorÚ
NamedTupleÚSequence)ÚELFFilec                  ó,   € ] tR t^t$ R]R&   R]R&   RtR# )Ú_MuslVersionÚintÚmajorÚminor© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    Úe/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/packaging/_musllinux.pyr   r      s   ‡ ØƒJØ‡Jr   r   c               ó    € V ^8„  d   QhRRRR/# )é   ÚoutputÚstrÚreturnú_MuslVersion | Noner   )Úformats   "r   Ú__annotate__r      s   € ÷ Fñ F ð FÐ(;ñ Fr   c                ó‚  € R  V P                  4        4        Uu. uF  q'       g   K  VNK  	  pp\        V4      ^8  g   V^ ,          R,          R8w  d   R# \        P                  ! RV^,          4      pV'       g   R# \	        \        VP                  ^4      4      \        VP                  ^4      4      R7      # u upi )c              3  ó@   "  € T F  qP                  4       x € K  	  R # 5i)N)Ústrip)Ú.0Úns   & r   Ú	<genexpr>Ú&_parse_musl_version.<locals>.<genexpr>   s   é € Ð@Ñ,? qŸ™Ÿ˜Ó,?ùs   ‚:Né   NÚmuslNzVersion (\d+)\.(\d+))r
   r   )Ú
splitlinesÚlenÚreÚmatchr   r	   Úgroup)r   r!   ÚlinesÚms   &   r   Ú_parse_musl_versionr-      s�   € Ù@¨F×,=Ñ,=Ô,?Ô@ÓFÑ@�1ÃA�QˆQÑ@€EÐFÜ
ˆ5ƒz�A„~˜˜q� "�¨Ô/ÙÜ
�ŠÐ(¨%°­(Ó3€AßÙÜœc !§'¡'¨!£*›o´S¸¿¹À»³_ÔEÐEùò Gs
   š	B<¨B<c               ó    € V ^8„  d   QhRRRR/# )r   Ú
executabler   r   r   r   )r   s   "r   r   r   "   s   € ÷ ,ñ , #ð ,Ð*=ñ ,r   c                ó^  €  \        V R4      ;_uu_ 4       p\        V4      P                  pRRR4       Xe   RT9  d   R# \        P                  ! T.R\        P                  RR7      p\        TP                  4      #   + '       g   i     L[; i  \        \        \
        3 d     R# i ; i)aD  Detect currently-running musl runtime version.

This is done by checking the specified executable's dynamic linking
information, and invoking the loader to parse its output for a version
string. If the loader is musl, the output would be something like::

    musl libc (x86_64)
    Version 1.2.2
    Dynamic Program Loader
ÚrbNr%   FT)ÚcheckÚstderrÚtext)Úopenr   ÚinterpreterÚOSErrorÚ	TypeErrorÚ
ValueErrorÚ
subprocessÚrunÚPIPEr-   r3   )r/   ÚfÚldÚprocs   &   r   Ú_get_musl_versionr@   !   s…   € ðÜ�*˜d×#Ô# qÜ˜“×'Ñ'ˆB÷ $ð 
‚z�V 2Ô%ÙÜ�>Š>˜2˜$ e´J·O±OÈ$ÔO€DÜ˜tŸ{™{Ó+Ð+÷ $×#ûä”Y¤
Ð+ô Úðús-   ‚B –A?¬B Á?B	Â
B ÂB ÂB,Â+B,c               ó    € V ^8„  d   QhRRRR/# )r   ÚarchszSequence[str]r   zIterator[str]r   )r   s   "r   r   r   8   s   € ÷ ?ñ ?˜ð ?¨=ñ ?r   c              #  óÈ   "  € \        \        P                  4      pVf   R# V  F8  p\        VP                  RR4       F  pRVP
                   RV RV 2x € K  	  K:  	  R# 5i)aª  Generate musllinux tags compatible to the current platform.

:param archs: Sequence of compatible architectures.
    The first one shall be the closest to the actual architecture and be the part of
    platform tag after the ``linux_`` prefix, e.g. ``x86_64``.
    The ``linux_`` prefix is assumed as a prerequisite for the current platform to
    be musllinux-compatible.

:returns: An iterator of compatible musllinux tags.
NÚ
musllinux_Ú_éÿÿÿÿ)r@   Úsysr/   Úranger   r
   )rB   Úsys_muslÚarchr   s   &   r   Úplatform_tagsrK   8   s]   é € ô !¤§¡Ó0€HØÒÙÛˆÜ˜8Ÿ>™>¨2¨rÖ2ˆEØ˜xŸ~™~Ð.¨a°¨w°a¸°vÐ>Ô>ó 3ó ùs   ‚A A"Ú__main__zlinux-z	not linuxzplat:zmusl:ztags:Ú )Úendz[.-]rE   Ú-z
      rF   )Ú__doc__Ú
__future__r   Ú	functoolsr(   r:   rG   Útypingr   r   r   Ú_elffiler   r   r-   Ú	lru_cacher@   rK   r   Ú	sysconfigÚget_platformÚplatÚ
startswithÚprintr/   ÚsubÚsplitÚtr   r   r   Ú<module>r^      sî   ðñõ #ã Û 	Û Û 
ß 1Ñ 1å ô�:ô õ
Fð ×Ñô,ó ð,õ,?ð& ˆzÔÛà×!Ò!Ó#€DØ�?‰?˜8×$Ò$Ð1 kÓ1Ð$á	ˆ'�4ÔÙ	ˆ'Ñ$ S§^¡^Ó4Ô5Ù	ˆ'�sÕÙ˜2Ÿ6š6 '¨3°·
±
¸3ÀÓ0BÀ2Õ0FÓGÖHˆÙˆa�Z× ó Iñ r   