+
    )O|j>Î  ã                  ó€  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIHtHtH	t	H
t
HtH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 ]'       d9   ^ RIt^ RIHtHtHt ]P@                  R)8¼  d   ^ RIH!t! M^ RI"H!t! ^R	I#H$t$ ^R
IH%t% . R*Ot&R R lt'R R lt(R R lt)]! R4      t*]]]+3,          t,]! R],R7      t-R]P\                  R]P^                  R]P`                  R]Pb                  /t2R]3R&   R R lt4 ! R  R]54      t6 ! R! R]Pn                  R"7      t8 ! R# R]84      t9R$ R% lt: ! R& R]84      t;R' R( lt<R# )+zŠ
.. testsetup::

    from packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier
    from packaging.version import Version
)ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚCallableÚFinalÚTypeVarÚUnion)	Ú
FULL_RANGEÚbounds_for_specÚcoerce_versionÚfilter_by_rangesÚintersect_specifier_boundsÚmatches_bounds_onlyÚranges_are_prerelease_onlyÚresolve_prereleasesÚtrim_release)Úcanonicalize_version)ÚVersion)ÚIterableÚIteratorÚSequence)Ú	TypeGuard)Úranges)ÚIntervalÚBaseSpecifierÚInvalidSpecifierÚ	SpecifierÚSpecifierSetc               ó   € V ^8„  d   QhRR/# )é   Úreturnz	list[str]© )Úformats   "ÚMC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\packaging/specifiers.pyÚ__annotate__r$   <   s   € ÷ ñ �ñ ó    c                 ó   € \         # ©N)Ú__all__r!   r%   r#   Ú__dir__r)   <   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$   @   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_specr2   @   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$   I   s   € ÷ 0ñ 0�vð 0Ð%;ñ 0r%   c               ó:   € V R J ;'       g    \        V \        4      # r'   )r.   Úbool)r4   s   "r#   Ú_validate_prer7   I   s   € Ø�$ˆ;×/Ð/œ* S¬$Ó/Ð/r%   ÚTÚUnparsedVersionVar)Úboundú>=ú<=ú==ú!=z-dict[str, Callable[[Version, Version], bool]]Ú_DIRECT_COMPARE_OPSc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú	specifierr   Úparsedr   r    úbool | Noner!   )r"   s   "r#   r$   r$   ]   s!   € ÷ ñ ˜9ð ¨gð ¸+ñ r%   c                ó²  € V P                   w  r#VP                  R4      '       g   VP                  e   R# \        P	                  V4      pVe   V! WP                  V4      4      # VR9   dk   V P                  V4      pVP                  VP                  8w  g.   \        VP                  4      \        VP                  4      8w  d   VR8X  d   W8  # W8„  # R# R# )a  Match ``parsed`` against ``specifier`` without building a range.

Handles ``>=``, ``<=``, ``==``, ``!=``, ``<``, ``>`` when the spec is
not a wildcard and ``parsed`` has no local. Returns ``None`` when the
range path must be used. Pre-release policy is left to the caller.
ú.*NÚ<)rF   Ú>)	Ú_specÚendswithÚlocalr?   ÚgetÚ_require_spec_versionÚepochr   Úrelease)rA   rB   Úop_strÚver_strÚdirect_compareÚspec_vs   &&    r#   Ú_fast_matchrS   ]   s¾   € ð  —o‘o�O€FØ×Ñ˜×Ò §¡Ò!9Ùä(×,Ñ,¨VÓ4€NØÒ!Ù˜f×&EÑ&EÀgÓ&NÓOÐOà�ÔØ×0Ñ0°Ó9ˆð �<‰<˜6Ÿ<™<Ô'¬<¸¿¹Ó+GÌ<Ø�N‰NóL
ô ,
ð '-°¤m�6‘?ÐH¸¹ÐHÙár%   c                  ó   € ] tR t^ztRtRtR# )r   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)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r!   r%   r#   r   r   z   s   † õr%   c                  óÌ  € ] tR t^†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   zG
Abstract base class for :class:`Specifier` and :class:`SpecifierSet`.
c               ó   € V ^8„  d   QhRR/# ©r   r    r1   r!   )r"   s   "r#   r$   ÚBaseSpecifier.__annotate__�   s   € ÷ ñ �cñ r%   c                ó   € \        V 4      # )z Internal property for match_args©r1   ©Úselfs   &r#   Ú_strÚBaseSpecifier._strŽ   s   € ô �4‹yÐr%   c               ó   € V ^8„  d   QhRR/# r]   r!   )r"   s   "r#   r$   r^   ”   s   € ÷ ñ ˜ñ r%   c                ó   € R# )zv
Returns the str representation of this Specifier-like object. This
should be representative of the Specifier itself.
Nr!   ra   s   &r#   Ú__str__ÚBaseSpecifier.__str__“   ó   ‚ r%   c               ó   € V ^8„  d   QhRR/# ©r   r    Úintr!   )r"   s   "r#   r$   r^   ›   s   € ÷ ñ ˜#ñ r%   c                ó   € R# )z6
Returns a hash value for this Specifier-like object.
Nr!   ra   s   &r#   Ú__hash__ÚBaseSpecifier.__hash__š   ri   r%   c               ó    € V ^8„  d   QhRRRR/# ©r   Úotherr,   r    r6   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!   ©rb   rr   s   &&r#   Ú__eq__ÚBaseSpecifier.__eq__    ri   r%   c               ó   € V ^8„  d   QhRR/# ©r   r    rC   r!   )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!   ra   s   &r#   ÚprereleasesÚBaseSpecifier.prereleases©   ri   r%   c               ó    € V ^8„  d   QhRRRR/# )r   Úvaluer6   r    ÚNoner!   )r"   s   "r#   r$   r^   ³   s   € ÷ ñ  ð ¨$ñ r%   c                ó   € R# )zASetter for :attr:`prereleases`.

