+
    JV-jZ ã                  ó,  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RI
HtHtHtHtHtHtHtHtHt ^RIHt ^RIHtHt ]	P2                  RJ8¼  d   ^ RI
Ht M]'       d   ^ RIHt . RKOtR R ltR R ltR R lt]! R4      t ]]]!3,          t"]! R]"R7      t#]]]!.]$3,          t%]! R4      t&R]'R&   R R lt( ! R R]PR                  4      t*]PV                   ! R R4      4       t,]PV                   ! R R4      4       t-]PV                   ! R R 4      4       t.]
P                  '       d   ]]],R3,          t/]0]-].3,          t1]-! RR!4      t2].! RR!4      t3]2]333t4R"]'R#&   R$ R% lt5R& R' lt6R( R) lt7R* R+ lt8R, R- lt9R. R/ lt:R0 R1 lt;R2 R3 lt<R4 R5 lt= ! R6 R]>4      t? ! R7 R]P€                  R87      tA ! R9 R	]A4      tB]P†                  ! R:4      tDR; R< ltER= R> ltFR? R@ ltGRA RB ltHRC RD ltIRE RF ltJRG RH ltK ! RI R
]A4      tLR# )LzŠ
.. testsetup::

    from packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier
    from packaging.version import Version
)ÚannotationsN)	ÚTYPE_CHECKINGÚAnyÚCallableÚFinalÚIterableÚIteratorÚSequenceÚTypeVarÚUnion)Úcanonicalize_version)ÚInvalidVersionÚVersion)Ú	TypeGuardÚBaseSpecifierÚInvalidSpecifierÚ	SpecifierÚSpecifierSetc               ó   € V ^8„  d   QhRR/# )é   Úreturnú	list[str]© )Úformats   "Úe/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/packaging/specifiers.pyÚ__annotate__r   0   s   € ÷ ñ �ñ ó    c                 ó   € \         # ©N)Ú__all__r   r   r   Ú__dir__r    0   s   € Ü€Nr   c               ó    € V ^8„  d   QhRRRR/# )r   ÚspecÚobjectr   zTypeGuard[tuple[str, str]]r   )r   s   "r   r   r   4   s   € ÷ ñ ˜ð Ð'Añ r   c               óÊ   € \        V \        4      ;'       dM    \        V 4      ^8H  ;'       d7    \        V ^ ,          \        4      ;'       d    \        V ^,          \        4      # )r   )Ú
isinstanceÚtupleÚlenÚstr)r"   s   "r   Ú_validate_specr)   4   sX   € ä�4œÓ÷ 	%ð 	%Ü�‹I˜‰N÷	%ð 	%ä�t˜A•w¤Ó$÷	%ð 	%ô �t˜A•w¤Ó$ð	r   c               ó    € V ^8„  d   QhRRRR/# )r   Úprer#   r   zTypeGuard[bool | None]r   )r   s   "r   r   r   =   s   € ÷ 0ñ 0�vð 0Ð%;ñ 0r   c               ó:   € V R J ;'       g    \        V \        4      # r   )r%   Úbool)r+   s   "r   Ú_validate_prer.   =   s   € Ø�$ˆ;×/Ð/œ* S¬$Ó/Ð/r   ÚTÚUnparsedVersionVar)Úboundz0.dev0zFinal[Version]Ú_MIN_VERSIONc               ó    € V ^8„  d   QhRRRR/# )r   Úreleaseztuple[int, ...]r   r   )r   s   "r   r   r   J   s   € ÷ =ñ =˜?ð =¨ñ =r   c                ó’   € \        V 4      pV^8”  d    W^,
          ,          ^ 8X  d   V^,          pK&  V\        V 4      8X  d   V # V RV # )zDStrip trailing zeros from a release tuple for normalized comparison.N)r'   )r4   Úends   & r   Ú_trim_releaser7   J   sE   € ä
ˆg‹,€CØ
�Œ'�g A�gÕ&¨!Ô+Øˆq�ŠØœS ›\Ô)ˆ7Ð<¨w°t¸¨}Ð<r   c                  ó^   € ] tR t^RtRt]P                  ! 4       t]P                  ! 4       tRt	R# )Ú_BoundaryKindz5Where a boundary marker sits in the version ordering.r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚenumÚautoÚAFTER_LOCALSÚAFTER_POSTSÚ__static_attributes__r   r   r   r9   r9   R   s   † Ù?à—9’9“;€LØ—)’)“+„Kr   r9   c                  óf   € ] tR t^YtRtR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tR# )Ú_BoundaryVersionaÙ  A point on the version line between two real PEP 440 versions.

Some specifier semantics imply boundaries between real versions:
``<=1.0`` includes ``1.0+local`` and ``>1.0`` excludes
``1.0.post0``.  No real :class:`Version` falls on those boundaries,
so this class creates values that sort between the real versions
on either side.

Two kinds exist, shown relative to a base version V::

    V < V+local < AFTER_LOCALS(V) < V.post0 < AFTER_POSTS(V)

``AFTER_LOCALS`` sits after V and every V+local, but before
V.post0.  Upper bound of ``<=V``, ``==V``, ``!=V``.

``AFTER_POSTS`` sits after every V.postN, but before the next
release segment.  Lower bound of ``>V`` (final or pre-release V)
to exclude post-releases per PEP 440.
c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úversionr   Úkindr9   r   ÚNoner   )r   s   "r   r   Ú_BoundaryVersion.__annotate__q   s!   € ÷ ?ñ ? ð ?¨}ð ?Àñ ?r   c                	óR   € Wn         W n        \        VP                  4      V n        R # r   )rG   Ú_kindr7   r4   Ú_trimmed_release)ÚselfrG   rH   s   &&&r   Ú__init__Ú_BoundaryVersion.__init__q   s   € ØŒØŒ
Ü -¨g¯o©oÓ >ˆÖr   c               ó    € V ^8„  d   QhRRRR/# )r   Úotherr   r   r-   r   )r   s   "r   r   rJ   v   s   € ÷ <ñ < ð <¨Dñ <r   c                óâ  € V P                   pVP                  VP                  8X  d@   \        VP                  4      V P                  8X  d   VP
                  VP
                  8X  g   R# V P                  \        P                  8X  d;   VP                  VP                  8H  ;'       d    VP                  VP                  8H  # VP                  VP                  8H  ;'       g    VP                  RJ# )z6Is ``other`` a version that this boundary sorts above?FN)rG   Úepochr7   r4   rM   r+   rL   r9   rA   ÚpostÚdev)rN   rR   Úvs   && r   Ú
_is_familyÚ_BoundaryVersion._is_familyv   s£   € à�L‰Lˆà�K‰K˜1Ÿ7™7Ô"Ü˜eŸm™mÓ,°×0EÑ0EÔEØ—	‘	˜QŸU™UÔ"áØ�:‰:œ×3Ñ3Ô3à—:‘: §¡Ñ'×>Ð>¨E¯I©I¸¿¹Ñ,>Ð>à�y‰y˜AŸE™EÑ!×;Ð; U§Z¡Z°tÐ%;Ð;r   c               ó    € V ^8„  d   QhRRRR/# ©r   rR   r#   r   r-   r   )r   s   "r   r   rJ   …   s   € ÷ ñ ˜Fð  tñ r   c                	ó®   € \        V\        4      '       d;   V P                  VP                  8H  ;'       d    V P                  VP                  8H  # \        # r   )r%   rE   rG   rL   ÚNotImplemented©rN   rR   s   &&r   Ú__eq__Ú_BoundaryVersion.__eq__…   s>   € Ü�eÔ-×.Ò.Ø—<‘< 5§=¡=Ñ0×NÐN°T·Z±ZÀ5Ç;Á;Ñ5NÐNÜÐr   c               ó    € V ^8„  d   QhRRRR/# )r   rR   z_BoundaryVersion | Versionr   r-   r   )r   s   "r   r   rJ   Š   s   € ÷ Cñ CÐ6ð C¸4ñ Cr   c                	óJ  € \        V\        4      '       db   V P                  VP                  8w  d   V P                  VP                  8  # V P                  P                  VP                  P                  8  # V P                  V4      '       * ;'       d    V P                  V8  # r   )r%   rE   rG   rL   ÚvaluerX   r^   s   &&r   Ú__lt__Ú_BoundaryVersion.__lt__Š   su   € Ü�eÔ-×.Ò.Ø�|‰|˜uŸ}™}Ô,Ø—|‘| e§m¡mÑ3Ð3Ø—:‘:×#Ñ# e§k¡k×&7Ñ&7Ñ7Ð7Ø—?‘? 5Ó)Ô)×BÐB¨d¯l©l¸UÑ.BÐBr   c               ó   € V ^8„  d   QhRR/# ©r   r   Úintr   )r   s   "r   r   rJ   ‘   s   € ÷ 0ñ 0˜#ñ 0r   c                	óD   € \        V P                  V P                  34      # r   )ÚhashrG   rL   ©rN   s   &r   Ú__hash__Ú_BoundaryVersion.__hash__‘   s   € Ü�T—\‘\ 4§:¡:Ð.Ó/Ð/r   c               ó   € V ^8„  d   QhRR/# ©r   r   r(   r   )r   s   "r   r   rJ   ”   s   € ÷ Qñ Q˜#ñ Qr   c                	ó~   € V P                   P                   R V P                  : RV P                  P                   R2# )Ú(z, Ú))Ú	__class__r:   rG   rL   Únamerk   s   &r   Ú__repr__Ú_BoundaryVersion.__repr__”   s4   € Ø—.‘.×)Ñ)Ð*¨!¨D¯L©LÑ+;¸2¸d¿j¹j¿o¹oÐ=NÈaÐPÐPr   )rL   rM   rG   N)r:   r;   r<   r=   r>   Ú	__slots__rO   rX   r_   rd   rl   ru   rC   r   r   r   rE   rE   Y   s4   † ñð( 9€Iõ?õ
<õõ
Cõ0÷Qñ Qr   rE   c                  óZ   € ] tR t^˜tRtRtR R ltR R ltR R ltR R	 lt	R
 R lt
RtR# )Ú_LowerBoundz²Lower bound of a version range.

