ó
    Ñ]j€(  ã                  óÄ  • % S r SSKJr  SSKrSSKrSSKrSSKrSSKJr  SSK	J
r
Jr  \R                  S:¼  a  SSSS.OS	S0r\
(       a  SS
KJr  \R                   " S\R"                  5      rS\S'   \R                   " S\R"                  5      rS\S'   SSSS.rS\S'   \" S0 \D6 " S S5      5       r\" S0 \D6 " S S5      5       r\" S0 \D6 " S S5      5       r/ SQrg)zKVersion specifier support using only standard library (PEP 440 compatible).é    )ÚannotationsN)Ú	dataclass)ÚTYPE_CHECKINGÚFinal)é   é
   T)ÚfrozenÚkw_onlyÚslotsr	   )ÚIteratorz¹
    ^
    (\d+)               # major
    (?:\.(\d+))?        # optional minor
    (?:\.(\d+))?        # optional micro
    (?:(a|b|rc)(\d+))?  # optional pre-release suffix
    $
    zFinal[re.Pattern[str]]Ú_VERSION_REzr
    ^
    (===|==|~=|!=|<=|>=|<|>)  # operator
    \s*
    (.+)                       # version string
    $
    Ú_SPECIFIER_REé   é   r   )ÚaÚbÚrczFinal[dict[str, int]]Ú
_PRE_ORDERc                  óÄ   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   \SS j5       rSS jrSS jr	SS jr
SS jrSS jrSS jrSS jrSS jrSrg)ÚSimpleVersioné)   a§  
Simple PEP 440-like version parser using only standard library.