:param value: The value to set.
Nr!   ©rb   r}   s   &&r#   rz   r{   ²   ri   r%   Nc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úitemr1   rz   rC   r    r6   r!   )r"   s   "r#   r$   r^   º   s!   € ÷ ñ ˜Sð ¨{ð Àdñ r%   c                ó   € R# )zB
Determines if the given item is contained within this specifier.
Nr!   )rb   r‚   rz   s   &&&r#   ÚcontainsÚBaseSpecifier.contains¹   ri   r%   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r   ÚiterablezIterable[UnparsedVersionVar]rz   rC   Úkeyr~   r    zIterator[UnparsedVersionVar]r!   )r"   s   "r#   r$   r^   À   ó2   € ÷ +ñ +à.ð+ð !ð+ð ð	+ð
 
&ñ+r%   c                	ó   € R # r'   r!   ©rb   rˆ   rz   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]rz   rC   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]rz   rC   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Ž   Ï   ri   r%   r!   )rc   r'   ©N.©NN)rU   rV   rW   rX   rY   Ú	__slots__Ú__match_args__Úpropertyrc   ÚabcÚabstractmethodrg   rn   ru   rz   Úsetterr„   ÚtypingÚoverloadr�   rZ   r!   r%   r#   r   r   †   s  † ñð €IØ€Nàôó ðð 	×Ñôó ðð 	×Ñôó ðð
 	×Ñôó ðð Ø×Ñôó ó ðð ×Ñôó ðð 	×Ñöó ðð
 ‡_�_ö+ó ð+ð ‡_�_öó ðð 	×Ñö	ó ô	r%   )Ú	metaclassc                  óP  € ] tR t^Üt$ RtR?t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&   R@R R l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R+ R, ltR- R. lt]R/ R0 l4       tR1 R2 ltR3 R4 ltR5 R6 ltRAR7 R8 llt] PB                  RBR9 R: ll4       t"] PB                  RBR; R< ll4       t"RCR= R> llt"R?t#R# )Dr   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*ú~=Ú
compatibler=   Úequalr>   Ú	not_equalr<   Úless_than_equalr;   Úgreater_than_equalrF   Ú	less_thanrG   Úgreater_thanú===Ú	arbitraryr   Ú
_operatorsNc               ó$   € V ^8„  d   QhRRRRRR/# )r   r+   r1   rz   rC   r    r~   r!   )r"   s   "r#   r$   ÚSpecifier.__annotate__c  s!   € ÷ !7ñ !7˜Sð !7°Kð !7È4ñ !7r%   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	# )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:rµ   NN:Nr   N:r   NN:Né   Nºr¶   NNN)r§   r=   r>   r<   r;   )	Ú_regexÚ	fullmatchr   ÚstripÚ
startswithrH   Ú_prereleasesÚ_spec_versionÚ_ranges)rb   r+   rz   ÚoperatorÚversions   &&&  r#   Ú__init__ÚSpecifier.__init__c  s½   € ð �{‰{×$Ñ$ T×*Ò*Ü"Ð%8¸¹Ð#AÓBÐBà�z‰z‹|ˆØ�?‰?˜5×!Ò!Ø $ R¥¨$¨r­(¯.©.Ó*:‘gØ�_‰_Ð;×<Ò<Ø $ R¥¨$¨r­(¯.©.Ó*:‘gà $ R¥¨$¨r­(¯.©.Ó*:�gà'/Ð&9ˆŒ
ð (Ôð :>ˆÔð 37ˆŽr%   c               ó    € V ^8„  d   QhRRRR/# )r   rÀ   r1   r    zVersion | Noner!   )r"   s   "r#   r$   r³   †  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)r½   r   )rb   rÀ   Úversion_specifiers   && r#   Ú_get_spec_versionÚSpecifier._get_spec_version†  sV   € à×ÑÒ)¨d×.@Ñ.@ÀÕ.CÀwÔ.NØ×%Ñ% aÕ(Ð(ä*¨7Ó3ÐØÒ$Ùà%Ð9ˆÔØ Ð r%   c               ó    € V ^8„  d   QhRRRR/# )r   rÀ   r1   r    r   r!   )r"   s   "r#   r$   r³   ’  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 ===).
)rÆ   )rb   rÀ   Úspec_versions   && r#   rL   ÚSpecifier._require_spec_version’  s&   € ð ×-Ñ-¨gÓ6ˆØÒ'Ð'Ð'ØÐr%   c               ó   € V ^8„  d   QhRR/# ©r   r    zSequence[Interval]r!   )r"   s   "r#   r$   r³   œ  s   € ÷ ñ Ð.ñ r%   c                óê   € V P                   e   V P                   # V P                  pV P                  pVR8X  d   \        pM,V P	                  VP                  R4      4      p\        WV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¯   rE   )r¾   r¿   rÀ   r	   rL   Úremovesuffixr
   )rb   ÚoprP   ÚresultrÀ   s   &    r#   Ú