A version *v* of ``None`` means unbounded below (-inf).
At equal versions, ``[v`` sorts before ``(v`` because an inclusive
bound starts earlier.
c               ó$   € V ^8„  d   QhRRRRRR/# ©r   rG   Ú_VersionOrBoundaryÚ	inclusiver-   r   rI   r   )r   s   "r   r   Ú_LowerBound.__annotate__£   ó"   € ÷ #ñ #Ð 2ð #¸tð #Èñ #r   c                	ó   € Wn         W n        R # r   ©rG   r}   ©rN   rG   r}   s   &&&r   rO   Ú_LowerBound.__init__£   ó   € ØŒØ"Žr   c               ó    € V ^8„  d   QhRRRR/# r[   r   )r   s   "r   r   r~   §   ó   € ÷ Sñ S˜Fð S tñ Sr   c                	ó®   € \        V\        4      '       g   \        # V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r   ©r%   ry   r]   rG   r}   r^   s   &&r   r_   Ú_LowerBound.__eq__§   ó=   € Ü˜%¤×-Ò-Ü!Ð!Ø�|‰|˜uŸ}™}Ñ,×RÐR°·±À5Ç?Á?Ñ1RÐRr   c               ó    € V ^8„  d   QhRRRR/# )r   rR   ry   r   r-   r   )r   s   "r   r   r~   ¬   ó   € ÷ 6ñ 6˜Kð 6¨Dñ 6r   c                	óD  € \        V\        4      '       g   \        # V P                  f   VP                  R J# VP                  f   R# V P                  VP                  8w  d   V P                  VP                  8  # V P                  ;'       d    VP                  '       * # )NFrˆ   r^   s   &&r   rd   Ú_LowerBound.__lt__¬   sw   € Ü˜%¤×-Ò-Ü!Ð!à�<‰<ÒØ—=‘=¨Ð,Ð,Ø�=‰=Ò ÙØ�<‰<˜5Ÿ=™=Ô(Ø—<‘< %§-¡-Ñ/Ð/à�~‰~×5Ð5 e§o¡oÔ"5Ð5r   c               ó   € V ^8„  d   QhRR/# rg   r   )r   s   "r   r   r~   ¹   ó   € ÷ 4ñ 4˜#ñ 4r   c                	óD   € \        V P                  V P                  34      # r   ©rj   rG   r}   rk   s   &r   rl   Ú_LowerBound.__hash__¹   ó   € Ü�T—\‘\ 4§>¡>Ð2Ó3Ð3r   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   r~   ¼   ó   € ÷ Hñ H˜#ñ Hr   c                	ó‚   € V P                   '       d   R MRpRV P                  P                   RV V P                  : R2# )Ú[rq   Ú<Ú Ú>©r}   rs   r:   rG   ©rN   Úbrackets   & r   ru   Ú_LowerBound.__repr__¼   s:   € ØŸŸ˜‘#¨SˆØ�4—>‘>×*Ñ*Ð+¨1¨W¨I°d·l±lÑ5EÀQÐGÐGr   ©r}   rG   N©r:   r;   r<   r=   r>   rw   rO   r_   rd   rl   ru   rC   r   r   r   ry   ry   ˜   ó/   † ñð )€Iõ#õSõ
6õ4÷Hñ Hr   ry   c                  óZ   € ] tR t^ÁtRtRtR R ltR R ltR R ltR R	 lt	R
 R lt
RtR# )Ú_UpperBoundz°Upper bound of a version range.

A version *v* of ``None`` means unbounded above (+inf).
At equal versions, ``v)`` sorts before ``v]`` because an exclusive
bound ends earlier.
c               ó$   € V ^8„  d   QhRRRRRR/# r{   r   )r   s   "r   r   Ú_UpperBound.__annotate__Ì   r   r   c                	ó   € Wn         W n        R # r   r�   r‚   s   &&&r   rO   Ú_UpperBound.__init__Ì   r„   r   c               ó    € V ^8„  d   QhRRRR/# r[   r   )r   s   "r   r   r¦   Ð   r†   r   c                	ó®   € \        V\        4      '       g   \        # V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r   ©r%   r¤   r]   rG   r}   r^   s   &&r   r_   Ú_UpperBound.__eq__Ð   rŠ   r   c               ó    € V ^8„  d   QhRRRR/# )r   rR   r¤   r   r-   r   )r   s   "r   r   r¦   Õ   rŒ   r   c                	ó,  € \        V\        4      '       g   \        # V P                  f   R# VP                  f   R# V P                  VP                  8w  d   V P                  VP                  8  # V P                  '       * ;'       d    VP                  # )NFTr«   r^   s   &&r   rd   Ú_UpperBound.__lt__Õ   sk   € Ü˜%¤×-Ò-Ü!Ð!à�<‰<ÒÙØ�=‰=Ò ÙØ�<‰<˜5Ÿ=™=Ô(Ø—<‘< %§-¡-Ñ/Ð/à—>‘>Ô!×5Ð5 e§o¡oÐ5r   c               ó   € V ^8„  d   QhRR/# rg   r   )r   s   "r   r   r¦   â   r�   r   c                	óD   € \        V P                  V P                  34      # r   r’   rk   s   &r   rl   Ú_UpperBound.__hash__â   r”   r   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   r¦   å   r–   r   c                	ó‚   € V P                   '       d   R MRpRV P                  P                   RV P                  : V R2# )Ú]rr   r™   rš   r›   rœ   r�   s   & r   ru   Ú_UpperBound.__repr__å   s:   € ØŸŸ˜‘#¨SˆØ�4—>‘>×*Ñ*Ð+¨1¨T¯\©\Ñ,<¸W¸IÀQÐGÐGr   r    Nr¡   r   r   r   r¤   r¤   Á   r¢   r   r¤   Fztuple[_VersionRange]Ú_FULL_RANGEc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úlowerry   Úupperr¤   r   r-   r   )r   s   "r   r   r   ö   s!   € ÷ )ñ )˜;ð )¨{ð )¸tñ )r   c                óð   € V P                   e   VP                   f   R# V P                   VP                   8X  d&   V P                  ;'       d    VP                  '       * # V P                   VP                   8„  # )zHTrue when the range defined by *lower* and *upper* contains no versions.Fr�   )r¹   rº   s   &&r   Ú_range_is_emptyr¼   ö   sT   € à‡}�}Ò §¡Ò 5ÙØ‡}�}˜Ÿ™Ô%Ø—O‘O×7Ð7¨¯©Ô8Ð8Ø�=‰=˜5Ÿ=™=Ñ(Ð(r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚleftúSequence[_VersionRange]Úrightr   úlist[_VersionRange]r   )r   s   "r   r   r   ÿ   s&   € ÷ ñ Ø
!ðà"ðð ñr   c                ó"  € . p^ ;r4V\        V 4      8  dz   V\        V4      8  dj   W,          w  rVW,          w  rx\        WW4      p	\        Wh4      p
\        Wš4      '       g   VP	                  Wš34       Wh8  d   V^,          pK~  V^,          pK‰  V# )zFIntersect two sorted, non-overlapping range lists (two-pointer merge).)r'   ÚmaxÚminr¼   Úappend)r¾   rÀ   ÚresultÚ
left_indexÚright_indexÚ
left_lowerÚ
left_upperÚright_lowerÚright_upperr¹   rº   s   &&         r   Ú_intersect_rangesrÍ   ÿ   s‹   € ð
 #%€FØ Ð €JØ
”s˜4“yÔ
  [´3°u³:Ô%=Ø!%Õ!1Ñˆ
Ø#(Õ#5Ñ ˆä�JÓ,ˆÜ�JÓ,ˆä˜u×,Ò,Ø�M‰M˜5˜.Ô)ð Ô#Ø˜!�OŠJà˜1ÕŠKà€Mr   c               ó    € V ^8„  d   QhRRRR/# ©r   rG   r   r   r   )r   s   "r   r   r     s   € ÷ Kñ K˜wð K¨7ñ Kr   c                ó    € . V P                   RR OV P                   R,          ^,           N5p\        P                  ! V P                  V^ R7      # )z5Smallest version in the next prefix: 1.2 -> 1.3.dev0.N©rT   r4   rV   éÿÿÿÿ)r4   r   Ú
from_partsrT   )rG   r4   s   & r   Ú_next_prefix_dev0rÔ     sC   € à>�—‘  Ð$Ð> g§o¡o°bÕ&9¸AÕ&=Ñ>€GÜ×Ò G§M¡M¸7ÈÔJÐJr   c               ó    € V ^8„  d   QhRRRR/# rÏ   r   )r   s   "r   r   r     s   € ÷ Sñ S˜ð S Gñ Sr   c                ó\   € \         P                  ! V P                  V P                  ^ R7      # )z7The .dev0 of a version's base release: 1.2 -> 1.2.dev0.rÑ   )r   rÓ   rT   r4   ©rG   s   &r   Ú
_base_dev0rØ     s    € ä×Ò G§M¡M¸7¿?¹?ÐPQÔRÐRr   c               ó    € V ^8„  d   QhRRRR/# )r   rG   ÚUnparsedVersionr   úVersion | Noner   )r   s   "r   r   r   $  s   € ÷ ñ ˜_ð °ñ r   c                ór   € \        V \        4      '       g    \        V 4      p V # V #   \         d     R # i ; ir   )r%   r   r   r×   s   &r   Ú_coerce_versionrÝ   $  s=   € Ü�gœw×'Ò'ð	Ü˜gÓ&ˆGð €Nˆ7€Nøô ô 	Úð	ús   ˜' §6µ6c               ó    € V ^8„  d   QhRRRR/# rÏ   r   )r   s   "r   r   r   -  s   € ÷ +ñ +˜Wð +¨ñ +r   c                óF   € V P                   f   V # V P                  R R7      # )N)Úlocal)rà   Ú__replace__r×   s   &r   Ú_public_versionrâ   -  s%   € Ø‡}�}ÒØˆØ×Ñ TÐÓ*Ð*r   c               ó    € V ^8„  d   QhRRRR/# rÏ   r   )r   s   "r   r   r   3  s   € ÷ @ñ @˜ð @ Gñ @r   c                ó*   € V P                  RRRR7      # )zqThe version that *version* is a post-release of.

1.0.post1 -> 1.0, 1.0a1.post0 -> 1.0a1, 1.0.post0.dev1 -> 1.0.
N©rU   rV   rà   ©rá   r×   s   &r   Ú
_post_baserç   3  s   € ð
 ×Ñ D¨d¸$ÐÓ?Ð?r   c               ó    € V ^8„  d   QhRRRR/# rÏ   r   )r   s   "r   r   r   ;  s   € ÷ 2ñ 2 'ð 2¨gñ 2r   c                ó(   € V P                  ^ RR7      # )zREarliest pre-release of *version*.

1.2 -> 1.2.dev0, 1.2.post1 -> 1.2.post1.dev0.
N©rV   rà   ræ   r×   s   &r   Ú_earliest_prereleaserë   ;  s   € ð
 ×Ñ 1¨DÐÓ1Ð1r   c               ó    € V ^8„  d   QhRRRR/# )r   rW   r|   r   rÛ   r   )r   s   "r   r   r   C  s   € ÷ 9ñ 9Øð9àñ9r   c                óZ  € V f   R# \        V \        4      '       di   V P                  pVP                  '       d   VP	                  RRRR7      # VP
                  e   VP
                  ^,           M^ pVP	                  VRR7      # V P                  '       g   V # V P	                  RRRR7      # )z:Smallest non-pre-release version at or above *v*, or None.N)r+   rV   rà   )rU   rà   )r%   rE   rG   Úis_prereleaserá   rU   )rW   ÚinnerÚks   &  r   Ú_nearest_non_prereleaserñ   C  sš   € ð 	‚yÙÜ�!Ô%×&Ò&Ø—	‘	ˆØ××Ðà×$Ñ$¨°4¸tÐ$ÓDÐDð !&§
¡
Ò 6ˆU�Z‰Z˜!Ž^¸AˆØ× Ñ  a¨tÐ Ó4Ð4Ø�?�?ˆ?Øˆà�=‰=˜T t°4ˆ=Ó8Ð8r   c                  ó   € ] tR tRtRtRtR# )r   iX  zç
Raised when attempting to create a :class:`Specifier` with a specifier
string that is invalid.

>>> Specifier("lolwat")
Traceback (most recent call last):
    ...
packaging.specifiers.InvalidSpecifier: Invalid specifier: 'lolwat'
r   N)r:   r;   r<   r=   r>   rC   r   r   r   r   r   X  s   † õr   c                  óÈ  € ] tR tRtRtRt]R R l4       t]P                  R R l4       t
]P                  R R l4       t]P                  R R	 l4       t]]P                  R
 R l4       4       t]P                  R R l4       t]P                  RR R ll4       t]P"                  RR R ll4       t]P"                  RR R ll4       t]P                  RR R ll4       tRtR# )r   id  c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   ÚBaseSpecifier.__annotate__i  s   € ÷ ñ �cñ r   c                ó   € \        V 4      # )z Internal property for match_args©r(   rk   s   &r   Ú_strÚBaseSpecifier._strh  s   € ô �4‹yÐr   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   rõ   n  s   € ÷ ñ ˜ñ r   c                ó   € R# )zv
Returns the str representation of this Specifier-like object. This
should be representative of the Specifier itself.
Nr   rk   s   &r   Ú__str__ÚBaseSpecifier.__str__m  ó   ‚ r   c               ó   € V ^8„  d   QhRR/# rg   r   )r   s   "r   r   rõ   u  s   € ÷ ñ ˜#ñ r   c                ó   € R# )z6
Returns a hash value for this Specifier-like object.
Nr   rk   s   &r   rl   ÚBaseSpecifier.__hash__t  rþ   r   c               ó    € V ^8„  d   QhRRRR/# r[   r   )r   s   "r   r   rõ   {  s   € ÷ ñ ˜Fð  tñ r   c                ó   € R# )z‹
Returns a boolean representing whether or not the two Specifier-like
objects are equal.

:param other: The other object to check against.
Nr   r^   s   &&r   r_   ÚBaseSpecifier.__eq__z  rþ   r   c               ó   € V ^8„  d   QhRR/# ©r   r   úbool | Noner   )r   s   "r   r   rõ   …  s   € ÷ ñ ˜[ñ r   c                ó   € R# )zÖWhether or not pre-releases as a whole are allowed.

This can be set to either ``True`` or ``False`` to explicitly enable or disable
prereleases or it can be set to ``None`` (the default) to use default semantics.
Nr   rk   s   &r   ÚprereleasesÚBaseSpecifier.prereleasesƒ  rþ   r   c               ó    € V ^8„  d   QhRRRR/# )r   rc   r-   r   rI   r   )r   s   "r   r   rõ   �  s   € ÷ ñ  ð ¨$ñ r   c                ó   € R# )zASetter for :attr:`prereleases`.

:param value: The value to set.
Nr   ©rN   rc   s   &&r   r	  r
  Œ  rþ   r   Nc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úitemr(   r	  r  r   r-   r   )r   s   "r   r   rõ   ”  s!   € ÷ ñ ˜Sð ¨{ð Àdñ r   c                ó   € R# )zB
Determines if the given item is contained within this specifier.
Nr   ©rN   r  r	  s   &&&r   ÚcontainsÚBaseSpecifier.contains“  rþ   r   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r   ÚiterablezIterable[UnparsedVersionVar]r	  r  ÚkeyrI   r   zIterator[UnparsedVersionVar]r   )r   s   "r   r   rõ   š  ó2   € ÷ +ñ +à.ð+ð !ð+ð ð	+ð
 
&ñ+r   c                	ó   € R # r   r   ©rN   r  r	  r  s   &&&&r   ÚfilterÚBaseSpecifier.filter™  ó   € ñ (+r   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r   r  zIterable[T]r	  r  r  zCallable[[T], UnparsedVersion]r   zIterator[T]r   )r   s   "r   r   rõ   ¢  ó2   € ÷ ñ àðð !ðð ,ð	ð
 