:param version_str: the original version string.
:param major: major version number.
:param minor: minor version number.
:param micro: micro (patch) version number.
:param pre_type: pre-release label (``"a"``, ``"b"``, or ``"rc"``), or ``None``.
:param pre_num: pre-release sequence number, or ``None``.
:param release: the ``(major, minor, micro)`` tuple.
ÚstrÚversion_strÚintÚmajorÚminorÚmicroz
str | NoneÚpre_typeú
int | NoneÚpre_numztuple[int, int, int]Úreleasec                ó  • UR                  5       n[        R                  U5      =n(       d  SU 3n[        U5      e[	        UR                  S5      5      nUR                  S5      (       a  [	        UR                  S5      5      OSnUR                  S5      (       a  [	        UR                  S5      5      OSnU " UUUUUR                  S5      UR                  S5      (       a  [	        UR                  S5      5      OSXVU4S	9$ )
ze
Parse a PEP 440 version string (e.g. ``3.12.1``).

:param version_str: the version string to parse.
zInvalid version: r   r   r   r   é   é   N)r   r   r   r   r   r    r!   )Ústripr   ÚmatchÚ
ValueErrorr   Úgroup)Úclsr   Ústrippedr&   Úmsgr   r   r   s           ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/python_discovery/_specifier.pyÚfrom_stringÚSimpleVersion.from_string?   sÚ   € ð ×$Ñ$Ó&ˆÜ$×*Ñ*¨8Ó4Ð4�Õ4Ø% k ]Ð3ˆCÜ˜S“/Ð!Ü�E—K‘K “NÓ#ˆØ',§{¡{°1§~¡~”�E—K‘K “NÔ#¸1ˆØ',§{¡{°1§~¡~”�E—K‘K “NÔ#¸1ˆÙØ ØØØØ—[‘[ “^Ø+0¯;©;°q¯>©>”C˜Ÿ™ A›Ô'¸tØ 5Ð)ñ
ð 	
ó    c                óê   • [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ ©N)Ú
isinstancer   ÚNotImplementedr!   r   r    ©ÚselfÚothers     r,   Ú__eq__ÚSimpleVersion.__eq__W   sR   € Ü˜%¤×/Ñ/Ü!Ð!Ø�|‰|˜uŸ}™}Ñ,×r°·±À%Ç.Á.Ñ1P×rÐUY×UaÑUaÐej×erÑerÑUrÐrr/   c                óZ   • [        U R                  U R                  U R                  45      $ r1   )Úhashr!   r   r    ©r5   s    r,   Ú__hash__ÚSimpleVersion.__hash__\   s    € Ü�T—\‘\ 4§=¡=°$·,±,Ð?Ó@Ð@r/   c                ó   • [        U[        5      (       d  [        $ U R                  UR                  :w  a  U R                  UR                  :  $ U R                  c  UR                  c  gU R                  c  gUR                  c  g[
        U R                     [
        UR                     :w  a'  [
        U R                     [
        UR                     :  $ U R                  =(       d    SUR                  =(       d    S:  $ )NFTr   )r2   r   r3   r!   r   r   r    r4   s     r,   Ú__lt__ÚSimpleVersion.__lt___   s¼   € Ü˜%¤×/Ñ/Ü!Ð!Ø�<‰<˜5Ÿ=™=Ó(Ø—<‘< %§-¡-Ñ/Ð/Ø�=‰=Ñ  U§^¡^Ñ%;ØØ�=‰=Ñ ØØ�>‰>Ñ!ØÜ�d—m‘mÑ$¬
°5·>±>Ñ(BÓBÜ˜dŸm™mÑ,¬z¸%¿.¹.Ñ/IÑIÐIØ—‘×!  e§m¡m×&8°qÑ9Ð9r/   c                ó    • X:H  =(       d    X:  $ r1   © r4   s     r,   Ú__le__ÚSimpleVersion.__le__n   s   € Ø‰}×, ¡Ð,r/   c                óB   • [        U[        5      (       d  [        $ X::  + $ r1   )r2   r   r3   r4   s     r,   Ú__gt__ÚSimpleVersion.__gt__q   s   € Ü˜%¤×/Ñ/Ü!Ð!ØÒ Ð r/   c                ó   • X:  + $ r1   rB   r4   s     r,   Ú__ge__ÚSimpleVersion.__ge__v   s   € ØÒÐr/   c                ó   • U R                   $ r1   ©r   r;   s    r,   Ú__str__ÚSimpleVersion.__str__y   s   € Ø×ÑÐr/   c                ó"   • SU R                    S3$ )NzSimpleVersion('ú')rL   r;   s    r,   Ú__repr__ÚSimpleVersion.__repr__|   s   € Ø  ×!1Ñ!1Ð 2°"Ð5Ð5r/   rB   N)r   r   Úreturnr   ©r6   ÚobjectrS   Úbool©rS   r   ©rS   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Úclassmethodr-   r7   r<   r?   rC   rF   rI   rM   rQ   Ú__static_attributes__rB   r/   r,   r   r   )   sl   ‡ ñ
ð ÓØƒJØƒJØƒJØÓØÓØ!Ó!àó
ó ð
ô.sô
Aô:ô-ô!ô
 ô ÷6r/   r   c                  óº   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   \SS j5       rSS jrSS jr	SS jr
SS jrSS jrSS jrSS jrSS jrSrg)ÚSimpleSpecifieré€   a  
Simple PEP 440-like version specifier using only standard library.

:param spec_str: the original specifier string (e.g. ``>=3.10``).
:param operator: the comparison operator (``==``, ``>=``, ``<``, etc.).
:param version_str: the version portion of the specifier, without the operator.
:param is_wildcard: ``True`` if the specifier uses a wildcard suffix (``.*``).
:param wildcard_precision: number of version components before the wildcard, or ``None``.
:param version: the parsed version, or ``None`` if parsing failed.
r   Úspec_strÚoperatorr   rV   Úis_wildcardr   Úwildcard_precisionzSimpleVersion | NoneÚversionc           	     ó²  • UR                  5       n[        R                  U5      =n(       d  SU 3n[        U5      eUR	                  S5      nUR	                  S5      R                  5       nUR                  S5      nSnU(       a  USS n[        UR                  S5      5      n [        R                  U5      n	U " UUUUUU	S9$ ! [         a    Sn	 Nf = f)	zf
Parse a single PEP 440 specifier (e.g. ``>=3.10``).

:param spec_str: the specifier string to parse.
zInvalid specifier: r   r   z.*NéþÿÿÿÚ.)rd   re   r   rf   rg   rh   )
r%   r   r&   r'   r(   ÚendswithÚlenÚsplitr   r-   )
r)   rd   r*   r&   r+   Úopr   rf   rg   rh   s
             r,   r-   ÚSimpleSpecifier.from_string”   sæ   € ð —>‘>Ó#ˆÜ&×,Ñ,¨XÓ6Ð6�Õ6Ø'¨ zÐ2ˆCÜ˜S“/Ð!Ø�[‰[˜‹^ˆØ—k‘k !“n×*Ñ*Ó,ˆØ!×*Ñ*¨4Ó0ˆØ)-ÐÞØ% c rÐ*ˆKÜ!$ [×%6Ñ%6°sÓ%;Ó!<Ðð	Ü#×/Ñ/°Ó<ˆGñ ØØØ#Ø#Ø1Øñ
ð 	
øô ó 	ØŠGð	ús   Â'C ÃCÃCc                óþ   •  [        U[        5      (       a  [        R                  U5      OUnU R
                  c  gU R                  (       a  U R                  U5      $ U R                  U5      $ ! [         a     gf = f)zf
Check if a version string satisfies this specifier.

:param version_str: the version string to test.
F)	r2   r   r   r-   r'   rh   rf   Ú_check_wildcardÚ_check_standard)r5   r   Ú	candidates      r,   ÚcontainsÚSimpleSpecifier.contains³   su   € ð	ÜBLÈ[ÔZ]×B^ÑB^œ×1Ñ1°+Ô>ÐdoˆIð �<‰<ÑØØ××Ø×'Ñ'¨	Ó2Ð2Ø×#Ñ# IÓ.Ð.øô ó 	Ùð	ús   ‚,A/ Á/
A<Á;A<c                óT  • U R                   c  gU R                  S:X  a=  UR                  S U R                   U R                   R                  S U R                   :H  $ U R                  S:X  a=  UR                  S U R                   U R                   R                  S U R                   :g  $ g)NFú==ú!=)rh   re   r!   rg   )r5   rt   s     r,   rr   ÚSimpleSpecifier._check_wildcardÃ   sš   € Ø�<‰<ÑØØ�=‰=˜DÓ Ø×$Ñ$Ð%> t×'>Ñ'>Ð?À4Ç<Á<×CWÑCWÐXqÐZ^×ZqÑZqÐCrÑrÐrØ�=‰=˜DÓ Ø×$Ñ$Ð%> t×'>Ñ'>Ð?À4Ç<Á<×CWÑCWÐXqÐZ^×ZqÑZqÐCrÑrÐrØr/   c                óÚ  • U R                   c  gU R                  S:X  a!  [        U5      [        U R                   5      :H  $ U R                  S:X  a  U R                  U5      $ [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  S.nU R                  U;   a  X R                     " XR                   5      $ g)NFz===z~=)rx   ry   Ú<z<=Ú>z>=)
rh   re   r   Ú_check_compatible_releaseÚeqÚneÚltÚleÚgtÚge)r5   rt   Úcmp_opss      r,   rs   ÚSimpleSpecifier._check_standardÌ   s¨   € Ø�<‰<ÑØØ�=‰=˜EÓ!Ü�y“>¤S¨¯©Ó%6Ñ6Ð6Ø�=‰=˜DÓ Ø×1Ñ1°)Ó<Ð<ä—+‘+Ü—+‘+Ü—‘Ü—+‘+Ü—‘Ü—+‘+ñ
ˆð �=‰=˜GÓ#ØŸ=™=Ò)¨)·\±\ÓBÐBØr/   c                óB  • U R                   c  gXR                   :  a  g[        U R                   R                  5      S:¼  a^  [        U R                   R                  S S 5      nUS==   S-  ss'   [        R                  SR                  S U 5       5      5      nX:  $ g)NFr   éÿÿÿÿr   rk   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr1   )r   )Ú.0Úps     r,   Ú	<genexpr>Ú<SimpleSpecifier._check_compatible_release.<locals>.<genexpr>ç   s   é € Ð6SÂ{À!´s¸1·v°vÂ{ùs   ‚T)rh   rm   r!   Úlistr   r-   Újoin)r5   rt   Úupper_partsÚuppers       r,   r~   Ú)SimpleSpecifier._check_compatible_releaseß   s‡   € Ø�<‰<ÑØØ—|‘|Ó#ØÜˆt�|‰|×#Ñ#Ó$¨Ó)Ü˜tŸ|™|×3Ñ3°C°RÐ8Ó9ˆKØ˜‹O˜qÑ ‹OÜ!×-Ñ-¨c¯h©hÑ6SÁ{Ó6SÓ.SÓTˆEØÑ$Ð$Ør/   c                ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ r1   )r2   rb   r3   rd   r4   s     r,   r7   ÚSimpleSpecifier.__eq__ë   s(   € Ü˜%¤×1Ñ1Ü!Ð!Ø�}‰} §¡Ñ.Ð.r/   c                ó,   • [        U R                  5      $ r1   )r:   rd   r;   s    r,   r<   ÚSimpleSpecifier.__hash__ð   s   € Ü�D—M‘MÓ"Ð"r/   c                ó   • U R                   $ r1   ©rd   r;   s    r,   rM   ÚSimpleSpecifier.__str__ó   s   € Ø�}‰}Ðr/   c                ó"   • SU R                    S3$ )NzSimpleSpecifier('rP   r˜   r;   s    r,   rQ   ÚSimpleSpecifier.__repr__ö   s   € Ø" 4§=¡= /°Ð4Ð4r/   rB   N)rd   r   rS   rb   ©r   r   rS   rV   )rt   r   rS   rV   rT   rW   rX   )rY   rZ   r[   r\   r]   r^   r_   r-   ru   rr   rs   r~   r7   r<   rM   rQ   r`   rB   r/   r,   rb   rb   €   se   ‡ ñ	ð ƒMØƒMØÓØÓØ"Ó"Ø!Ó!àó
ó ð
ô</ô ôô&
ô/ô
#ô÷5r/   rb   c                  ó‚   • \ rS rSr% SrS\S'   S\S'   \SSS jj5       rSS jrSS	 jr	SS
 jr
SS jrSS jrSS jrSrg)ÚSimpleSpecifierSetéú   z¼
Simple PEP 440-like specifier set using only standard library.

:param specifiers_str: the original comma-separated specifier string.
:param specifiers: the parsed individual specifiers.
r   Úspecifiers_strztuple[SimpleSpecifier, ...]Ú
specifiersc                óh  • UR                  5       n/ nU(       ax  UR                  S5       Hc  nUR                  5       nU(       d  M  [        R                  " [        5         UR                  [        R                  U5      5        SSS5        Me     U " U[        U5      S9$ ! , (       d  f       M†  = f)z
Parse a comma-separated PEP 440 specifier string (e.g. ``>=3.10,<4``).

:param specifiers_str: the specifier string to parse.
Ú,N)r    r¡   )	r%   rn   Ú
contextlibÚsuppressr'   Úappendrb   r-   Útuple)r)   r    r*   ÚspecsÚ	spec_itemÚitems         r,   r-   ÚSimpleSpecifierSet.from_string  s‡   € ð "×'Ñ'Ó)ˆØ')ˆÞØ%Ÿ^™^¨CÖ0�	Ø —‘Ó(�ß�4Ü#×,Ò,¬ZÕ8ØŸ™¤_×%@Ñ%@ÀÓ%FÔG÷ 9Ñ8ñ 1ñ
  (´u¸U³|ÑDÐD÷ 9Ö8ús   Á!%B"Â"
B1	c                óf   ^• U R                   (       d  g[        U4S jU R                    5       5      $ )zj
Check if a version satisfies all specifiers in the set.

:param version_str: the version string to test.
Tc              3  óD   >#   • U  H  oR                  T5      v •  M     g 7fr1   )ru   )rŠ   Úspecr   s     €r,   rŒ   Ú.SimpleSpecifierSet.contains.<locals>.<genexpr>  s   øé € ÐJº/°$—=‘= ×-Ð-º/ùs   ƒ )r¡   Úall)r5   r   s    `r,   ru   ÚSimpleSpecifierSet.contains  s$   ø€ ð ��ØÜÔJ¸$¿/º/ÓJÓJÐJr/   c                ó,   • [        U R                  5      $ r1   )Úiterr¡   r;   s    r,   Ú__iter__ÚSimpleSpecifierSet.__iter__!  s   € Ü�D—O‘OÓ$Ð$r/   c                ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ r1   )r2   rž   r3   r    r4   s     r,   r7   ÚSimpleSpecifierSet.__eq__$  s-   € Ü˜%Ô!3×4Ñ4Ü!Ð!Ø×"Ñ" e×&:Ñ&:Ñ:Ð:r/   c                ó,   • [        U R                  5      $ r1   )r:   r    r;   s    r,   r<   ÚSimpleSpecifierSet.__hash__)  s   € Ü�D×'Ñ'Ó(Ð(r/   c                ó   • U R                   $ r1   ©r    r;   s    r,   rM   ÚSimpleSpecifierSet.__str__,  s   € Ø×"Ñ"Ð"r/   c                ó"   • SU R                    S3$ )NzSimpleSpecifierSet('rP   r»   r;   s    r,   rQ   ÚSimpleSpecifierSet.__repr__/  s   € Ø% d×&9Ñ&9Ð%:¸"Ð=Ð=r/   rB   N)Ú )r    r   rS   rž   rœ   )rS   zIterator[SimpleSpecifier]rT   rW   rX   )rY   rZ   r[   r\   r]   r^   r_   r-   ru   r´   r7   r<   rM   rQ   r`   rB   r/   r,   rž   rž   ú   sH   ‡ ñð ÓØ+Ó+àõEó ðEô Kô%ô;ô
)ô#÷>r/   rž   )rb   rž   r   rB   )r]   Ú
__future__r   r¤   re   ÚreÚsysÚdataclassesr   Útypingr   r   Úversion_infoÚ_DC_KWÚcollections.abcr   ÚcompileÚVERBOSEr   r^   r   r   r   rb   rž   Ú__all__rB   r/   r,   Ú<module>rË      s  ðÚ Qå "ã Û Û 	Û 
Ý !ß 'à=@×=MÑ=MÐQXÓ=X�D T°DÒ	9Ð_gÐimÐ^n€æÝ(à&(§j¢jðð ‡J�Jó
'€Ð#ó 
ð )+¯
ª
ðð ‡J�Jó	)€Ð%ó 	ð +,°!¸1Ñ$=€
Ð!Ó =ñ ÑˆVÑ÷S6ð S6ó ðS6ñl ÑˆVÑ÷v5ð v5ó ðv5ñr ÑˆVÑ÷5>ð 5>ó ð5>òp�r/   