_to_rangesÚSpecifier._to_rangesœ  sg   € ð �<‰<Ò#Ø—<‘<Ðà�]‰]ˆØ—,‘,ˆà�Œ;Ü)3‰Fà×0Ñ0°×1EÑ1EÀdÓ1KÓLˆGÜ$ R°'Ó:ˆFàŒØˆr%   c               ó   € V ^8„  d   QhRR/# rx   r!   )r"   s   "r#   r$   r³   ²  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                  # )Nr>   Fr=   rE   )r¼   rH   rI   rÆ   Úis_prerelease)rb   r¿   Úversion_strrÀ   s   &   r#   rz   ÚSpecifier.prereleases±  sz   € ð ×ÑÒ(Ø×$Ñ$Ð$ð !%§
¡
ÑˆØ�tÔÙð �tÔ × 4Ñ 4°T× :Ò :Ùð ×(Ñ(¨Ó5ˆØŠ?Ùð ×$Ñ$Ð$r%   c               ó    € V ^8„  d   QhRRRR/# ©r   r}   rC   r    r~   r!   )r"   s   "r#   r$   r³   Î  s   € ÷ "ñ " ð "°ñ "r%   c                	ó   € Wn         R # r'   )r¼   r€   s   &&r#   rz   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$   r³   Ñ  s   € ÷ /ñ /ÐAñ /r%   c                	ó2   € V P                   V P                  3# r'   )rH   r¼   ra   s   &r#   Ú__getstate__ÚSpecifier.__getstate__Ñ  s   € ð —
‘
˜D×-Ñ-Ð.Ð.r%   c               ó    € V ^8„  d   QhRRRR/# ©r   Ústater,   r    r~   r!   )r"   s   "r#   r$   r³   ×  s   € ÷ Dñ D &ð D¨Tñ Dr%   c                	óÊ  € 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)NrH   r¼   ÚinvalidzCannot restore Specifier from )r½   r¾   r.   r/   r0   r2   r7   rH   r¼   ÚdictrK   Ú	TypeError)rb   râ   r+   rz   Ú_Ú	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/# r]   r!   )r"   s   "r#   r$   r³   ù  s   € ÷ ñ ˜#ñ r%   c                ó(   € V P                   ^ ,          # )zHThe operator of this specifier.

>>> Specifier("==1.2.3").operator
'=='
©rH   ra   s   &r#   r¿   ÚSpecifier.operatorø  ó   € ð �z‰z˜!�}Ðr%   c               ó   € V ^8„  d   QhRR/# r]   r!   )r"   s   "r#   r$   r³     s   € ÷ ñ ˜ñ r%   c                ó(   € V P                   ^,          # )zIThe version of this specifier.

>>> Specifier("==1.2.3").version
'1.2.3'
rí   ra   s   &r#   rÀ   ÚSpecifier.version  rï   r%   c               ó   € V ^8„  d   QhRR/# r]   r!   )r"   s   "r#   r$   r³   
  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=Ú rF   Ú(ú)>©r¼   rz   Ú	__class__rU   r1   ©rb   r4   s   & r#   Ú__repr__ÚSpecifier.__repr__
  sU   € ð × Ñ Ò,ð ˜T×-Ñ-Ñ0Ñ1àð 	ð �4—>‘>×*Ñ*Ð+¨1¬S°«Y©M¸#¸¸bÐAÐAr%   c               ó   € V ^8„  d   QhRR/# r]   r!   )r"   s   "r#   r$   r³     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"   rH   ra   s   &r#   rg   ÚSpecifier.__str__  s   € ð �}Š}˜dŸj™jÑ)Ð)r%   c               ó   € V ^8„  d   QhRR/# )r   r    ztuple[str, str]r!   )r"   s   "r#   r$   r³   '  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¯   rE   r§   )Ústrip_trailing_zero)rH   rI   rL   r   )rb   r¿   rÀ   rÊ   Úcanonical_versions   &    r#   Ú_canonical_specÚSpecifier._canonical_spec&  s]   € à ŸJ™JÑˆØ�uÔ × 0Ñ 0°× 6Ò 6ØÐ$Ð$à×1Ñ1°'Ó:ˆä0Ø¸4Ñ/?ô
Ðð Ð*Ð*r%   c               ó   € V ^8„  d   QhRR/# rk   r!   )r"   s   "r#   r$   r³   4  s   € ÷ *ñ *˜#ñ *r%   c                	ó,   € \        V P                  4      # r'   )Úhashr  ra   s   &r#   rn   ÚSpecifier.__hash__4  s   € Ü�D×(Ñ(Ó)Ð)r%   c               ó    € V ^8„  d   QhRRRR/# rq   r!   )r"   s   "r#   r$   r³   7  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.   r1   rú   r   ÚNotImplementedr  rt   s   &&r#   ru   ÚSpecifier.__eq__7  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   r‚   zstr | Versionr    r6   r!   )r"   s   "r#   r$   r³   T  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„   ©rb   r‚   s   &&r#   Ú__contains__ÚSpecifier.__contains__T  ó   € ð& �}‰}˜TÓ"Ð"r%   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r‚   ÚUnparsedVersionrz   rC   r    r6   r!   )r"   s   "r#   r$   r³   i  s"   € ÷ 6>ñ 6>˜_ð 6>¸;ð 6>ÐRVñ 6>r%   c           	     ór  € V P                   ^ ,          R8X  d'   \        \        V P                  V.VR7      4      4      # \	        V4      pVf   R# Vf!   \        V P                  V P                  4      pVRJ d   VP                  '       d   R# \        W4      pVe   V# \        V P                  4       V4      # )aW  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:`~packaging.version.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

.. versionchanged:: 26.0

    With ``prereleases=None``, a prerelease now matches. A single
    version has no alternatives, so the :pep:`440` rule to accept
    prereleases when nothing else satisfies the specifier applies.
    Earlier versions rejected it. An unparsable version now returns
    ``False`` instead of raising :exc:`~packaging.version.InvalidVersion`.
r¯   ©rz   F)rH   r6   Úlistr�   r   r   r¼   rz   rÖ   rS   r   rÒ   )rb   r‚   rz   rB   Úmatchs   &&&  r#   r„   ÚSpecifier.containsi  s¥   € ðD �:‰:�a�=˜EÔ!Üœ˜TŸ[™[¨$¨¸[˜[ÓIÓJÓKÐKä Ó%ˆØŠ>áàÒÜ-¨d×.?Ñ.?À×AQÑAQÓRˆKà˜%Ó F×$8×$8Ð$8Ùô ˜DÓ)ˆØÒØˆLä" 4§?¡?Ó#4°fÓ=Ð=r%   c               ó(   € V ^8„  d   QhRRRRRRRR/# r‡   r!   )r"   s   "r#   r$   r³   ¢  rŠ   r%   c                	ó   € R # r'   r!   rŒ   s   &&&&r#   r�   ÚSpecifier.filter¡  r�   r%   c               ó(   € V ^8„  d   QhRRRRRRRR/# r‘   r!   )r"   s   "r#   r$   r³   ª  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$   r³   ±  s8   € ÷ 4Oñ 4Oàð4Oð !ð4Oð 5ð	4Oð
 