ñr   c                	ó   € R # r   r   r  s   &&&&r   r  r  ¡  ó   € ñ r   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r   r  úIterable[Any]r	  r  r  ú'Callable[[Any], UnparsedVersion] | Noner   úIterator[Any]r   )r   s   "r   r   rõ   ª  s2   € ÷ 	ñ 	àð	ð !ð	ð 5ð		ð
 
ñ	r   c                ó   € R# )z}
Takes an iterable of items and filters them so that only items which
are contained within this specifier are allowed in it.
Nr   r  s   &&&&r   r  r  ©  rþ   r   r   )rø   r   ©N.©NN)r:   r;   r<   r=   rw   Ú__match_args__Úpropertyrø   ÚabcÚabstractmethodrü   rl   r_   r	  Úsetterr  ÚtypingÚoverloadr  rC   r   r   r   r   r   d  s  † Ø€IØ€Nàôó ðð 	×Ñôó ðð 	×Ñôó ðð
 	×Ñôó ðð Ø×Ñôó ó ðð ×Ñôó ðð 	×Ñöó ðð
 ‡_�_ö+ó ð+ð ‡_�_öó ðð 	×Ñö	ó ô	r   )Ú	metaclassc                  óà  € ] tR tRt$ RtRXtRt]P                  ! R],           R,           ]P                  ]P                  ,          4      tRRRRR	R
RRRRRRRRRR/tR]R&   RYR R l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4       t]P,                  R& R' l4       tR( R) ltR* R+ lt]R, R- l4       t]R. R/ l4       tR0 R1 ltR2 R3 lt]R4 R5 l4       tR6 R7 ltR8 R9 ltR: R; lt R< R= lt!R> R? lt"R@ RA lt#RB RC lt$RD RE lt%RF RG lt&RH RI lt'RJ RK lt(RL RM lt)RN RO lt*RZRP RQ llt+],PZ                  R[RR RS ll4       t.],PZ                  R[RT RU ll4       t.R\RV RW llt.RXt/R# )]r   i¶  a½  This class abstracts handling of version specifiers.

.. tip::

    It is generally not required to instantiate this manually. You should instead
    prefer to work with :class:`SpecifierSet` instead, which can parse
    comma-separated version specifiers (which is what package metadata contains).

Instances are safe to serialize with :mod:`pickle`. They use a stable
format so the same pickle can be loaded in future packaging releases.

.. versionchanged:: 26.2

    Added a stable pickle format. Pickles created with packaging 26.2+ can
    be unpickled with future releases.  Backward compatibility with pickles
    from packaging < 26.2 is supported but may be removed in a future
    release.
a  
        (?:
            (?:
                # The identity operators allow for an escape hatch that will
                # do an exact string match of the version you wish to install.
                # This will not be parsed by PEP 440 and we cannot determine
                # any semantic meaning from it. This operator is discouraged
                # but included entirely as an escape hatch.
                ===  # Only match for the identity operator
                \s*
                [^\s;)]*  # The arbitrary version can be just about anything,
                          # we match everything except for whitespace, a
                          # semi-colon for marker support, and a closing paren
                          # since versions can be enclosed in them.
            )
            |
            (?:
                # The (non)equality operators allow for wild card and local
                # versions to be specified so we have to define these two
                # operators separately to enable that.
                (?:==|!=)            # Only match for equals and not equals

                \s*
                v?
                (?:[0-9]+!)?          # epoch
                [0-9]+(?:\.[0-9]+)*   # release

                # You cannot use a wild card and a pre-release, post-release, a dev or
                # local version together so group them with a | and make them optional.
                (?:
                    \.\*  # Wild card syntax of .*
                    |
                    (?a:                                  # pre release
                        [-_\.]?
                        (alpha|beta|preview|pre|a|b|c|rc)
                        [-_\.]?
                        [0-9]*
                    )?
                    (?a:                                  # post release
                        (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
                    )?
                    (?a:[-_\.]?dev[-_\.]?[0-9]*)?         # dev release
                    (?a:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local
                )?
            )
            |
            (?:
                # The compatible operator requires at least two digits in the
                # release segment.
                (?:~=)               # Only match for the compatible operator

                \s*
                v?
                (?:[0-9]+!)?          # epoch
                [0-9]+(?:\.[0-9]+)+   # release  (We have a + instead of a *)
                (?:                   # pre release
                    [-_\.]?
                    (alpha|beta|preview|pre|a|b|c|rc)
                    [-_\.]?
                    [0-9]*
                )?
                (?:                                   # post release
                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
                )?
                (?:[-_\.]?dev[-_\.]?[0-9]*)?          # dev release
            )
            |
            (?:
                # All other operators only allow a sub set of what the
                # (non)equality operators do. Specifically they do not allow
                # local versions to be specified nor do they allow the prefix
                # matching wild cards.
                (?:<=|>=|<|>)

                \s*
                v?
                (?:[0-9]+!)?          # epoch
                [0-9]+(?:\.[0-9]+)*   # release
                (?a:                   # pre release
                    [-_\.]?
                    (alpha|beta|preview|pre|a|b|c|rc)
                    [-_\.]?
                    [0-9]*
                )?
                (?a:                                   # post release
                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
                )?
                (?a:[-_\.]?dev[-_\.]?[0-9]*)?          # dev release
            )
        )
        z\s*ú~=Ú
compatibleú==Úequalú!=Ú	not_equalú<=Úless_than_equalú>=Úgreater_than_equalr™   Ú	less_thanr›   Úgreater_thanú===Ú	arbitraryr   Ú
_operatorsNc               ó$   € V ^8„  d   QhRRRRRR/# )r   r"   r(   r	  r  r   rI   r   )r   s   "r   r   ÚSpecifier.__annotate__=  s!   € ÷ $<ñ $<˜Sð $<°Kð $<È4ñ $<r   c                óæ  € V P                   P                  V4      '       g   \        RV: 24      hVP                  4       pVP	                  R4      '       d!   VR,          VR,          P                  4       rCMVVP	                  R
4      '       d!   VR,          VR,          P                  4       rCMVR,          VR,          P                  4       rCW43V n        W n        R	V n        R	V n        R	V n	        R	# )a   Initialize a Specifier instance.

:param spec:
    The string representation of a specifier which will be parsed and
    normalized before use.
:param prereleases:
    This tells the specifier if it should accept prerelease versions if
    applicable or not. The default of ``None`` will autodetect it from the
    given specifiers.
:raises InvalidSpecifier:
    If the given specifier is invalid (i.e. bad syntax).
zInvalid specifier: r@  :Né   N:rF  NN:Nr   N:r   NN:Né   NºrG  NNN)r4  r6  r8  r:  r<  )
Ú_regexÚ	fullmatchr   ÚstripÚ
startswithÚ_specÚ_prereleasesÚ_spec_versionÚ_wildcard_splitÚ_ranges)rN   r"   r	  ÚoperatorrG   s   &&&  r   rO   ÚSpecifier.__init__=  sÈ   € ð �{‰{×$Ñ$ T×*Ò*Ü"Ð%8¸¹Ð#AÓBÐBà�z‰z‹|ˆØ�?‰?˜5×!Ò!Ø $ R¥¨$¨r­(¯.©.Ó*:‘gØ�_‰_Ð;×<Ò<Ø $ R¥¨$¨r­(¯.©.Ó*:‘gà $ R¥¨$¨r­(¯.©.Ó*:�gà'/Ð&9ˆŒ
ð (Ôð :>ˆÔð >BˆÔð 8<ˆŽr   c               ó    € V ^8„  d   QhRRRR/# )r   rG   r(   r   rÛ   r   )r   s   "r   r   rD  c  s   € ÷ 
!ñ 
!¨ð 
!°ñ 
!r   c                óª   € V P                   e,   V P                   ^ ,          V8X  d   V P                   ^,          # \        V4      pVf   R# W3V n         V# )zDOne element cache, as only one spec Version is needed per Specifier.N)rO  rÝ   )rN   rG   Úversion_specifiers   && r   Ú_get_spec_versionÚSpecifier._get_spec_versionc  sV   € à×ÑÒ)¨d×.@Ñ.@ÀÕ.CÀwÔ.NØ×%Ñ% aÕ(Ð(ä+¨GÓ4ÐØÒ$Ùà%Ð9ˆÔØ Ð r   c               ó    € V ^8„  d   QhRRRR/# )r   rG   r(   r   r   r   )r   s   "r   r   rD  o  s   € ÷ ñ ¨Sð °Wñ r   c                ó4   € V P                  V4      pVf   Q hV# )z½Get spec version, asserting it's valid (not for === operator).

This method should only be called for operators where version
strings are guaranteed to be valid PEP 440 versions (not ===).
)rW  )rN   rG   Úspec_versions   && r   Ú_require_spec_versionÚSpecifier._require_spec_versiono  s&   € ð ×-Ñ-¨gÓ6ˆØÒ'Ð'Ð'ØÐr   c               ó   € V ^8„  d   QhRR/# ©r   r   r¿   r   )r   s   "r   r   rD  y  s   € ÷ ñ Ð3ñ r   c                ó  € V P                   e   V P                   # V P                  pV P                  pVR8X  d   \        V n         \        # VP	                  R4      '       d   V P                  W4      pMV P                  W4      pW0n         V# )zÀConvert this specifier to sorted, non-overlapping version ranges.

Each standard operator maps to one or two ranges.  ``===`` is
modeled as full range (actual check done separately).  Cached.
r@  ú.*)rQ  rR  rG   r·   ÚendswithÚ_wildcard_rangesÚ_standard_ranges)rN   ÚopÚver_strrÆ   s   &   r   Ú
_to_rangesÚSpecifier._to_rangesy  sy   € ð �<‰<Ò#Ø—<‘<Ðà�]‰]ˆØ—,‘,ˆà�Œ;Ü&ˆDŒLÜÐà×Ñ˜D×!Ò!Ø×*Ñ*¨2Ó7‰Fà×*Ñ*¨2Ó7ˆFàŒØˆr   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   re  r(   rf  r   rÁ   r   )r   s   "r   r   rD  ‘  s"   € ÷ 
ñ 
 3ð 
°ð 
Ð9Lñ 
r   c                	óÞ   € V P                  VR R 4      p\        V4      p\        V4      pVR8X  d   \        VR4      \	        VR4      3.# \
        \	        VR4      3\        VR4      \        3.# )Nr6  TFéþÿÿÿ)r\  rØ   rÔ   ry   r¤   Ú_NEG_INFÚ_POS_INF)rN   re  rf  Úbaser¹   rº   s   &&&   r   rc  ÚSpecifier._wildcard_ranges‘  sy   € à×)Ñ)¨'°#°2¨,Ó7ˆÜ˜4Ó ˆÜ! $Ó'ˆØ�Œ:Ü  ¨Ó-¬{¸5À%Ó/HÐIÐJÐJô ”{ 5¨%Ó0Ð1Ü˜ Ó%¤xÐ0ð
