+
    <j                     ~    R t ^ RIt^ RIHtHtHtHt ^ RIHt ^ RI	H
t
Ht ^ RI	Ht ^ RIHt ^ RIHt  ! R R4      tR# )	z`Represents a wheel file and provides access to the various parts of the
name that have meaning.
N)DictIterableListOptionalTag)BuildTagparse_wheel_filename)InvalidWheelFilename)
deprecatedc                      a  ] tR t^t o Rt]P                  ! R]P                  4      tV 3R lR lt	]
V 3R lR l4       tV 3R lR ltV 3R	 lR
 ltV 3R lR ltV 3R lR ltRtV tR# )WheelzA wheel filez^(?P<namever>(?P<name>[^\s-]+?)-(?P<ver>[^\s-]*?))
        ((-(?P<build>\d[^-]*?))?-(?P<pyver>[^\s-]+?)-(?P<abi>[^\s-]+?)-(?P<plat>[^\s-]+?)
        \.whl|\.dist-info)$c                $   < V ^8  d   QhRS[ RR/# )   filenamereturnNstr)format__classdict__s   "O/opt/headortail/venv/lib/python3.14/site-packages/pip/_internal/models/wheel.py__annotate__Wheel.__annotate__   s     - - - -    c                  aa Wn         V  R V n         \        V4      pVw  V n        q0n        V n        \        V4      V n        R #   \         Ed;   pT P                  P                  T4      pT'       g   \        TP                  ^ ,          4      R h\        RT: RTP                  ^ ,           R2RRRR7       TP                  R4      P                  R	R
4      T n        TP                  R4      P                  R	R
4      T n        TP                  R4      P                  R4      pTP                  R4      P                  R4      oTP                  R4      P                  R4      o\!        TT3R lT 4       4      T n         R p?R # R p?ii ; i)NzWheel filename zU is not correctly normalised. Future versions of pip will raise the following error:
z

zvto rename the wheel to use a correctly normalised name (this may require updating the version in the project metadata)z25.3i2  )reasonreplacementgone_inissuename_-verpyver.abiplatc           	   3   b   <"   T F$  pS F  pS F  p\        WVR 7      x  K  	  K  	  K&  	  R# 5i))interpreterr%   platformNr   ).0pyr%   r&   abisplatss   &   r   	<genexpr>!Wheel.__init__.<locals>.<genexpr>D   s>      '$BC!D d;; " < <$s   ,/)r   
_build_tagr	   r   	file_tagsr   version_PackagingInvalidWheelFilenamelegacy_wheel_file_rematchr
   argsr   groupreplacesplit	frozenset)	selfr   
wheel_info_versionelegacy_wheel_info
pyversionsr,   r-   s	   &&     @@r   __init__Wheel.__init__   sc     	.2%	-h7JCM@DIx$.x=DL- !	 $ 9 9 ? ? I$*166!954?%h\ 2Ovvayk'
,  *//7??SIDI,2259AA#sKDL +009??DJ$**5177<D%++F399#>E& '$' DNN9!	s   0A FD/FFc                    < V ^8  d   QhRS[ /# r   r   )r   )r   r   s   "r   r   r   L   s      8 r   c                t   V P                   e   V P                   # V P                  P                  V P                  4      pVf   Q R4       hVP	                  R4      p\
        P                  ! RV4      pVf   Q R4       hVP                  4       p\        V^ ,          4      V^,          3V n         V P                   # )Nz!guaranteed by filename validationbuildz^(\d+)(.*)$)r0   r4   r5   r   r7   regroupsint)r;   r?   	build_tagr5   build_tag_groupss   &    r   rJ   Wheel.build_tagK   s    ??&??" !55;;DMMJ ,Q.QQ,%++G4	3 E"EE  <<>/235Ea5HIr   c                0   < V ^8  d   QhRS[ S[,          /# rD   )r   r   )r   r   s   "r   r   r   [   s     : :c :r   c                :    \        R V P                   4       4      # )z4Return the wheel's tags as a sorted list of strings.c              3   8   "   T F  p\        V4      x  K  	  R # 5iNr   )r*   tags   & r   r.   0Wheel.get_formatted_file_tags.<locals>.<genexpr>]   s     9.3c#hh.s   )sortedr1   )r;   s   &r   get_formatted_file_tagsWheel.get_formatted_file_tags[   s    9$..999r   c                6   < V ^8  d   QhRS[ S[,          RS[/# r   tagsr   )r   r   rI   )r   r   s   "r   r   r   _   s      d3i C r   c                t   a   \        V 3R l\        V4       4       4      #   \         d    \        4       hi ; i)a  Return the lowest index that one of the wheel's file_tag combinations
achieves in the given list of supported tags.

For example, if there are 8 supported tags and one of the file tags
is first in the list, then return 0.

:param tags: the PEP 425 tags to check the wheel against, in order
    with most preferred first.

:raises ValueError: If none of the wheel's file tags match one of
    the supported tags.
c              3   R   <"   T F  w  rVSP                   9   g   K  Vx  K  	  R # 5irP   )r1   )r*   itr;   s   &  r   r.   *Wheel.support_index_min.<locals>.<genexpr>m   s      Modadnn9Los   '
')next	enumerateStopIteration
ValueErrorr;   rX   s   f&r   support_index_minWheel.support_index_min_   s4    	MioMMM 	,	s   ! 7c                R   < V ^8  d   QhRS[ S[,          RS[S[S[3,          RS[/# )r   rX   tag_to_priorityr   )r   r   r   rI   )r   r   s   "r   r   r   q   s1     
 
I
04S#X
	
r   c                B   a \        V3R lV P                   4       4      # )aX  Return the priority of the most preferred tag that one of the wheel's file
tag combinations achieves in the given list of supported tags using the given
tag_to_priority mapping, where lower priorities are more-preferred.

This is used in place of support_index_min in some cases in order to avoid
an expensive linear scan of a large list of tags.

:param tags: the PEP 425 tags to check the wheel against.
:param tag_to_priority: a mapping from tag to priority of that tag, where
    lower is more preferred.

:raises ValueError: If none of the wheel's file tags match one of
    the supported tags.
c              3   F   <"   T F  qS9   g   K  SV,          x  K  	  R # 5irP    )r*   rQ   rf   s   & r   r.   0Wheel.find_most_preferred_tag.<locals>.<genexpr>   s$      
,:S_>T OC  Ns   !!)minr1   )r;   rX   rf   s   &&fr   find_most_preferred_tagWheel.find_most_preferred_tagq   s#    "  
,0NN
 
 	
r   c                6   < V ^8  d   QhRS[ S[,          RS[/# rW   )r   r   bool)r   r   s   "r   r   r      s     3 3hsm 3 3r   c                B    V P                   P                  V4      '       * # )z~Return whether the wheel is compatible with one of the given tags.

:param tags: the PEP 425 tags to check the wheel against.
)r1   
isdisjointrb   s   &&r   	supportedWheel.supported   s    
 >>,,T222r   )r0   r1   r   r   r2   N)__name__
__module____qualname____firstlineno____doc__rG   compileVERBOSEr4   rA   propertyrJ   rT   rc   rl   rr   __static_attributes____classdictcell__)r   s   @r   r   r      sl     ::	 	

	- -^  : : $
 
*3 3r   r   )rx   rG   typingr   r   r   r   pip._vendor.packaging.tagsr   pip._vendor.packaging.utilsr   r	   r
   r3   pip._internal.exceptionspip._internal.utils.deprecationr   r   ri   r   r   <module>r      s4    
 1 1 * F : 6y3 y3r   