ñ4Or%   c                ó  aa€ Vf!   \        V P                  V P                  4      pV P                  R8X  d5   V P                  P                  4       oVV3R lV 4       p\        VSV4      # \        V P                  4       VSV4      # )a  Filter items in the given iterable, that match the specifier.

:param iterable:
    An iterable that can contain version strings and
    :class:`~packaging.version.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:`~packaging.version.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'}]

.. versionchanged:: 26.1

    Added the ``key`` parameter.
r¯   c              3  ó€   <"  € T F3  p\        Sf   TMS! V4      4      P                  4       S8X  g   K/  Vx € K5  	  R # 5ir'   )r1   Úlower)Ú.0r‚   r‰   Ú
spec_lowers   & €€r#   Ú	<genexpr>Ú#Specifier.filter.<locals>.<genexpr>Þ  s:   øé € ð á$�DÜ˜sš{‘t±°D³	Ó:×@Ñ@ÓBÀjÑP÷ ’Û$ùs   ƒ,>´
>)	r   r¼   rz   r¿   rÀ   r%  Ú_apply_prereleases_filterr   rÒ   )rb   rˆ   rz   r‰   Úmatchesr'  s   &&&f @r#   r�   r  ±  sz   ù€ ðP ÒÜ-¨d×.?Ñ.?À×AQÑAQÓRˆKà�=‰=˜EÔ!ØŸ™×+Ñ+Ó-ˆJõá$óˆGô
 -¨W°c¸;ÓGÐGä §¡Ó 1°8¸SÀ+ÓNÐNr%   )r¼   r¾   rH   r½   ©rö   Nr'   r›   rœ   )$rU   rV   rW   rX   rY   r�   Ú_specifier_regex_strÚreÚcompileÚVERBOSEÚ
IGNORECASEr¸   r±   Ú__annotations__rÁ   rÆ   rL   rÒ   rŸ   rz   r¢   rÞ   ré   r¿   rÀ   rü   rg   r  rn   ru   r  r„   r£   r¤   r�   rZ   r!   r%   r#   r   r   Ü   sf  ‡ ñð&€IðZÐðx �ZŠZØÐ%Õ%¨Õ.°·
±
¸R¿]¹]Õ0Jó€Fð 	ˆlØˆgØˆkØÐØÐ"Øˆ[Øˆ^Øˆ{ð	€J�ó 	÷!7õF
!õõð* ô%ó ð%ð6 ×Ñô"ó ð"õ/õDðB ôó ðð ôó ðõBõ$*ð ô+ó ð+õ*õ=õ:#÷*6>ðp ‡_�_ö+ó ð+ð ‡_�_öó ð÷4Oó 4Or%   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r+  r—   r‰   r˜   rz   rC   r    r™   r!   )r"   s   "r#   r$   r$   è  s0   € ÷ ñ Øðà	0ðð ðð ñ	r%   c                óf   aa€ Vf   \        V S4      # V'       d   \        V 4      # VV3R lV  4       # )zÇApply ``prereleases=`` handling to an already-matched iterable.

``None`` means PEP 440 default (buffer pre-releases until a final
appears); ``True`` yields everything; ``False`` drops pre-releases.
c              3  ó†   <"  € T F6  p\        Sf   TMS! V4      4      ;oe   SP                  '       d   K2  Vx € K8  	  R # 5ir'   )r   rÖ   )r&  r‚   r‰   rB   s   & €€r#   r(  Ú,_apply_prereleases_filter.<locals>.<genexpr>ö  s=   øé € ð áˆDÜ$¨Sª[¡T¹cÀ$»iÓHÐHˆFÒQØ×#Õ#÷ 	ŠÛùs
   ƒ/A·