ð 	
r   c               ó$   € V ^8„  d   QhRRRRRR/# rj  r   )r   s   "r   r   rD  ž  s"   € ÷ <6ñ <6 3ð <6°ð <6Ð9Lñ <6r   c                	ól  € V P                  V4      pVR 8X  d   \        VR4      \        3.# VR8X  d,   \        \	        \        V\        P                  4      R4      3.# VR8X  d·   VP                  e8   VP                  VP                  ^,           RR7      p\        VR4      \        3.# VP                  e9   VP                  VP                  ^,           ^ RR7      p\        VR4      \        3.# \        \        V\        P                  4      R4      \        3.# VR8X  dH   VP                  '       d   TMVP                  ^ RR7      pV\        8:  d   . # \        \	        VR4      3.# R	V9   p\        V\        P                  4      pV'       d   TMTpVR
8X  d   \        VR4      \	        VR4      3.# VR8X  d%   \        \	        VR4      3\        VR4      \        3.# VR8X  dB   VP                  VP                  RR R7      p	\        VR4      \	        \        V	4      R4      3.# \!        RV: 24      h)r<  Tr:  r›   Nrê   rå   Fr™   Ú+r6  r8  r4  )r4   úUnknown operator: rÒ   )r\  ry   rn  rm  r¤   rE   r9   rA   rV   rá   rU   rB   rî   r2   r4   rÔ   Ú
ValueError)
rN   re  rf  rW   Ú	lower_verr1   Ú	has_localÚafter_localsrº   Úprefixs
   &&&       r   rd  ÚSpecifier._standard_rangesž  s-  € Ø×&Ñ& wÓ/ˆà�Œ:Ü   DÓ)¬8Ð4Ð5Ð5à�Œ:ô ÜÔ 0°´M×4NÑ4NÓ OÐQUÓVððð ð �Œ9Ø�u‰uÒ ð ŸM™M¨a¯e©e°a­i¸t˜MÓD�	Ü$ Y°Ó5´xÐ@ÐAÐAØ�v‰vÒ!àŸM™M¨q¯v©v¸­z¸qÈ˜MÓM�	Ü$ Y°Ó5´xÐ@ÐAÐAô  Ô 0°´M×4MÑ4MÓ NÐPUÓVÜððð ð �Œ9ð ŸŸ˜‘A¨a¯m©mÀÈ¨mÓ.NˆEØœÔ$Ø�	Üœ{¨5°%Ó8Ð9Ð:Ð:ð ˜7‘Nˆ	Ü'¨¬=×+EÑ+EÓFˆß‘ Lˆà�Œ:Ü   DÓ)¬;°u¸dÓ+CÐDÐEÐEà�Œ:äœ; q¨%Ó0Ð1Ü˜U EÓ*¬HÐ5ðð ð
 �Œ:Ø—]‘]¨1¯9©9°S°b¨>�]Ó:ˆFä˜Q Ó%¤{Ô3DÀVÓ3LÈeÓ'TÐUðð ô Ð-¨b©VÐ4Ó5Ð5r   c               ó   € V ^8„  d   QhRR/# r  r   )r   s   "r   r   rD  Ý  s   € ÷ %ñ %˜[ñ %r   c                	óê   € V P                   e   V P                   # V P                  w  rVR8X  d   R# VR8X  d   VP                  R4      '       d   R# V P                  V4      pVf   R # VP                  # )Nr8  Fr6  ra  )rN  rM  rb  rW  rî   )rN   rR  Úversion_strrG   s   &   r   r	  ÚSpecifier.prereleasesÜ  sz   € ð ×ÑÒ(Ø×$Ñ$Ð$ð !%§
¡
ÑˆØ�tÔÙð �tÔ × 4Ñ 4°T× :Ò :Ùð ×(Ñ(¨Ó5ˆØŠ?Ùð ×$Ñ$Ð$r   c               ó    € V ^8„  d   QhRRRR/# ©r   rc   r  r   rI   r   )r   s   "r   r   rD  ù  s   € ÷ "ñ " ð "°ñ "r   c                	ó   € Wn         R # r   )rN  r  s   &&r   r	  r~  ø  s   € à!Ör   c               ó   € V ^8„  d   QhRR/# )r   r   z#tuple[tuple[str, str], bool | None]r   )r   s   "r   r   rD  ü  s   € ÷ /ñ /ÐAñ /r   c                	ó2   € V P                   V P                  3# r   )rM  rN  rk   s   &r   Ú__getstate__ÚSpecifier.__getstate__ü  s   € ð —
‘
˜D×-Ñ-Ð.Ð.r   c               ó    € V ^8„  d   QhRRRR/# ©r   Ústater#   r   rI   r   )r   s   "r   r   rD    s   € ÷  Dñ  D &ð  D¨Tñ  Dr   c                	óØ  € R V n         R V n        R V n        \        V\        4      '       dÉ   \        V4      ^8X  d5   Vw  r#\        V4      '       d    \        V4      '       d   W n        W0n	        R # \        V4      ^8X  du   \        V^,          \        4      '       dX   Vw  rEVP                  R4      pVP                  RR4      p\        V4      '       d    \        V4      '       d   W n        W0n	        R # \        V\        4      '       dT   VP                  R4      pVP                  RR4      p\        V4      '       d    \        V4      '       d   W n        W0n	        R # \        RV: 24      h)NrM  rN  ÚinvalidzCannot restore Specifier from )rO  rP  rQ  r%   r&   r'   r)   r.   rM  rN  ÚdictÚgetÚ	TypeError)rN   rˆ  r"   r	  Ú_Ú	slot_dicts   &&    r   Ú__setstate__ÚSpecifier.__setstate__  s   € à!ˆÔØ#ˆÔØˆŒä�eœU×#Ò#Ü�5‹z˜QŒà$)Ñ!�Ü! $×'Ò'¬M¸+×,FÒ,FØ!%”JØ(3Ô%ÙÜ�5‹z˜QŒ¤:¨e°A­h¼×#=Ò#=à$‘�Ø —}‘} WÓ-�Ø'Ÿm™m¨N¸IÓF�Ü! $×'Ò'¬M¸+×,FÒ,FØ!%”JØ(3Ô%ÙÜ�eœT×"Ò"à—9‘9˜WÓ%ˆDØŸ)™) N°IÓ>ˆKÜ˜d×#Ò#¬°k×(BÒ(BØ!”
Ø$/Ô!ÙäÐ8¸¹	ÐBÓCÐCr   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   rD  %  s   € ÷ ñ ˜#ñ r   c                ó(   € V P                   ^ ,          # )zHThe operator of this specifier.

>>> Specifier("==1.2.3").operator
'=='
©rM  rk   s   &r   rR  ÚSpecifier.operator$  ó   € ð �z‰z˜!�}Ðr   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   rD  .  s   € ÷ ñ ˜ñ r   c                ó(   € V P                   ^,          # )zIThe version of this specifier.

>>> Specifier("==1.2.3").version
'1.2.3'
r”  rk   s   &r   rG   ÚSpecifier.version-  r–  r   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   rD  6  s   € ÷ Bñ B˜#ñ Br   c                ó”   € V P                   e   RV P                  : 2MRpRV P                  P                   R\	        V 4      : V R2# )a  A representation of the Specifier that shows all internal state.

>>> Specifier('>=1.0.0')
<Specifier('>=1.0.0')>
>>> Specifier('>=1.0.0', prereleases=False)
<Specifier('>=1.0.0', prereleases=False)>
>>> Specifier('>=1.0.0', prereleases=True)
<Specifier('>=1.0.0', prereleases=True)>
ú, prereleases=Ú r™   rq   ú)>©rN  r	  rs   r:   r(   ©rN   r+   s   & r   ru   ÚSpecifier.__repr__6  sU   € ð × Ñ Ò,ð ˜T×-Ñ-Ñ0Ñ1àð 	ð �4—>‘>×*Ñ*Ð+¨1¬S°«Y©M¸#¸¸bÐAÐAr   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   rD  H  s   € ÷ *ñ *˜ñ *r   c                ó6   € RP                   ! V P                  !  # )z¨A string representation of the Specifier that can be round-tripped.

>>> str(Specifier('>=1.0.0'))
'>=1.0.0'
>>> str(Specifier('>=1.0.0', prereleases=False))
'>=1.0.0'
z{}{})r   rM  rk   s   &r   rü   ÚSpecifier.__str__H  s   € ð �}Š}˜dŸj™jÑ)Ð)r   c               ó   € V ^8„  d   QhRR/# )r   r   ztuple[str, str]r   )r   s   "r   r   rD  S  s   € ÷ +ñ + ñ +r   c                	ó¦   € V P                   w  rVR 8X  g   VP                  R4      '       d   W3# V P                  V4      p\        W1R8g  R7      pW3# )r@  ra  r4  ©Ústrip_trailing_zero)rM  rb  r\  r   )rN   rR  rG   r[  Úcanonical_versions   &    r   Ú_canonical_specÚSpecifier._canonical_specR  s]   € à ŸJ™JÑˆØ�uÔ × 0Ñ 0°× 6Ò 6ØÐ$Ð$à×1Ñ1°'Ó:ˆä0Ø¸4Ñ/?ô
Ðð Ð*Ð*r   c               ó   € V ^8„  d   QhRR/# rg   r   )r   s   "r   r   rD  `  s   € ÷ *ñ *˜#ñ *r   c                	ó,   € \        V P                  4      # r   )rj   rª  rk   s   &r   rl   ÚSpecifier.__hash__`  s   € Ü�D×(Ñ(Ó)Ð)r   c               ó    € V ^8„  d   QhRRRR/# r[   r   )r   s   "r   r   rD  c  s   € ÷ =ñ =˜Fð = tñ =r   c                ó  € \        V\        4      '       d    V P                  \        V4      4      pM!\        WP                  4      '       g   \        # V P
                  VP
                  8H  #   \         d
    \        u # i ; i)aÎ  Whether or not the two Specifier-like objects are equal.

:param other: The other object to check against.

The value of :attr:`prereleases` is ignored.

>>> Specifier("==1.2.3") == Specifier("== 1.2.3.0")
True
>>> (Specifier("==1.2.3", prereleases=False) ==
...  Specifier("==1.2.3", prereleases=True))
True
>>> Specifier("==1.2.3") == "==1.2.3"
True
>>> Specifier("==1.2.3") == Specifier("==1.2.4")
False
>>> Specifier("==1.2.3") == Specifier("~=1.2.3")
False
)r%   r(   rs   r   r]   rª  r^   s   &&r   r_   ÚSpecifier.__eq__c  sm   € ô& �eœS×!Ò!ð&ØŸ™¤s¨5£zÓ2‘ô ˜E§>¡>×2Ò2Ü!Ð!à×#Ñ# u×'<Ñ'<Ñ<Ð<øô $ô &Ü%Ò%ð&ús   ˜A- Á-BÂ Bc               ó    € V ^8„  d   QhRRRR/# )r   re  r(   r   ÚCallableOperatorr   )r   s   "r   r   rD  €  s   € ÷ !ñ ! ð !Ð(8ñ !r   c                	óF   € \        V R V P                  V,           24      pV# )Ú	_compare_)ÚgetattrrB  )rN   re  Úoperator_callables   && r   Ú_get_operatorÚSpecifier._get_operator€  s+   € Ü.5Ø�I˜dŸo™o¨bÕ1Ð2Ð3ó/
Ðð !Ð r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   Úprospectiver   r"   r(   r   r-   r   )r   s   "r   r   rD  †  s!   € ÷ 
ñ 
¨wð 
¸cð 
Àdñ 
r   c           
     	óÚ   € \        \        \        P                  ! \        \        V4      4      4      R R 4      pVR,          pV P                  W4      ;'       d    V P                  W4      # )Nra  rÒ   )Ú_version_joinÚlistÚ	itertoolsÚ	takewhileÚ_is_not_suffixÚ_version_splitÚ_compare_greater_than_equalÚ_compare_equal)rN   r¼  r"   ry  s   &&& r   Ú_compare_compatibleÚSpecifier._compare_compatible†  se   € ô Ü”×$Ò$¤^´^ÀDÓ5IÓJÓKÈCÈRÐPó
ˆð
 	�$�ˆà×0Ñ0°ÓC÷ 
ð 
Ø×Ñ Ó4ð	
r   c               ó    € V ^8„  d   QhRRRR/# )r   r"   r(   r   ztuple[list[str], int]r   )r   s   "r   r   rD  š  s   € ÷ ñ ¨ð Ð0Eñ r   c                ó‚   € V P                   pVf/   \        VRR RR7      p\        V4      pV\        V4      3pW n         V# )zÕCached split of a wildcard spec into components and numeric length.