A)Ú_pep440_filter_prereleasesÚiter)r+  r‰   rz   rB   s   &f&@r#   r*  r*  è  s7   ù€ ð ÒÜ)¨'°3Ó7Ð7ßÜ�G‹}Ðõáóð r%   c                  óÎ  € ] tR tRtRtR8tR9R 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R( R) ltR* R+ ltR, R- ltR. R/ ltR:R0 R1 llt]P>                  R;R2 R3 ll4       t ]P>                  R;R4 R5 ll4       t R:R6 R7 llt R8t!R# )<r   iþ  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]rz   rC   r    r~   r!   )r"   s   "r#   r$   ÚSpecifierSet.__annotate__  s(   € ÷ *(ñ *(à-ð*(ð !ð*(ð 
ñ	*(r%   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        RV n        W 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`   ©r&  Úss   & r#   r(  Ú(SpecifierSet.__init__.<locals>.<genexpr><  s   é € Ð%K¹{¸! e¬s°1«v¦o»{ùó   ‚TFN)r.   r1   Úsplitrº   r/   Úmapr   Ú_specsÚ_has_arbitraryÚanyr0   Ú_canonicalizedÚ_is_unsatisfiabler¾   r¼   )rb   r;  rz   rB  Úsplit_specifierss   &&&  r#   rÁ   ÚSpecifierSet.__init__  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ˆÔØ.2ˆÔØ26ˆŒð (Öùò#  Ws   ªDÁDc               ó   € V ^8„  d   QhRR/# )r   r    ztuple[Specifier, ...]r!   )r"   s   "r#   r$   r<  F  s   € ÷ ñ Ð"7ñ r%   c           	     óÄ   € V P                   '       gD   \        \        P                  \	        V P
                  \        R7      4      4      V n        RV n         V P
                  # )zBDeduplicate, sort, and cache specs for order-sensitive operations.©r‰   T)rJ  r/   rå   ÚfromkeysÚsortedrG  r1   ra   s   &r#   Ú_canonical_specsÚSpecifierSet._canonical_specsF  s@   € à×"×"Ð"Ü¤§¡¬f°T·[±[ÄcÔ.JÓ KÓLˆDŒKØ"&ˆDÔØ�{‰{Ðr%   c               ó   € V ^8„  d   QhRR/# rx   r!   )r"   s   "r#   r$   r<  N  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  rA  s   & r#   r(  Ú+SpecifierSet.prereleases.<locals>.<genexpr>\  s   é € Ð2¡k �}Ž}£kùó   ‚TF)r¼   rG  rI  ra   s   &r#   rz   ÚSpecifierSet.prereleasesM  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$   r<  b  s   € ÷ &ñ & ð &°ñ &r%   c                	ó    € Wn         R V n        R # r'   )r¼   rK  r€   s   &&r#   rz   rZ  a  s   € à!ÔØ!%ˆÖr%   c               ó   € V ^8„  d   QhRR/# )r   r    z)tuple[tuple[Specifier, ...], bool | None]r!   )r"   s   "r#   r$   r<  f  s   € ÷ 0ñ 0ÐGñ 0r%   c                	ó2   € V P                   V P                  3# r'   )rG  r¼   ra   s   &r#   rÞ   ÚSpecifierSet.__getstate__f  s   € ð —‘˜T×.Ñ.Ð/Ð/r%   c               ó    € V ^8„  d   QhRRRR/# rá   r!   )r"   s   "r#   r$   r<  l  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   rA  s   & r#   r(  Ú,SpecifierSet.__setstate__.<locals>.<genexpr>w  ó   é € ÐD¹e¸œJ q¬)×4Ð4»eùó   ‚FTc              3  ó>   "  € T F  pR \        V4      9   x € K  	  R# 5ir@  r`   rA  s   & r#   r(  rd  }  s   é € Ð-MÁuÀ!¨e´s¸1³v®oÃuùrD  rG  r¼   rP  c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir'   rc  rA  s   & r#   r(  rd  ‰  re  rf  c              3  ó>   "  € T F  pR \        V4      9   x € K  	  R# 5ir@  r`   rA  s   & r#   r(  rd  �  s   é € Ð-SÁ{À!¨e´s¸1³v®oÃ{ùrD  c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir'   rc  rA  s   & r#   r(  rd  š  s   é € Ð@¹%°Qœ
 1¤i×0Ð0»%ùrf  c              3  ó>   "  € T F  pR \        V4      9   x € K  	  R# 5ir@  r`   rA  s   & r#   r(  rd     s   é € Ð)OÁ;¸a¨%´3°q³6®/Ã;ùrD  z!Cannot restore SpecifierSet from r!   )r¾   rK  r.   r/   r0   Úallr7   rG  r¼   rJ  rI  rH  rå   rK   Ú	frozensetrR  r1   ræ   )rb   râ   Úspecsrz   rç   rè   s   &&    r#   ré   ÚSpecifierSet.__setstate__l  su  € àˆŒØ!%ˆÔä�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/# r]   r!   )r"   s   "r#   r$   r<  ¥  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ö   rF   r÷   rø   rù   rû   s   & r#   rü   ÚSpecifierSet.__repr__¥  sU   € ð × Ñ Ò,ð ˜T×-Ñ-Ñ0Ñ1àð 	ð �4—>‘>×*Ñ*Ð+¨1¬S°«Y©M¸#¸¸bÐAÐAr%   c               ó   € V ^8„  d   QhRR/# r]   r!   )r"   s   "r#   r$   r<  º  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'
r>  c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir'   r`   rA  s   & r#   r(  Ú'SpecifierSet.__str__.<locals>.<genexpr>Å  s   é € Ð@Ñ(? 1œ˜AŸ˜Ó(?ùrY  )ÚjoinrS  ra   s   &r#   rg   ÚSpecifierSet.__str__º  s"   € ð �x‰xÑ@¨×(=Ñ(=Ô(?Ó@Ó@Ð@r%   c               ó   € V ^8„  d   QhRR/# rk   r!   )r"   s   "r#   r$   r<  Ç  s   € ÷ -ñ -˜#ñ -r%   c                	ó4   € \        V P                  4       4      # r'   )r	  rS  ra   s   &r#   rn   Ú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$   r<  Ê  s   € ÷ ñ Ð/ð °Lñ r%   c                ó*  € \        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        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')>
zFCannot combine SpecifierSets with True and False prerelease overrides.)
r.   r1   r   r  rG  r0   rJ  rH  r¼   Ú
ValueError)rb   rr   rA   s   && 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/# rq   r!   )r"   s   "r#   r$   r<  ê  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.   r1   r   r   r  rS  rt   s   &&r#   ru   ÚSpecifierSet.__eq__ê  sT   € ô& �eœc¤9Ð-×.Ò.Ü ¤ U£Ó,‰EÜ˜E¤<×0Ò0Ü!Ð!à×$Ñ$Ó&¨%×*@Ñ*@Ó*BÑBÐBr%   c               ó   € V ^8„  d   QhRR/# rk   r!   )r"   s   "r#   r$   r<    s   € ÷  ñ  ˜ñ  r%   c                ó,   € \        V P                  4      # )z7Returns the number of specifiers in this specifier set.)r0   rG  ra   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$   r<    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')>]
)r8  rG  ra   s   &r#   Ú__iter__ÚSpecifierSet.__iter__  s   € ô �D—K‘KÓ Ð r%   c               ó   € V ^8„  d   QhRR/# rÍ   r!   )r"   s   "r#   r$   r<    s   € ÷ 
ñ 
Ð/ñ 
r%   c                ó�   € V P                   e   V P                   # \        R V P                   4       4      V n         V P                   # )z�Intersect all specifiers into a single sequence of version ranges.