>>> Specifier("==1.*")._get_wildcard_split("1.*")
(['0', '1'], 2)
>>> Specifier("==3.10.*")._get_wildcard_split("3.10.*")
(['0', '3', '10'], 3)
NFr§  rl  )rP  r   rÃ  Ú_numeric_prefix_len)rN   r"   Úwildcard_splitÚ
normalizedÚ
split_specs   &&   r   Ú_get_wildcard_splitÚSpecifier._get_wildcard_splitš  sM   € ð ×-Ñ-ˆØÒ!Ü-¨d°3°B¨iÈUÔSˆJÜ'¨
Ó3ˆJØ(Ô*=¸jÓ*IÐJˆNØ#1Ô ØÐr   c               ó$   € V ^8„  d   QhRRRRRR/# r»  r   )r   s   "r   r   rD  ª  s!   € ÷ "/ñ "/¨'ð "/¸ð "/Àñ "/r   c                	ó6  € VP                  R 4      '       dR   V P                  V4      w  r4\        \        V4      RR7      p\	        V4      p\        Wd4      pVR\        V4       pWƒ8H  # V P                  V4      p	V	P                  '       g   \        V4      pW8H  # )ra  Fr§  N)	rb  rÎ  r   râ   rÃ  Ú	_left_padr'   r\  rà   )
rN   r¼  r"   rÍ  Úspec_numeric_lenÚnormalized_prospectiveÚsplit_prospectiveÚpadded_prospectiveÚshortened_prospectiver[  s
   &&&       r   rÅ  ÚSpecifier._compare_equalª  s§   € à�=‰=˜×ÒØ+/×+CÑ+CÀDÓ+IÑ(ˆJô &:Ü Ó,À%ô&Ð"ô !/Ð/EÓ FÐô "+Ð+<Ó!OÐð
 %7Ð7H¼¸Z»Ð$IÐ!à(Ñ6Ð6ð  ×5Ñ5°dÓ;ˆLð
  ×%×%Ð%Ü-¨kÓ:�àÑ.Ð.r   c               ó$   € V ^8„  d   QhRRRRRR/# r»  r   )r   s   "r   r   rD  Î  s!   € ÷ :ñ :¨gð :¸Sð :ÀTñ :r   c                	ó.   € V P                  W4      '       * # r   )rÅ  ©rN   r¼  r"   s   &&&r   Ú_compare_not_equalÚSpecifier._compare_not_equalÎ  s   € Ø×&Ñ& {Ó9Ô9Ð9r   c               ó$   € V ^8„  d   QhRRRRRR/# r»  r   )r   s   "r   r   rD  Ñ  s&   € ÷ Pñ P°Gð PÀ3ð PÈ4ñ Pr   c                	ó<   € \        V4      V P                  V4      8*  # r   ©râ   r\  rÛ  s   &&&r   Ú_compare_less_than_equalÚ"Specifier._compare_less_than_equalÑ  ó   € ô ˜{Ó+¨t×/IÑ/IÈ$Ó/OÑOÐOr   c               ó$   € V ^8„  d   QhRRRRRR/# r»  r   )r   s   "r   r   rD  ×  s&   € ÷ Pñ P°wð PÀcð PÈdñ Pr   c                	ó<   € \        V4      V P                  V4      8¬  # r   rà  rÛ  s   &&&r   rÄ  Ú%Specifier._compare_greater_than_equal×  rã  r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   r¼  r   Úspec_strr(   r   r-   r   )r   s   "r   r   rD  Ý  s!   € ÷ ñ ¨gð Àð Èñ r   c                	ó¤   € V P                  V4      pW8  g   R # VP                  '       g%   VP                  '       d   V\        V4      8¼  d   R # R# ©FT)r\  rî   rë   ©rN   r¼  ré  r"   s   &&& r   Ú_compare_less_thanÚSpecifier._compare_less_thanÝ  sO   € ð ×)Ñ)¨(Ó3ˆð
 Ô!Ùð
 ×"×"Ð"Ø×)×)Ð)ØÔ3°DÓ9Ô9áñ
 r   c               ó$   € V ^8„  d   QhRRRRRR/# rè  r   )r   s   "r   r   rD  ö  s!   € ÷ ñ °ð ÀCð ÈDñ r   c                	óä   € V P                  V4      pW8”  g   R # VP                  '       g%   VP                  '       d   \        V4      V8X  d   R # VP                  e   \	        V4      V8X  d   R # R# rë  )r\  Úis_postreleaserç   rà   râ   rì  s   &&& r   Ú_compare_greater_thanÚSpecifier._compare_greater_thanö  sk   € ð ×)Ñ)¨(Ó3ˆð
 Ô!Ùð
 ×#×#Ð#Ø×*×*Ð*Ü˜;Ó'¨4Ô/áð ×ÑÒ(¬_¸[Ó-IÈTÔ-QÙñ
 r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r¼  zVersion | strr"   r(   r   r-   r   )r   s   "r   r   rD    s!   € ÷ =ñ =¨mð =À3ð =È4ñ =r   c                	óh   € \        V4      P                  4       \        V4      P                  4       8H  # r   ©r(   r¹   rÛ  s   &&&r   Ú_compare_arbitraryÚSpecifier._compare_arbitrary  s&   € Ü�;Ó×%Ñ%Ó'¬3¨t«9¯?©?Ó+<Ñ<Ð<r   c               ó    € V ^8„  d   QhRRRR/# )r   r  zstr | Versionr   r-   r   )r   s   "r   r   rD    s   € ÷ #ñ # ð #°4ñ #r   c                ó$   € V P                  V4      # )aÊ  Return whether or not the item is contained in this specifier.

:param item: The item to check for.

This is used for the ``in`` operator and behaves the same as
:meth:`contains` with no ``prereleases`` argument passed.

>>> "1.2.3" in Specifier(">=1.2.3")
True
>>> Version("1.2.3") in Specifier(">=1.2.3")
True
>>> "1.0.0" in Specifier(">=1.2.3")
False
>>> "1.3.0a1" in Specifier(">=1.2.3")
True
>>> "1.3.0a1" in Specifier(">=1.2.3", prereleases=True)
True
©r  ©rN   r  s   &&r   Ú__contains__ÚSpecifier.__contains__  ó   € ð& �}‰}˜TÓ"Ð"r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r  rÚ   r	  r  r   r-   r   )r   s   "r   r   rD  .  s'   € ÷ Hñ H˜_ð H¸;ð HÐRVñ Hr   c           	     óN   € \        \        V P                  V.VR7      4      4      # )aÓ  Return whether or not the item is contained in this specifier.

:param item:
    The item to check for, which can be a version string or a
    :class:`Version` instance.
:param prereleases:
    Whether or not to match prereleases with this Specifier. If set to
    ``None`` (the default), it will follow the recommendation from
    :pep:`440` and match prereleases, as there are no other versions.

>>> Specifier(">=1.2.3").contains("1.2.3")
True
>>> Specifier(">=1.2.3").contains(Version("1.2.3"))
True
>>> Specifier(">=1.2.3").contains("1.0.0")
False
>>> Specifier(">=1.2.3").contains("1.3.0a1")
True
>>> Specifier(">=1.2.3", prereleases=False).contains("1.3.0a1")
False
>>> Specifier(">=1.2.3").contains("1.3.0a1")
True
©r	  )r-   r¿  r  r  s   &&&r   r  ÚSpecifier.contains.  s#   € ô2 ”D˜Ÿ™ d V¸˜ÓEÓFÓGÐGr   c               ó(   € V ^8„  d   QhRRRRRRRR/# r  r   )r   s   "r   r   rD  J  r  r   c                	ó   € R # r   r   r  s   &&&&r   r  ÚSpecifier.filterI  r  r   c               ó(   € V ^8„  d   QhRRRRRRRR/# r  r   )r   s   "r   r   rD  R  r   r   c                	ó   € R # r   r   r  s   &&&&r   r  r  Q  r"  r   c               ó(   € V ^8„  d   QhRRRRRRRR/# r$  r   )r   s   "r   r   rD  Y  s8   € ÷ O,ñ O,àðO,ð !ðO,ð 5ð	O,ð
 
ñO,r   c              #  óÖ  "  € . pRpVe   TMV P                   pV P                  V P                  4      pV Fÿ  p\        Vf   TMV! V4      4      p	Rp
V	f8   V P                  R8X  d&   V P	                  W€P
                  4      '       d   Vx € MLV P                  R8X  d*   T P	                  Vf   TMV! V4      V P
                  4      p
MV! W�P
                  4      p
V
'       g   K­  V	f   K³  V	P                  '       d	   V'       d	   RpVx € KÕ  Ve   KÛ  V P                  RJg   Kí  VP                  V4       EK  	  V'       g%   Vf   V P                  RJd   T Rj  x€L
  R# R# R# R#  L5i)a°  Filter items in the given iterable, that match the specifier.

:param iterable:
    An iterable that can contain version strings and :class:`Version` instances.
    The items in the iterable will be filtered according to the specifier.
:param prereleases:
    Whether or not to allow prereleases in the returned iterator. If set to
    ``None`` (the default), it will follow the recommendation from :pep:`440`
    and match prereleases if there are no other versions.
:param key:
    A callable that takes a single argument (an item from the iterable) and
    returns a version string or :class:`Version` instance to be used for
    filtering.

>>> list(Specifier(">=1.2.3").filter(["1.2", "1.3", "1.5a1"]))
['1.3']
>>> list(Specifier(">=1.2.3").filter(["1.2", "1.2.3", "1.3", Version("1.4")]))
['1.2.3', '1.3', <Version('1.4')>]
>>> list(Specifier(">=1.2.3").filter(["1.2", "1.5a1"]))
['1.5a1']
>>> list(Specifier(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True))
['1.3', '1.5a1']
>>> list(Specifier(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"]))
['1.3', '1.5a1']
>>> list(Specifier(">=1.2.3").filter(
... [{"ver": "1.2"}, {"ver": "1.3"}],
... key=lambda x: x["ver"]))
[{'ver': '1.3'}]
FNr@  T)	r	  r¸  rR  rÝ   r÷  rG   rî   rN  rÅ   )rN   r  r	  r  Úprereleases_versionsÚfound_non_prereleasesÚinclude_prereleasesr·  rG   Úparsed_versionÚmatchs   &&&&       r   r  r  Y  sT  é € ðF  "ÐØ %Ðð 'Ò2‰K¸×8HÑ8Hð 	ð
 !×.Ñ.¨t¯}©}Ó=Ðó  ˆGÜ,¸º©WÉÈWËÓVˆNØˆEØÒ%à—=‘= EÔ)¨d×.EÑ.EØŸ\™\÷/ò /ð "’MøØ—‘ %Ô'Ø×/Ñ/Ø"š{‘G±°G³¸d¿l¹ló‘ñ *¨.¿,¹,ÓG�ç‰u˜Ô3à%×3×3Ð3×7JØ,0Ð)Ø!”Mà Ô(¨T×->Ñ->ÀeÕ-KØ(×/Ñ/°×8ñ/  ÷8 &ØÒ#Ø×!Ñ!¨Ó.à+×+Ò+ñ /ñ $ñ &ñ ,ùs<   ‚CE)Ã#E)Ã)E)Ã;E)Ä	E)ÄE)Ä#E)ÅE)ÅE'ÅE))rN  rQ  rM  rO  rP  ©r�  Nr   r)  r*  )0r:   r;   r<   r=   r>   rw   Ú_specifier_regex_strÚreÚcompileÚVERBOSEÚ
IGNORECASErI  rB  Ú__annotations__rO   rW  r\  rg  rc  rd  r,  r	  r/  r„  r�  rR  rG   ru   rü   rª  rl   r_   r¸  rÆ  rÎ  rÅ  rÜ  rá  rÄ  rí  rò  r÷  rý  r  r0  r1  r  rC   r   r   r   r   r   ¶  s§  ‡ ñð&€IðZÐðx �ZŠZØÐ%Õ%¨Õ.°·
±
¸R¿]¹]Õ0Jó€Fð
 	ˆlØˆgØˆkØÐØÐ"Øˆ[Øˆ^Øˆ{ð	€J�ó 	÷$<õL
!õõõ0
õ<6ð| ô%ó ð%ð6 ×Ñô"ó ð"õ/õ DðD ôó ðð ôó ðõBõ$*ð ô+ó ð+õ*õ=õ:!õ
õ(õ "/õH:õPõPõõ2õ@=õ#÷*Hð6 ‡_�_ö+ó ð+ð ‡_�_öó ð÷O,ó O,r   z([0-9]+)((?:a|b|c|rc)[0-9]+)c               ó$   € V ^8„  d   QhRRRRRR/# )r   r  r%  r  r&  r   r'  r   )r   s   "r   r   r   ®  s$   € ÷ ' ñ ' Øð' Ø"Ið' àñ' r   c              #  ó‚  "  € . p. pRpV  F–  p\        Vf   TMV! V4      4      pVf2   V'       d   Vx € M"VP                  V4       VP                  V4       KO  VP                  '       g   V'       g   T Rj  x€L
  RpVx € K{  V'       d   K…  VP                  V4       K˜  	  V'       g   T Rj  x€L
  R# R#  LA L
5i)z?Filter per PEP 440: exclude prereleases unless no finals exist.FNT)rÝ   rÅ   rî   )r  r  Úall_nonfinalÚarbitrary_stringsÚfound_finalr  Úparseds   &&     r   Ú_pep440_filter_prereleasesr  ®  sº   é € ð !€LØ#%Ðà€KÛˆÜ ¨ª¡¹#¸d»)ÓDˆàŠ>÷ Ø“
à!×(Ñ(¨Ô.Ø×#Ñ# DÔ)Ùà×#×#Ð#çØ,×,Ð,Ø"�ØŠJÙ÷ ‰{Ø×Ñ Ö%ñ1 ÷6 Ø×Òñ ñ -ñ 	 ùs@   ‚.B?±:B?Á,B?Á4B?Á9B;Á:B?ÂB?Â-B?Â2B=Â3	B?Â=B?c               ó    € V ^8„  d   QhRRRR/# )r   rG   r(   r   r   r   )r   s   "r   r   r   Ø  s   € ÷ ñ ˜Cð  Iñ r   c                ó6  € . pV P                  R4      w  r#pTP                  T;'       g    R4       VP                  R4       FR  p\        P	                  V4      pV'       d"   VP                  VP                  4       4       KA  VP                  V4       KT  	  V# )a  Split version into components.

The split components are intended for version comparison. The logic does
not attempt to retain the original version string, so joining the
components back with :func:`_version_join` may not produce the original
version string.
Ú!Ú0Ú.)Ú
rpartitionrÅ   ÚsplitÚ_prefix_regexrJ  ÚextendÚgroups)rG   rÆ   rT   rŽ  Úrestr  r  s   &      r   rÃ  rÃ  Ø  sy   € ð €Fà×'Ñ'¨Ó,�N€EˆdØ
‡M�M�%—,�,˜3Ôà—
‘
˜3–ˆÜ×'Ñ'¨Ó-ˆßØ�M‰M˜%Ÿ,™,›.Ö)à�M‰M˜$Öñ  ð €Mr   c               ó    € V ^8„  d   QhRRRR/# )r   Ú
componentsr   r   r(   r   )r   s   "r   r   r   î  s   € ÷ 'ñ '˜ið '¨Cñ 'r   c                ó4   € V vrV RRP                  V4       2# )záJoin split version components into a version string.