Empty when unsatisfiable. Callers must ensure ``self._specs``
is non-empty.
c              3  ó@   "  € T F  qP                  4       x € K  	  R # 5ir'   )rÒ   rA  s   & r#   r(  Ú+SpecifierSet._get_ranges.<locals>.<genexpr>  s   é € Ð1VÉ+ÀQ·,±,·.°.Ë+ùs   ‚)r¾   r   rG  ra   s   &r#   Ú_get_rangesÚSpecifierSet._get_ranges  s8   € ð �<‰<Ò#Ø—<‘<Ðä1Ñ1VÈ$Ï+Ê+Ó1VÓVˆŒØ�|‰|Ðr%   c               ó   € V ^8„  d   QhRR/# ©r   r    r6   r!   )r"   s   "r#   r$   r<    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       4      pW n         V# )an  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

.. versionadded:: 26.1
F)rK  rG  r�  Ú_check_arbitrary_unsatisfiablerz   r   )rb   ÚcachedrÑ   s   &  r#   Úis_unsatisfiableÚSpecifierSet.is_unsatisfiable  s~   € ð  ×'Ñ'ˆØÒØˆMà�{�{ˆ{Ø%*ˆDÔ"Ùà×%Ñ%Ó'Ô'ˆçØ×8Ñ8Ó:ˆFç˜$×*Ñ*¨eÓ3Ü/°×0@Ñ0@Ó0BÓCˆFà!'ÔØˆr%   c               ó   € V ^8„  d   QhRR/# r“  r!   )r"   s   "r#   r$   r<  A  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'   )rÀ   r%  )r&  rB  Úfirsts   & €r#   r(  Ú>SpecifierSet._check_arbitrary_unsatisfiable.<locals>.<genexpr>N  s   øé € ÐA±=¨a�y‰y�‰Ó  EÖ)³=ùs   ƒ),r·   Tc              3  óD   <"  € T F  qP                  S4      x € K  	  R # 5ir'   r  )r&  rB  Ú	candidates   & €r#   r(  r�  f  s   øé € Ð?±h°—z‘z )×,Ð,³hùs   ƒ )	rG  r¿   rÀ   r%  rI  r   rz   rÖ   rl  )rb   rB  r°   ÚstandardrŸ  rœ  s   &   @@r#   r•  Ú+SpecifierSet._check_arbitrary_unsatisfiableA  s  ù€ ð !%§¢ÓC¡˜1¯z©z¸UÑ/B—Q�Q¡ˆ	ÐCßÙð ˜!•×$Ñ$×*Ñ*Ó,ˆß‹3ÔA°9¸R¶=ÓA�3�3Š3ÔA°9¸R¶=ÓA×AÒAÙô # 9¨Q¥<×#7Ñ#7Ó8ˆ	ð
 ×Ñ Ó%ØÒ%Ø×'×'Ð'áà#Ÿ{š{Ó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    zranges.VersionRanger!   )r"   s   "r#   r$   r<  h  s   € ÷ 6ñ 6Ð-ñ 6r%   c                ó0   € ^RI Hp VP                  V 4      # )a3  Return the :class:`~packaging.ranges.VersionRange` this set accepts.

An empty set yields the full range; an unsatisfiable set yields the
empty range. ``===`` specifiers contribute literal-string admission.

>>> SpecifierSet(">=1.0,<2.0").to_range()
<VersionRange '[1.0, 2.0.dev0)'>