This function assumes the input came from :func:`_version_split`, where the
first component must be the epoch (either empty or numeric), and all other
components numeric.
r   r"  )Újoin)r*  rT   r(  s   &  r   r¾  r¾  î  s%   € ð €L€EØˆW�A�c—h‘h˜t“nÐ%Ð&Ð&r   c               ó    € V ^8„  d   QhRRRR/# )r   Úsegmentr(   r   r-   r   )r   s   "r   r   r   ù  s   € ÷ ñ ˜Cð  Dñ r   c                ó–   a € \         ;QJ d)    V 3R  lR 4       F  '       g   K   R'       * # 	  R'       * # ! V 3R  lR 4       4      '       * # )c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir   )rL  )Ú.0ry  r.  s   & €r   Ú	<genexpr>Ú!_is_not_suffix.<locals>.<genexpr>ú  s#   øé € ð Ù1P vˆ×Ñ˜6×"Ð"Ó1Pùs   ƒ!TF)rV   ÚaÚbÚrcrU   )Úany)r.  s   fr   rÂ  rÂ  ù  sM   ø€ ß‹sô Ù1Pó�sŒsô ð Šsô ð ˆsô Ù1Póó ô ð r   c               ó    € V ^8„  d   QhRRRR/# )r   r$  r   r   rh   r   )r   s   "r   r   r   ÿ  s   € ÷ ñ ˜yð ¨Sñ r   c                ó`   € ^ pV  F%  pVP                  4       '       g    V# V^,          pK'  	  V# )zwCount leading numeric components in a :func:`_version_split` result.

>>> _numeric_prefix_len(["0", "1", "2", "a1"])
3
)Úisdigit)r$  Úcountr.  s   &  r   rÊ  rÊ  ÿ  s:   € ð €EÛˆØ�‰× Ò Øà€Lð 	��
Šñ ð €Lr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r$  r   Útarget_numeric_lenrh   r   r   )r   s   "r   r   r     s&   € ÷ Oñ O�Yð O°Cð O¸Iñ Or   c                ód   € \        V 4      pW,
          pV^ 8:  d   V # . V RV OR.V,          OWR O# )zÍPad a :func:`_version_split` result with ``"0"`` segments to reach
``target_numeric_len`` numeric components.  Suffix segments are preserved.

>>> _left_pad(["0", "1", "a1"], 4)
['0', '1', '0', '0', 'a1']
Nr!  )rÊ  )r$  r=  Únumeric_lenÚ
pad_neededs   &&  r   rÒ  rÒ    sJ   € ô & eÓ,€KØ#Õ1€JØ�Q„ØˆØNˆU�<�KÐ ÐN S E¨JÕ$6ÐN¸%ÀÐ:MÐNÐNr   c               ó    € V ^8„  d   QhRRRR/# )r   Úop_entryz!tuple[CallableOperator, str, str]r   rh   r   )r   s   "r   r   r     s   € ÷ 2ñ 2Ð>ð 2À3ñ 2r   c                óè   € V w  rpVR8X  d   VP                  R4      '       g   ^ # ^# VR9   d   ^# VR8X  d   ^# VR8X  d   VP                  R4      '       g   ^# ^# VR8X  d   ^ # \        RV: 24      h)a,  Sort key for Cost Based Ordering of specifier operators in _filter_versions.

Operators run sequentially on a shrinking candidate set, so operators that
reject the most versions should run first to minimize work for later ones.

Tier 0: Exact equality (==, ===), likely to narrow candidates to one version
Tier 1: Range checks (>=, <=, >, <), cheap and usually reject a large portion
Tier 2: Wildcard equality (==.*) and compatible release (~=), more expensive
Tier 3: Exact !=, cheap but rarely rejects
Tier 4: Wildcard !=.*, expensive and rarely rejects
r6  ra  r4  r8  r@  rt  )r<  r:  r›   r™   )rb  ru  )rB  rŽ  Úverre  s   &   r   Ú_operator_costrE    s€   € ð �J€AˆBØ	ˆT„zØŸ™ T×*Ò*ˆqÐ1°Ð1Ø	Ð#Ô#ÙØ	ˆT„zÙØ	ˆT„zØŸ™ T×*Ò*ˆqÐ1°Ð1Ø	ˆU„{Ùä
Ð)¨"©Ð0Ó
1Ð1r   c                  ó®  € ] tR tRtRtR2tR3R R lltR R lt]R R	 l4       t	]	P                  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 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R4R( R) llt]P6                  R5R* R+ ll4       t]P6                  R5R, R- ll4       tR4R. R/ lltR6R0 R1 lltR2tR# )7r   i6  aU  This class abstracts handling of a set of version specifiers.

It can be passed a single specifier (``>=3.0``), a comma-separated list of
specifiers (``>=3.0,!=3.1``), or no specifier at all.

Instances are safe to serialize with :mod:`pickle`. They use a stable
format so the same pickle can be loaded in future packaging
releases.

.. versionchanged:: 26.2

    Added a stable pickle format. Pickles created with
    packaging 26.2+ can be unpickled with future releases.
    Backward compatibility with pickles from
    packaging < 26.2 is supported but may be removed in a future
    release.
Nc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú
specifierszstr | Iterable[Specifier]r	  r  r   rI   r   )r   s   "r   r   ÚSpecifierSet.__annotate__R  s(   € ÷ +3ñ +3à-ð+3ð !ð+3ð 
ñ	+3r   c                ó4  € \        V\        4      '       do   VP                  R4       Uu. uF*  q3P                  4       '       g   K  VP                  4       NK,  	  pp\	        \        \        V4      4      V n        RV9   V n        M]\	        V4      V n        \        ;QJ d&    R V P                   4       F  '       g   K   RM	  RM! R V P                   4       4      V n        \        V P                  4      ^8*  V n        RV n        W n        RV n        R# u upi )aL  Initialize a SpecifierSet instance.

:param specifiers:
    The string representation of a specifier or a comma-separated list of
    specifiers which will be parsed and normalized before use.
    May also be an iterable of ``Specifier`` instances, which will be used
    as is.
:param prereleases:
    This tells the SpecifierSet if it should accept prerelease versions if
    applicable or not. The default of ``None`` will autodetect it from the
    given specifiers.

:raises InvalidSpecifier:
    If the given ``specifiers`` are not parseable than this exception will be
    raised.
Ú,r@  c              3  ó>   "  € T F  pR \        V4      9   x € K  	  R# 5i©r@  Nr÷   ©r1  Úss   & r   r2  Ú(SpecifierSet.__init__.<locals>.<genexpr>t  s   é € Ð%K¹{¸! e¬s°1«v¦o»{ùó   ‚TFN)r%   r(   r$  rK  r&   Úmapr   Ú_specsÚ_has_arbitraryr7  r'   Ú_canonicalizedÚ_resolved_opsrN  Ú_is_unsatisfiable)rN   rH  r	  rO  Úsplit_specifierss   &&&  r   rO   ÚSpecifierSet.__init__R  sÑ   € ô, �j¤#×&Ò&ð 4>×3CÑ3CÀCÔ3HÓVÑ3H¨aÏGÉGÏI¤	 §¡¦	Ñ3HÐÐVä16´s¼9ÐFVÓ7WÓ1XˆDŒKà"'¨:Ñ"5ˆDÕä 
Ó+ˆDŒK÷ #&£#Ñ%K¸t¿{º{Ó%K§#§#¢#Ñ%K¸t¿{º{Ó%KÓ"KˆDÔä! $§+¡+Ó.°!Ñ3ˆÔØMQˆÔð (Ôà.2ˆÖùò%  Ws   ªDÁDc               ó   € V ^8„  d   QhRR/# )r   r   ztuple[Specifier, ...]r   )r   s   "r   r   rI    s   € ÷ ñ Ð"7ñ r   c           	     óà   € V P                   '       gR   \        \        P                  \	        V P
                  \        R7      4      4      V n        RV n         RV n        RV n        V P
                  # )zBDeduplicate, sort, and cache specs for order-sensitive operations.©r  TN)	rU  r&   r‹  ÚfromkeysÚsortedrS  r(   rV  rW  rk   s   &r   Ú_canonical_specsÚSpecifierSet._canonical_specs  sP   € à×"×"Ð"Ü¤§¡¬f°T·[±[ÄcÔ.JÓ KÓLˆDŒKØ"&ˆDÔØ!%ˆDÔØ%)ˆDÔ"Ø�{‰{Ðr   c               ó   € V ^8„  d   QhRR/# r  r   )r   s   "r   r   rI  ‰  s   € ÷ ñ ˜[ñ r   c                	ó  € V P                   e   V P                   # V P                  '       g   R # \        ;QJ d&    R V P                   4       F  '       g   K   RM	  RM! R V P                   4       4      '       d   R# R # )Nc              3  ó8   "  € T F  qP                   x € K  	  R # 5ir   r  rN  s   & r   r2  Ú+SpecifierSet.prereleases.<locals>.<genexpr>—  s   é € Ð2¡k �}Ž}£kùó   ‚TF)rN  rS  r7  rk   s   &r   r	  ÚSpecifierSet.prereleasesˆ  s[   € ð ×ÑÒ(Ø×$Ñ$Ð$ð
 �{�{ˆ{Ù÷ ‹3Ñ2 d§k¢kÓ2�3�3Š3Ñ2 d§k¢kÓ2×2Ò2Ùár   c               ó    € V ^8„  d   QhRRRR/# r€  r   )r   s   "r   r   rI  �  s   € ÷ &ñ & ð &°ñ &r   c                	ó    € Wn         R V n        R # r   )rN  rW  r  s   &&r   r	  rf  œ  s   € à!ÔØ!%ˆÖr   c               ó   € V ^8„  d   QhRR/# )r   r   z)tuple[tuple[Specifier, ...], bool | None]r   )r   s   "r   r   rI  ¡  s   € ÷ 0ñ 0ÐGñ 0r   c                	ó2   € V P                   V P                  3# r   )rS  rN  rk   s   &r   r„  ÚSpecifierSet.__getstate__¡  s   € ð —‘˜T×.Ñ.Ð/Ð/r   c               ó    € V ^8„  d   QhRRRR/# r‡  r   )r   s   "r   r   rI  §  s   € ÷ 7Gñ 7G &ð 7G¨Tñ 7Gr   c                	óL  € R V n         R V n        \        V\        4      '       Ed/   \	        V4      ^8X  dÀ   Vw  r#\        V\        4      '       d¦   \
        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       dl   \        V4      '       d[   W n        W0n        \	        V4      ^8*  V n	        \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      V n        R # \	        V4      ^8X  EdO   \        V^,          \        4      '       Ed1   Vw  rEVP                  RR4      pVP                  R4      p\        V\        4      '       d   \        \        V\         R7      4      p\        V\        4      '       dÄ   \
        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       dŠ   \        V4      '       dy   W n        W0n        \	        V P                  4      ^8*  V n	        \        ;QJ d&    R	 V P                   4       F  '       g   K   RM	  RM! R	 V P                   4       4      V n        R # \        V\        4      '       Ed-   VP                  RR4      pVP                  R4      p\        V\        4      '       d   \        \        V\         R7      4      p\        V\        4      '       dÄ   \
        ;QJ d    R
 V 4       F  '       d   K   RM	  RM! R
 V 4       4      '       dŠ   \        V4      '       dy   W n        W0n        \	        V P                  4      ^8*  V n	        \        ;QJ d&    R V P                   4       F  '       g   K   RM	  RM! R V P                   4       4      V n        R # \#        RV: 24      h)Nc              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir   ©r%   r   rN  s   & r   r2  Ú,SpecifierSet.__setstate__.<locals>.<genexpr>²  ó   é € ÐD¹e¸œJ q¬)×4Ð4»eùó   ‚FTc              3  ó>   "  € T F  pR \        V4      9   x € K  	  R# 5irM  r÷   rN  s   & r   r2  rp  ¸  s   é € Ð-MÁuÀ!¨e´s¸1³v®oÃuùrQ  rS  rN  r\  c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir   ro  rN  s   & r   r2  rp  Ä  rq  rr  c              3  ó>   "  € T F  pR \        V4      9   x € K  	  R# 5irM  r÷   rN  s   & r   r2  rp  Ê  s   é € Ð-SÁ{À!¨e´s¸1³v®oÃ{ùrQ  c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir   ro  rN  s   & r   r2  rp  Õ  s   é € Ð@¹%°Qœ
 1¤i×0Ð0»%ùrr  c              3  ó>   "  € T F  pR \        V4      9   x € K  	  R# 5irM  r÷   rN  s   & r   r2  rp  Û  s   é € Ð)OÁ;¸a¨%´3°q³6®/Ã;ùrQ  z!Cannot restore SpecifierSet from r   )rV  rW  r%   r&   r'   Úallr.   rS  rN  rU  r7  rT  r‹  rŒ  Ú	frozensetr^  r(   r�  )rN   rˆ  Úspecsr	  rŽ  r�  s   &&    r   r�  ÚSpecifierSet.__setstate__§  sv  € à!ˆÔØ!%ˆÔä�eœU×#Ó#Ü�5‹z˜QŒà%*Ñ"�ä˜u¤e×,Ò,ß›ÑD¹eÓDŸŸšÑD¹eÓD×DÒDÜ% k×2Ò2à"'”KØ(3Ô%Ü*-¨e«*¸©/�DÔ'ß*-«#Ñ-MÁuÓ-M¯#¯#ª#Ñ-MÁuÓ-MÓ*M�DÔ'ÙÜ�5‹z˜Q�¤:¨e°A­h¼×#=Ó#=à$‘�Ø!Ÿ™ h°Ó3�Ø'Ÿm™m¨NÓ;�ä˜e¤Y×/Ò/Ü!¤&¨´CÔ"8Ó9�Eä˜u¤e×,Ò,ß›ÑD¹eÓDŸŸšÑD¹eÓD×DÒDÜ% k×2Ò2à"'”KØ(3Ô%Ü*-¨d¯k©kÓ*:¸aÑ*?�DÔ'ß*-«#Ñ-SÀtÇ{Â{Ó-S¯#¯#ª#Ñ-SÀtÇ{Â{Ó-SÓ*S�DÔ'ÙÜ�eœT×"Ó"à—I‘I˜h¨Ó+ˆEØŸ)™) NÓ3ˆKä˜%¤×+Ò+Üœf U´Ô4Ó5�ä˜5¤%×(Ò(ß“CÑ@¹%Ó@—C—C’CÑ@¹%Ó@×@Ò@Ü! +×.Ò.à#”Ø$/Ô!Ü&)¨$¯+©+Ó&6¸!Ñ&;�Ô#ß&)£cÑ)OÀ4Ç;Â;Ó)O§c§c¢cÑ)OÀ4Ç;Â;Ó)OÓ&O�Ô#ÙäÐ;¸E¹9ÐEÓFÐFr   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   rI  à  s   € ÷ Bñ B˜#ñ Br   c                ó”   € V P                   e   RV P                  : 2MRpRV P                  P                   R\	        V 4      : V R2# )aÆ  A representation of the specifier set that shows all internal state.

Note that the ordering of the individual specifiers within the set may not
match the input string.

>>> SpecifierSet('>=1.0.0,!=2.0.0')
<SpecifierSet('!=2.0.0,>=1.0.0')>
>>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=False)
<SpecifierSet('!=2.0.0,>=1.0.0', prereleases=False)>
>>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=True)
<SpecifierSet('!=2.0.0,>=1.0.0', prereleases=True)>
rœ  r�  r™   rq   rž  rŸ  r   s   & r   ru   ÚSpecifierSet.__repr__à  sU   € ð × Ñ Ò,ð ˜T×-Ñ-Ñ0Ñ1àð 	ð �4—>‘>×*Ñ*Ð+¨1¬S°«Y©M¸#¸¸bÐAÐAr   c               ó   € V ^8„  d   QhRR/# ro   r   )r   s   "r   r   rI  õ  s   € ÷ Añ A˜ñ Ar   c                óN   € RP                  R V P                  4        4       4      # )a6  A string representation of the specifier set that can be round-tripped.

Note that the ordering of the individual specifiers within the set may not
match the input string.

>>> str(SpecifierSet(">=1.0.0,!=1.0.1"))
'!=1.0.1,>=1.0.0'
>>> str(SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False))
'!=1.0.1,>=1.0.0'
rK  c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r÷   rN  s   & r   r2  Ú'SpecifierSet.__str__.<locals>.<genexpr>   s   é € Ð@Ñ(? 1œ˜AŸ˜Ó(?ùre  )r,  r_  rk   s   &r   rü   ÚSpecifierSet.__str__õ  s"   € ð �x‰xÑ@¨×(=Ñ(=Ô(?Ó@Ó@Ð@r   c               ó   € V ^8„  d   QhRR/# rg   r   )r   s   "r   r   rI    s   € ÷ -ñ -˜#ñ -r   c                	ó4   € \        V P                  4       4      # r   )rj   r_  rk   s   &r   rl   ÚSpecifierSet.__hash__  s   € Ü�D×)Ñ)Ó+Ó,Ð,r   c               ó    € V ^8„  d   QhRRRR/# )r   rR   zSpecifierSet | strr   r   r   )r   s   "r   r   rI    s   € ÷ ñ Ð/ð °Lñ r   c                ó8  € \        V\        4      '       d   \        V4      pM\        V\        4      '       g   \        # \        4       pV P                  VP                  ,           Vn        \        VP                  4      ^8*  Vn        V P                  ;'       g    VP                  Vn        RVn        V P                  e   V P                  VP                  8X  d   VP                  Vn	        V# VP                  f   V P                  Vn	        V# \        R4      h)aR  Return a SpecifierSet which is a combination of the two sets.