.. versionadded:: 26.3
)ÚVersionRange)r   r¤  Ú_from_specifier_set)rb   r¤  s   & r#   Úto_rangeÚSpecifierSet.to_rangeh  s   € õ 	)à×/Ñ/°Ó5Ð5r%   c               ó    € V ^8„  d   QhRRRR/# )r   rr   r,   r    r~   r!   )r"   s   "r#   r$   r<  w  s   € ÷ Lñ L¨Vð L¸ñ Lr%   c                	ó¦   € \        V\        4      '       g   \        R 4      hV P                  '       g   VP                  '       d   \	        R4      hR# )zexpected a SpecifierSetz+set relations do not support === specifiersN)r.   r   ræ   rH  r~  rt   s   &&r#   Ú_check_relation_operandÚ$SpecifierSet._check_relation_operandw  sC   € Ü˜%¤×.Ò.ÜÐ5Ó6Ð6Ø××Ð %×"6×"6Ð"6ÜÐJÓKÐKñ #7r%   c               ó    € V ^8„  d   QhRRRR/# ©r   rr   r   r    r6   r!   )r"   s   "r#   r$   r<  }  s   € ÷ ;ñ ;˜|ð ;°ñ ;r%   c                ó~   € V P                  V4       V P                  4       P                  VP                  4       4      # )aÝ  Return whether every version matching this set also matches other.

:raises ValueError:
    If either set uses ``===`` specifiers, or the two sets were
    given different ``prereleases`` arguments (unset on one side
    counts as different).
:raises TypeError:
    If other is not a :class:`SpecifierSet`.

>>> SpecifierSet(">=3.12,<3.13").is_subset(SpecifierSet(">=3.12"))
True
>>> SpecifierSet(">=3.12").is_subset(SpecifierSet(">=3.12,<3.13"))
False

.. versionadded:: 26.3
)rª  r¦  Ú	is_subsetrt   s   &&r#   r¯  ÚSpecifierSet.is_subset}  s0   € ð" 	×$Ñ$ UÔ+Ø�}‰}‹×(Ñ(¨¯©Ó)9Ó:Ð:r%   c               ó    € V ^8„  d   QhRRRR/# r­  r!   )r"   s   "r#   r$   r<  ‘  s   € ÷ =ñ = ð =°$ñ =r%   c                ó~   € V P                  V4       V P                  4       P                  VP                  4       4      # )a–  Return whether every version matching other also matches this set.

:raises ValueError:
    If either set uses ``===`` specifiers, or the two sets were
    given different ``prereleases`` arguments (unset on one side
    counts as different).
:raises TypeError:
    If other is not a :class:`SpecifierSet`.

>>> SpecifierSet(">=3.12").is_superset(SpecifierSet(">=3.12,<3.13"))
True

.. versionadded:: 26.3
)rª  r¦  Úis_supersetrt   s   &&r#   r³  ÚSpecifierSet.is_superset‘  s0   € ð 	×$Ñ$ UÔ+Ø�}‰}‹×*Ñ*¨5¯>©>Ó+;Ó<Ð<r%   c               ó    € V ^8„  d   QhRRRR/# r­  r!   )r"   s   "r#   r$   r<  £  s   € ÷ =ñ = ð =°$ñ =r%   c                ó~   € V P                  V4       V P                  4       P                  VP                  4       4      # )aÎ  Return whether this set and other share no matching versions.

:raises ValueError:
    If either set uses ``===`` specifiers, or the two sets were
    given different ``prereleases`` arguments (unset on one side
    counts as different).
:raises TypeError:
    If other is not a :class:`SpecifierSet`.

>>> SpecifierSet("<3.12").is_disjoint(SpecifierSet(">=3.12"))
True
>>> SpecifierSet("<3.12").is_disjoint(SpecifierSet(">=3.11"))
False

.. versionadded:: 26.3
)rª  r¦  Úis_disjointrt   s   &&r#   r·  ÚSpecifierSet.is_disjoint£  s0   € ð" 	×$Ñ$ UÔ+Ø�}‰}‹×*Ñ*¨5¯>©>Ó+;Ó<Ð<r%   c               ó    € V ^8„  d   QhRRRR/# )r   r‚   r  r    r6   r!   )r"   s   "r#   r$   r<  ·  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  rz   rC   Ú	installedr    r6   r!   )r"   s   "r#   r$   r<  Ì  s>   € ÷ VNñ VNàðVNð !ðVNð ð	VNð
 
ñV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eÃ   V P                  '       g±   VP
                  f£   V P                  '       d‘   VP                  '       d   VRJ g   Vf   V P                  RJ d   R# V P                  pVfH   V P                   F  p\        Wt4      pVf    MV'       d   K   R# 	  R# V P                  4       ;q`n        \        Wd4      # \        \        V P                  V.VR7      4      4      # )aT  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:`~packaging.version.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

.. versionchanged:: 26.0

    With ``prereleases=None``, a prerelease now matches. A single
    version has no alternatives, so the :pep:`440` rule to accept
    prereleases when nothing else satisfies the specifiers applies.
    Earlier versions rejected it. An unparsable version now returns
    ``False`` instead of raising :exc:`~packaging.version.InvalidVersion`.
TFr  )r   rÖ   rH  r.   r   rJ   rG  r¼   r¾   rS   r�  r   r6   r  r�   )	rb   r‚   rz   r½  rÀ   Ú
check_itemÚboundsr+   r  s	   &&&&     r#   r„   ÚSpecifierSet.containsÌ  s  € ôP ! Ó&ˆàÒ§9°×1F×1FÐ1FØˆKð Š?˜t×2×2Ð2¼:ÀdÌG×;TÒ;TØ‰Jà ˆJð ÒØ×'×'Ð'Ø—‘Ò%Ø——�à×$×$Ð$Ø˜uÓ$ØÒ'¨D×,=Ñ,=ÀÓ,Fáà—\‘\ˆFØŠ~ð
 !ŸKœK�DÜ'¨Ó6�EØ’}Ùß ™5Ú$ñ (ñ  à(,×(8Ñ(8Ó(:Ð:�œä& vÓ7Ð7ä”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$   r<  %  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$   r<  -  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$   r<  4  s>   € ÷ SEñ SEàðSEð !ðSEð 5ð	SEð
 
ñSEr%   c                óJ  aa€ Vf   V P                   e   V P                   pV P                  '       df   V P                  '       d'   V P                  oVV3R lV 4       p\        VSV4      # V P                  pVf   V P                  4       p\        WQSV4      # \        VSV4      # )aG  Filter items in the given iterable, that match the specifiers in this set.

:param iterable:
    An iterable that can contain version strings and
    :class:`~packaging.version.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:`~packaging.version.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']

.. versionchanged:: 26.0

    Prerelease filtering now follows the PEP 440 recommendation of
    yielding prereleases only when no final release is present.

.. versionchanged:: 26.1

    Added the ``key`` parameter.
c              3  ó²   <a"  € T FK  o\         ;QJ d     VV3R  lS 4       F  '       d   K   RM	  RM! VV3R  lS 4       4      '       g   KG  Sx € KM  	  R# 5i)c              3  ób   <"  € T F$  pTP                  Sf   SMS! S4      RR7      x € K&  	  R # 5i)NTr  r  )r&  rB  r‚   r‰   s   & €€r#   r(  Ú0SpecifierSet.filter.<locals>.<genexpr>.<genexpr>z  s3   øé € ð á!&˜Að Ÿ
™
¨3ª;¡4¹CÀ»IÐSW˜
×XÐXÛ!&ùs   ƒ,/FTN)rl  )r&  r‚   r‰   rn  s   &@€€r#   r(  Ú&SpecifierSet.filter.<locals>.<genexpr>w  sD   ùé € ð á (˜ß“sõ á!&ó—s—s’sõ á!&ó÷ ÷ ’DÛ (ùs   „A”A¬AÁ
A)rz   rG  rH  r*  r¾   r�  r   )rb   rˆ   rz   r‰   r+  r   rn  s   &&&f  @r#   r�   rÄ  4  sœ   ù€ ðx Ò 4×#3Ñ#3Ò#?Ø×*Ñ*ˆKà�;�;ˆ;Ø×"×"Ð"àŸ™�õá (ó�ô 1°¸#¸{ÓKÐKà—\‘\ˆFØŠ~Ø×)Ñ)Ó+�Ü# F°c¸;ÓGÐGô )¨°3¸ÓDÐDr%   )rJ  rH  rK  r¼   r¾   rG  r,  rœ   r›   )"rU   rV   rW   rX   rY   r�   rÁ   rS  rŸ   rz   r¢   rÞ   ré   rü   rg   rn   r  ru   r†  rŠ  r�  r—  r•  r¦  rª  r¯  r³  r·  r  r„   r£   r¤   r�   rZ   r!   r%   r#   r   r   þ  sñ   † ñð$€I÷*(õXð ôó ðð& ×Ñô&ó ð&õ0õ7GõrBõ*Aõ-õõ@Cõ4 õ!õ
õ!õF%@õN6õLõ;õ(=õ$=õ(#÷*VNðp ‡_�_ö+ó ð+ð ‡_�_öó ð÷SEó SE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$   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   ÚappendrÖ   )rˆ   r‰   Úall_nonfinalÚarbitrary_stringsÚfound_finalr‚   rB   s   &&     r#   r7  r7  Š  sº   é € ð !€LØ#%Ðà€KÛˆÜ¨ª¡¹¸T»ÓCˆàŠ>÷ Ø“
à!×(Ñ(¨Ô.Ø×#Ñ# DÔ)Ùà×#×#Ð#çØ,×,Ð,Ø"�ØŠJÙ÷ ‰{Ø×Ñ Ö%ñ1 ÷6 Ø×Òñ ñ -ñ 	 ùs@   ‚.B?±:B?Á,B?Á4B?Á9B;Á:B?ÂB?Â-B?Â2B=Â3	B?Â=B?)rµ   é
   )r   r   r   r   )=Ú__conditional_annotations__rY   Ú
__future__r   r    r.  r£   r   r   r   r   r   r   r¾   r	   r
   r   r   r   r   r   r   r   Úutilsr   rÀ   r   ÚsysÚcollections.abcr   r   r   Úversion_infor   Útyping_extensionsrö   r   r   r(   r)   r2   r7   r8   r1   r  r9   Ú__ge__Ú__le__ru   Ú__ne__r?   r2  rS   r~  r   ÚABCMetar   r   r*  r   r7  )rÔ  s   @r#   Ú<module>rß     s$  øðôõ #ã 
Û 	Û ÷÷ ÷
÷ 
õ 
õ (Ý çÛß<Ñ<à
×Ñ˜7Ô"Þ$å/åÝ!ò€õõõ0ñ ˆCƒL€Ø˜ ˜Õ%€ÙÐ1¸ÔIÐ ð 	ˆ'�.‰.Øˆ'�.‰.Øˆ'�.‰.Øˆ'�.‰.ð	FÐ ÐBó õô:	�zô 	ôS˜cŸk™kõ SôlIO�ô IOõXô,I
E�=ô I
E÷X' r%   