:param other: The other object to combine with.

>>> SpecifierSet(">=1.0.0,!=1.0.1") & '<=2.0.0,!=2.0.1'
<SpecifierSet('!=1.0.1,!=2.0.1,<=2.0.0,>=1.0.0')>
>>> SpecifierSet(">=1.0.0,!=1.0.1") & SpecifierSet('<=2.0.0,!=2.0.1')
<SpecifierSet('!=1.0.1,!=2.0.1,<=2.0.0,>=1.0.0')>
NzFCannot combine SpecifierSets with True and False prerelease overrides.)r%   r(   r   r]   rS  r'   rU  rT  rV  rN  ru  )rN   rR   Ú	specifiers   && r   Ú__and__ÚSpecifierSet.__and__  só   € ô �eœS×!Ò!Ü  Ó'‰EÜ˜E¤<×0Ò0Ü!Ð!ä “Nˆ	ØŸ;™;¨¯©Õ5ˆ	ÔÜ#& y×'7Ñ'7Ó#8¸AÑ#=ˆ	Ô Ø#'×#6Ñ#6×#NÐ#N¸%×:NÑ:Nˆ	Ô Ø"&ˆ	Ôð ×ÑÒ$¨×(9Ñ(9¸U×=OÑ=OÔ(OØ%*×%7Ñ%7ˆIÔ"ð Ðð ×ÑÒ'Ø%)×%6Ñ%6ˆIÔ"ð Ðô	 ØXóð r   c               ó    € V ^8„  d   QhRRRR/# r[   r   )r   s   "r   r   rI  &  s   € ÷ Cñ C˜Fð C tñ Cr   c                óÞ   € \        V\        \        34      '       d   \        \        V4      4      pM\        V\        4      '       g   \        # V P                  4       VP                  4       8H  # )a1  Whether or not the two SpecifierSet-like objects are equal.

:param other: The other object to check against.

The value of :attr:`prereleases` is ignored.

>>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.1")
True
>>> (SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False) ==
...  SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True))
True
>>> SpecifierSet(">=1.0.0,!=1.0.1") == ">=1.0.0,!=1.0.1"
True
>>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0")
False
>>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.2")
False
)r%   r(   r   r   r]   r_  r^   s   &&r   r_   ÚSpecifierSet.__eq__&  sT   € ô& �eœc¤9Ð-×.Ò.Ü ¤ U£Ó,‰EÜ˜E¤<×0Ò0Ü!Ð!à×$Ñ$Ó&¨%×*@Ñ*@Ó*BÑBÐBr   c               ó   € V ^8„  d   QhRR/# rg   r   )r   s   "r   r   rI  @  s   € ÷  ñ  ˜ñ  r   c                ó,   € \        V P                  4      # )z7Returns the number of specifiers in this specifier set.)r'   rS  rk   s   &r   Ú__len__ÚSpecifierSet.__len__@  s   € ä�4—;‘;ÓÐr   c               ó   € V ^8„  d   QhRR/# )r   r   zIterator[Specifier]r   )r   s   "r   r   rI  D  s   € ÷ !ñ !Ð-ñ !r   c                ó,   € \        V P                  4      # )zÈ
Returns an iterator over all the underlying :class:`Specifier` instances
in this specifier set.

>>> sorted(SpecifierSet(">=1.0.0,!=1.0.1"), key=str)
[<Specifier('!=1.0.1')>, <Specifier('>=1.0.0')>]
)ÚiterrS  rk   s   &r   Ú__iter__ÚSpecifierSet.__iter__D  s   € ô �D—K‘KÓ Ð r   c               ó   € V ^8„  d   QhRR/# r_  r   )r   s   "r   r   rI  N  s   € ÷ ñ Ð4ñ r   c                óÄ   € V P                   pRpV F<  pVf   VP                  4       pK  \        W#P                  4       4      pV'       d   K<   M	  Vf   \        R4      hV# )zåIntersect all specifiers into a single list of version ranges.

Returns an empty list when unsatisfiable.  ``===`` specs are
modeled as full range; string matching is checked separately
by :meth:`_check_arbitrary_unsatisfiable`.
Nz _get_ranges called with no specs)rS  rg  rÍ   ÚRuntimeError)rN   rz  rÆ   rO  s   &   r   Ú_get_rangesÚSpecifierSet._get_rangesN  s\   € ð —‘ˆà15ˆÛˆAØŠ~ØŸ™›’ä*¨6·<±<³>ÓB�ß‘vÙñ ð Š>ÜÐAÓBÐBØˆr   c               ó   € V ^8„  d   QhRR/# ©r   r   r-   r   )r   s   "r   r   rI  d  s   € ÷ ñ  $ñ r   c                ó  € V P                   pVe   V# V P                  '       g
   RV n         R# V P                  4       '       * pV'       g   V P                  4       pV'       g!   V P                  RJ d   V P                  4       pW n         V# )aV  Check whether this specifier set can never be satisfied.

Returns True if no version can satisfy all specifiers simultaneously.

>>> SpecifierSet(">=2.0,<1.0").is_unsatisfiable()
True
>>> SpecifierSet(">=1.0,<2.0").is_unsatisfiable()
False
>>> SpecifierSet("").is_unsatisfiable()
False
>>> SpecifierSet("==1.0,!=1.0").is_unsatisfiable()
True
F)rW  rS  r›  Ú_check_arbitrary_unsatisfiabler	  Ú_check_prerelease_only_ranges)rN   ÚcachedrÆ   s   &  r   Úis_unsatisfiableÚSpecifierSet.is_unsatisfiabled  sy   € ð ×'Ñ'ˆØÒØˆMà�{�{ˆ{Ø%*ˆDÔ"Ùà×%Ñ%Ó'Ô'ˆçØ×8Ñ8Ó:ˆFç˜$×*Ñ*¨eÓ3Ø×7Ñ7Ó9ˆFà!'ÔØˆr   c               ó   € V ^8„  d   QhRR/# rž  r   )r   s   "r   r   rI  …  s   € ÷ ñ ¨tñ r   c                ó   € V P                  4        Fi  w  r\        VP                  4      pVf    R# VP                  e   W2P                  8  d    R# W2P                  8X  g   KT  VP                  '       g   Kh   R# 	  R# )zxWith prereleases=False, check if every range contains only
pre-release versions (which would be excluded from matching).FT)r›  rñ   rG   r}   )rN   r¹   rº   Únearests   &   r   r¡  Ú*SpecifierSet._check_prerelease_only_ranges…  s_   € ð !×,Ñ,Ö.‰LˆEÜ-¨e¯m©mÓ<ˆGØŠÚØ�}‰}Ò$¨·-±-Ô(?ÚØŸ-™-Ö'¨E¯O¯OªOÚñ /ñ r   c               ó   € V ^8„  d   QhRR/# rž  r   )r   s   "r   r   rI  ’  s   € ÷ %@ñ %@°ñ %@r   c                óþ  aa€ V P                    Uu. uF  qP                  R8X  g   K  VNK  	  ppV'       g   R# V^ ,          P                  P                  4       o\        ;QJ d&    V3R lVR,           4       F  '       g   K   RM	  RM! V3R lVR,           4       4      '       d   R# \        V^ ,          P                  4      oV P                  RJ d   Se   SP                  '       d   R# V P                    Uu. uF  qP                  R8w  g   K  VNK  	  ppV'       g   R# Sf   R# \        ;QJ d)    V3R lV 4       F  '       d   K   R'       * # 	  R'       * # ! V3R lV 4       4      '       * # u upi u upi )züCheck === (arbitrary equality) specs for unsatisfiability.

=== uses case-insensitive string comparison, so the only candidate
that can match ``===V`` is the literal string V.  This method
checks whether that candidate is excluded by other specifiers.
r@  Fc              3  ó\   <"  € T F!  qP                   P                  4       S8g  x € K#  	  R # 5ir   )rG   r¹   )r1  rO  Úfirsts   & €r   r2  Ú>SpecifierSet._check_arbitrary_unsatisfiable.<locals>.<genexpr>Ÿ  s   øé € ÐA±=¨a�y‰y�‰Ó  EÖ)³=ùs   ƒ),rH  Tc              3  óD   <"  € T F  qP                  S4      x € K  	  R # 5ir   rû  )r1  rO  Ú	candidates   & €r   r2  r­  ·  s   øé € Ð?±h°—z‘z )×,Ð,³hùs   ƒ )	rS  rR  rG   r¹   r7  rÝ   r	  rî   rx  )rN   rO  rA  Ústandardr¯  r¬  s   &   @@r   r   Ú+SpecifierSet._check_arbitrary_unsatisfiable’  s  ù€ ð !%§¢ÓC¡˜1¯z©z¸UÑ/B—Q�Q¡ˆ	ÐCßÙð ˜!•×$Ñ$×*Ñ*Ó,ˆß‹3ÔA°9¸R¶=ÓA�3�3Š3ÔA°9¸R¶=ÓA×AÒAÙô $ I¨a¥L×$8Ñ$8Ó9ˆ	ð
 ×Ñ Ó%ØÒ%Ø×'×'Ð'áà#Ÿ{š{ÓB™{˜!¯j©j¸EÑ.A—A�A™{ˆÐBßÙàÒáç“3Ô?±hÓ?—3”3Ô?Ð?’3Ô?Ð?�3Ô?±hÓ?Ó?Ô?Ð?ùò= Dùò, Cs   ‘E5¨E5Ã=E:ÄE:c               ó    € V ^8„  d   QhRRRR/# )r   r  rÚ   r   r-   r   )r   s   "r   r   rI  ¹  s   € ÷ #ñ # ð #°Tñ #r   c                ó$   € V P                  V4      # )a  Return whether or not the item is contained in this specifier.

:param item: The item to check for.

This is used for the ``in`` operator and behaves the same as
:meth:`contains` with no ``prereleases`` argument passed.

>>> "1.2.3" in SpecifierSet(">=1.0.0,!=1.0.1")
True
>>> Version("1.2.3") in SpecifierSet(">=1.0.0,!=1.0.1")
True
>>> "1.0.1" in SpecifierSet(">=1.0.0,!=1.0.1")
False
>>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1")
True
>>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True)
True
rû  rü  s   &&r   rý  ÚSpecifierSet.__contains__¹  rÿ  r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r  rÚ   r	  r  Ú	installedr   r-   r   )r   s   "r   r   rI  Î  s8   € ÷ +Nñ +Nàð+Nð !ð+Nð ð	+Nð
 
ñ+Nr   c           	     ó  € \        V4      pVe   V'       d   VP                  '       d   RpVe)   V P                  '       d   \        V\        4      '       g   TpMTp\        \        V P                  V.VR7      4      4      # )aÏ  Return whether or not the item is contained in this SpecifierSet.

:param item:
    The item to check for, which can be a version string or a
    :class:`Version` instance.
:param prereleases:
    Whether or not to match prereleases with this SpecifierSet. If set to
    ``None`` (the default), it will follow the recommendation from :pep:`440`
    and match prereleases, as there are no other versions.
:param installed:
    Whether or not the item is installed. If set to ``True``, it will
    accept prerelease versions even if the specifier does not allow them.

>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.2.3")
True
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains(Version("1.2.3"))
True
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.0.1")
False
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1")
True
>>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False).contains("1.3.0a1")
False
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True)
True
Tr  )rÝ   rî   rT  r%   r   r-   r¿  r  )rN   r  r	  r¶  rG   Ú
check_items   &&&&  r   r  ÚSpecifierSet.containsÎ  sn   € ô@ " $Ó'ˆàÒ§9°×1F×1FÐ1FØˆKð Š?˜t×2×2Ð2¼:ÀdÌG×;TÒ;TØ‰Jà ˆJÜ”D˜Ÿ™ j \¸{˜ÓKÓLÓMÐMr   c               ó(   € V ^8„  d   QhRRRRRRRR/# r  r   )r   s   "r   r   rI  ü  r  r   c                	ó   € R # r   r   r  s   &&&&r   r  ÚSpecifierSet.filterû  r  r   c               ó(   € V ^8„  d   QhRRRRRRRR/# r  r   )r   s   "r   r   rI    r   r   c                	ó   € R # r   r   r  s   &&&&r   r  r¼    r"  r   c               ó(   € V ^8„  d   QhRRRRRRRR/# r$  r   )r   s   "r   r   rI    s8   € ÷ ^9ñ ^9àð^9ð !ð^9ð 5ð	^9ð
 
ñ^9r   c                óª  aa€ Vf   V P                   e   V P                   pV P                  '       ds   \        V P                  4      ^8X  d-   V P                  ^ ,          P                  TVf   RMTSR7      pMT P	                  TSVf   RMTR7      pVe   V# \        VS4      # VRJ d   \        V4      # VRJ d   VV3R lV 4       # \        VS4      # )aC  Filter items in the given iterable, that match the specifiers in this set.

:param iterable:
    An iterable that can contain version strings and :class:`Version` instances.
    The items in the iterable will be filtered according to the specifier.
:param prereleases:
    Whether or not to allow prereleases in the returned iterator. If set to
    ``None`` (the default), it will follow the recommendation from :pep:`440`
    and match prereleases if there are no other versions.
:param key:
    A callable that takes a single argument (an item from the iterable) and
    returns a version string or :class:`Version` instance to be used for
    filtering.

>>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", "1.5a1"]))
['1.3']
>>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", Version("1.4")]))
['1.3', <Version('1.4')>]
>>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.5a1"]))
['1.5a1']
>>> list(SpecifierSet(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True))
['1.3', '1.5a1']
>>> list(SpecifierSet(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"]))
['1.3', '1.5a1']
>>> list(SpecifierSet(">=1.2.3").filter(
... [{"ver": "1.2"}, {"ver": "1.3"}],
... key=lambda x: x["ver"]))
[{'ver': '1.3'}]

An "empty" SpecifierSet will filter items based on the presence of prerelease
versions in the set.

>>> list(SpecifierSet("").filter(["1.3", "1.5a1"]))
['1.3']
>>> list(SpecifierSet("").filter(["1.5a1"]))
['1.5a1']
>>> list(SpecifierSet("", prereleases=True).filter(["1.3", "1.5a1"]))
['1.3', '1.5a1']
>>> list(SpecifierSet("").filter(["1.3", "1.5a1"], prereleases=True))
['1.3', '1.5a1']
T)r	  r  r  Fc              3  óˆ   <"  € T F7  p\        Sf   TMS! V4      4      ;o e   SP                  '       d   K3  Vx € K9  	  R # 5ir   )rÝ   rî   )r1  r  r  rG   s   & €€r   r2  Ú&SpecifierSet.filter.<locals>.<genexpr>^  sB   øé € ð á$�Dä /¸º±ÉÈTËÓ SÐS�WØòà"×0Õ0÷ ’Û$ùs
   ƒ0A¸
A)r	  rS  r'   r  Ú_filter_versionsr  r•  )rN   r  r	  r  ÚfilteredrG   s   &&&f @r   r  r¼    së   ù€ ðd Ò 4×#3Ñ#3Ò#?Ø×*Ñ*ˆKð �;�;ˆ;ô �4—;‘;Ó 1Ô$ØŸ;™; q�>×0Ñ0ØØ(3Ò(;¡ÀØð 1ó ‘ð  ×0Ñ0ØØØ(3Ò(;¡Àð 1ó �ð Ò&Ø�ä-¨h¸Ó<Ð<ð ˜$ÓÜ˜“>Ð!à˜%Óõá$óð ô *¨(°CÓ8Ð8r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r  r%  r  r&  r	  r  r   r'  r   )r   s   "r   r   rI  k  s2   € ÷ ,ñ ,àð,ð 5ð,ð !ð	,ð
 
ñ,r   c              #  óB  aaa"  € V P                   f(   \        R V P                   4       \        R7      V n         V P                   pVRJ pV FÌ  o\	        Sf   SMS! S4      4      oSfI   \
        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       d   Sx € Kd  Kf  V'       d   SP                  '       d   K‚  \
        ;QJ d!    VVV3R lV 4       F  '       d   K   RM	  RM! VVV3R lV 4       4      '       g   KÈ  Sx € KÎ  	  R# 5i)a  Filter versions against all specifiers in a single pass.

Uses Cost Based Ordering: specifiers are sorted by _operator_cost so
that cheap range operators reject versions early, avoiding expensive
wildcard or compatible operators on versions that would have been
rejected anyway.
Nc              3  ó†   "  € T F7  pVP                  VP                  4      VP                  VP                  3x € K9  	  R # 5ir   )r¸  rR  rG   )r1  r"   s   & r   r2  Ú0SpecifierSet._filter_versions.<locals>.<genexpr>{  s5   é € ð á +˜ð ×'Ñ'¨¯©Ó6¸¿¹ÀdÇmÁmÕTÛ +ùs   ‚?Ar\  Fc              3  ó˜   <"  € T F?  w  rpVR 8H  ;'       d+    \        S4      P                  4       VP                  4       8H  x € KA  	  R# 5irM  rö  )r1  rŽ  rD  re  r  s   &   €r   r2  rÈ  ‰  sA   øé € ð á&)™
˜ ð ˜%‘K×DÐD¤C¨£I§O¡OÓ$5¸¿¹»Ñ$DÔDÛ&)ùs
   ƒA
—3A
Tc              3  ó¶   <"  € T FN  w  rpVR 8X  d7   \        Sf   SMS! S4      4      P                  4       VP                  4       8H  MV! SV4      x € KP  	  R# 5irM  rö  )r1  Úop_fnrD  re  r  r  r  s   &   €€€r   r2  rÈ  �  s[   øé € ð ñ '*‘N�E ð ˜”;ô ˜CšK‘D©S°«YÓ7×=Ñ=Ó?À3Ç9Á9Ã;ÒNá˜6 3Ó'ô(ó '*ùs   ƒAA)rV  r^  rS  rE  rÝ   rx  rî   )rN   r  r  r	  ÚopsÚexclude_prereleasesr  r  s   &&f&  @@r   rÃ  ÚSpecifierSet._filter_versionsk  sú   úé € ð ×ÑÒ%Ü!'ñà $§¢óô #ô"ˆDÔð × Ñ ˆØ)¨UÐ2ÐãˆDÜ$¨Sª[¡T¹cÀ$»iÓHˆFàŠ~ç“3ô á&)ó—3—3’3ô á&)ó÷ ò ð ”Jñ	÷
 %¨×)=×)=Ð)=Ùß“ö ñ '*ó	——’ö ñ '*ó	÷ ô ð ”
ó' ùs6   …A0DÁ6DÂDÂ+DÂ;DÃDÃDÃ3DÄ
D)rU  rT  rW  rN  rV  rS  r  r*  r)  r   )r:   r;   r<   r=   r>   rw   rO   r_  r,  r	  r/  r„  r�  ru   rü   rl   rŠ  r_   r‘  r–  r›  r£  r¡  r   rý  r  r0  r1  r  rÃ  rC   r   r   r   r   r   6  sÞ   † ñð$€I÷+3õZð ôó ðð& ×Ñô&ó ð&õ0õ7GõrBõ*Aõ-õõBCõ4 õ!õõ,õBõ%@õN#÷*+NðZ ‡_�_ö+ó ð+ð ‡_�_öó ð÷^9÷@,ó ,r   )rF  é
   )r   r   r   r   )MÚ__conditional_annotations__r>   Ú
__future__r   r-  r?   Ú	functoolsrÀ  r  Úsysr0  r   r   r   r   r   r   r	   r
   r   Úutilsr   rG   r   r   Úversion_infor   Útyping_extensionsr   r    r)   r.   r/   r(   rÚ   r0   r-   r³  r2   r  r7   ÚEnumr9   Útotal_orderingrE   ry   r¤   r|   r&   Ú_VersionRangerm  rn  r·   r¼   rÍ   rÔ   rØ   rÝ   râ   rç   rë   rñ   ru  r   ÚABCMetar   r   r  r%  r  rÃ  r¾  rÂ  rÊ  rÒ  rE  r   )rÐ  s   @r   Ú<module>rÛ     s2  øðôõ #ã 
Û Û Û Û 	Û 
Û ÷
÷ 
õ 
õ (ß ,à×Ñ�wÔÞ ßÝ+ò€õõõ0ñ ˆCƒL€Ø˜ ˜Õ%€ÙÐ1¸ÔIÐ Ø˜W c˜N¨DÐ0Õ1Ð ñ  ' xÓ0€ˆnÓ 0õ=ô�D—I‘Iô ð ×Ñ÷;Qð ;Qó ð;Qð| ×Ñ÷%Hð %Hó ð%HðP ×Ñ÷%Hð %Hó ð%HðP 
××ÐØ˜wÐ(8¸$Ð>Õ?Ðð ˜+ {Ð2Õ3€Má�t˜UÓ#€Ù�t˜UÓ#€Ø&.°Ð%9Ð$;€Ð!Ó ;õ)õõ4KõSõ
õ+õ@õ2õ9ô*	�zô 	ôO˜cŸk™kõ Oôdr,�ô r,ðj —
’
Ð:Ó;€õ' õTõ,'õõõOõ2ô6a	�=ö a	r   