+
    ®¾j�œ  ã                  ó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 ^RIHt ^RIHt ]]]3,          t]
! R]R7      t]]].]3,          tR R	 lt ! R
 R]4      t ! R R]P0                  R7      t ! R R]4      t]P6                  ! R4      tR R ltR R ltR R ltR R lt  ! R R]4      t!R# )z¢
.. testsetup::

    from pip._vendor.packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier
    from pip._vendor.packaging.version import Version
)ÚannotationsN)ÚCallableÚIterableÚIteratorÚTypeVarÚUnion)Úcanonicalize_version)ÚVersionÚUnparsedVersionVar)Úboundc               ó    € V ^8„  d   QhRRRR/# )é   ÚversionÚUnparsedVersionÚreturnr	   © )Úformats   "Ú_/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_vendor/packaging/specifiers.pyÚ__annotate__r      s   € ÷ ñ ˜_ð °ñ ó    c                óH   € \        V \        4      '       g   \        V 4      p V # ©N)Ú
isinstancer	   )r   s   &r   Ú_coerce_versionr      s   € Ü�gœw×'Ò'Ü˜'Ó"ˆØ€Nr   c                  ó   € ] tR t^ tRtRtR# )ÚInvalidSpecifierzç
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       s   † õr   r   c                  óN  € ] tR t^,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RtR# )ÚBaseSpecifierc               ó   € V ^8„  d   QhRR/# ©r   r   Ústrr   )r   s   "r   r   ÚBaseSpecifier.__annotate__.   s   € ÷ ñ ˜ñ r   c                ó   € R# )zv
Returns the str representation of this Specifier-like object. This
should be representative of the Specifier itself.
Nr   ©Úselfs   &r   Ú__str__ÚBaseSpecifier.__str__-   ó   ‚ r   c               ó   € V ^8„  d   QhRR/# ©r   r   Úintr   )r   s   "r   r   r'   5   s   € ÷ ñ ˜#ñ r   c                ó   € R# )z6
Returns a hash value for this Specifier-like object.
Nr   r)   s   &r   Ú__hash__ÚBaseSpecifier.__hash__4   r-   r   c               ó    € V ^8„  d   QhRRRR/# ©r   ÚotherÚobjectr   Úboolr   )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*   r6   s   &&r   Ú__eq__ÚBaseSpecifier.__eq__:   r-   r   c               ó   € V ^8„  d   QhRR/# ©r   r   úbool | Noner   )r   s   "r   r   r'   E   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   r)   s   &r   ÚprereleasesÚBaseSpecifier.prereleasesC   r-   r   c               ó    € V ^8„  d   QhRRRR/# ©r   Úvaluer8   r   ÚNoner   )r   s   "r   r   r'   M   s   € ÷ ñ  ð ¨$ñ r   c                ó   € R# )zASetter for :attr:`prereleases`.

:param value: The value to set.
Nr   ©r*   rE   s   &&r   rA   rB   L   r-   r   Nc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úitemr&   rA   r?   r   r8   r   )r   s   "r   r   r'   T   s!   € ÷ ñ ˜Sð ¨{ð Àdñ r   c                ó   € R# )zB
Determines if the given item is contained within this specifier.
Nr   )r*   rJ   rA   s   &&&r   ÚcontainsÚBaseSpecifier.containsS   r-   r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   ÚiterablezIterable[UnparsedVersionVar]rA   r?   r   zIterator[UnparsedVersionVar]r   )r   s   "r   r   r'   Z   s$   € ÷ ñ Ø4ðØCNðà	%ñ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*   rP   rA   s   &&&r   ÚfilterÚBaseSpecifier.filterY   r-   r   r   r   )r   r   r   r   ÚabcÚabstractmethodr+   r2   r;   ÚpropertyrA   ÚsetterrL   rR   r!   r   r   r   r#   r#   ,   s¾   † Ø×Ñôó ðð 	×Ñôó ðð
 	×Ñôó ðð Ø×Ñôó ó ðð ×Ñôó ðð 	×Ñöó ðð
 	×Ñöó ôr   r#   )Ú	metaclassc                  ó&  € ] tR t^ct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RDR R llt]R R l4       t]P                   R R l4       t]R R l4       t]R R  l4       tR! R" ltR# R$ lt]R% R& l4       tR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 R4 ltR5 R6 ltR7 R8 ltR9 R: ltR; R< lt R= R> lt!RER? R@ llt"RERA RB llt#RCt$R# )FÚ	Specifiera+  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).
z8
        (?P<operator>(~=|==|!=|<=|>=|<|>|===))
        aÈ  
        (?P<version>
            (?:
                # 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 .*
                    |
                    (?:                                  # 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
                    (?:\+[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.
                (?<!==|!=|~=)         # We have special cases for these
                                      # operators so we want to make sure they
                                      # don't match here.

                \s*
                v?
                (?:[0-9]+!)?          # epoch
                [0-9]+(?:\.[0-9]+)*   # release
                (?:                   # 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
            )
        )
        z^\s*z\s*$ú~=Ú
compatibleú==Úequalz!=Ú	not_equalú<=Úless_than_equalú>=Úgreater_than_equalÚ<Ú	less_thanÚ>Úgreater_thanú===Ú	arbitraryNc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úspecr&   rA   r?   r   rF   r   )r   s   "r   r   ÚSpecifier.__annotate__Þ   s!   € ÷ (ñ (˜Sð (°Kð (È4ñ (r   c                óü   € V P                   P                  V4      pV'       g   \        RV: 24      hVP                  R4      P	                  4       VP                  R4      P	                  4       3V n        W 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: Úoperatorr   N)Ú_regexÚsearchr   ÚgroupÚstripÚ_specÚ_prereleases)r*   rk   rA   Úmatchs   &&& r   Ú__init__ÚSpecifier.__init__Þ   sk   € ð —‘×"Ñ" 4Ó(ˆßÜ"Ð%8¸¹Ð#AÓBÐBð �K‰K˜
Ó#×)Ñ)Ó+Ø�K‰K˜	Ó"×(Ñ(Ó*ð'
ˆŒ
ð (Ör   c               ó   € V ^8„  d   QhRR/# )r   r   r8   r   )r   s   "r   r   rl   ù   s   € ÷ ñ ˜Tñ r   c                	óä   € V P                   e   V P                   # V P                  w  rVR9   dA   VR8X  d   VP                  R4      '       d   VR R p\        V4      P                  '       d   R# R# )Nr]   ú.*TF)r]   rb   r`   r[   rh   rf   rd   éþÿÿÿ)rt   rs   Úendswithr	   Úis_prerelease)r*   rn   r   s   &  r   rA   ÚSpecifier.prereleasesø   sq   € ð ×ÑÒ(Ø×$Ñ$Ð$ð
 !ŸJ™JÑˆØÐ@Ô@ð ˜4Ô G×$4Ñ$4°T×$:Ò$:Ø! # 2˜,�ô �wÓ×-×-Ð-Ùár   c               ó    € V ^8„  d   QhRRRR/# rD   r   )r   s   "r   r   rl     ó   € ÷ "ñ " ð "¨$ñ "r   c                	ó   € Wn         R # r   ©rt   rH   s   &&r   rA   r~     ó   € à!Ör   c               ó   € V ^8„  d   QhRR/# r%   r   )r   s   "r   r   rl     s   € ÷ ñ ˜#ñ r   c                ó(   € V P                   ^ ,          # )zHThe operator of this specifier.

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

>>> Specifier("==1.2.3").version
'1.2.3'
r†   r)   s   &r   r   ÚSpecifier.version  rˆ   r   c               ó   € V ^8„  d   QhRR/# r%   r   )r   s   "r   r   rl   &  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=Ú rd   Ú(ú)>)rt   rA   Ú	__class__r   r&   ©r*   Úpres   & 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   rl   8  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   rs   r)   s   &r   r+   ÚSpecifier.__str__8  s   € ð �}Š}˜dŸj™jÑ)Ð)r   c               ó   € V ^8„  d   QhRR/# )r   r   ztuple[str, str]r   )r   s   "r   r   rl   C  s   € ÷ 0ñ 0 ñ 0r   c                	ó�   € \        V P                  ^,          V P                  ^ ,          R8g  R7      pV P                  ^ ,          V3# )é   r[   ©Ústrip_trailing_zero)r   rs   )r*   Úcanonical_versions   & r   Ú_canonical_specÚSpecifier._canonical_specB  s>   € ä0Ø�J‰J�q�MØ!%§¡¨A¥°$Ñ!6ô
Ðð �z‰z˜!�}Ð/Ð/Ð/r   c               ó   € V ^8„  d   QhRR/# r/   r   )r   s   "r   r   rl   J  s   € ÷ *ñ *˜#ñ *r   c                	ó,   € \        V P                  4      # r   )Úhashr    r)   s   &r   r2   ÚSpecifier.__hash__J  s   € Ü�D×(Ñ(Ó)Ð)r   c               ó    € V ^8„  d   QhRRRR/# r5   r   )r   s   "r   r   rl   M  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&   r’   r   ÚNotImplementedr    r:   s   &&r   r;   ÚSpecifier.__eq__M  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   Úopr&   r   ÚCallableOperatorr   )r   s   "r   r   rl   j  s   € ÷ !ñ ! ð !Ð(8ñ !r   c                	óF   € \        V R V P                  V,           24      pV# )Ú	_compare_)ÚgetattrÚ
_operators)r*   r«   Úoperator_callables   && r   Ú_get_operatorÚSpecifier._get_operatorj  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	   rk   r&   r   r8   r   )r   s   "r   r   rl   p  s!   € ÷ 
ñ 
¨wð 
¸cð 
Àdñ 
r   c           
     	óò   € \        \        \        P                  ! \        \        V4      4      4      R R 4      pVR,          pV P                  R4      ! W4      ;'       d    V P                  R4      ! W4      # )Nrz   rb   r]   éÿÿÿÿ)Ú_version_joinÚlistÚ	itertoolsÚ	takewhileÚ_is_not_suffixÚ_version_splitr²   )r*   r¶   rk   Úprefixs   &&& r   Ú_compare_compatibleÚSpecifier._compare_compatiblep  ss   € ô Ü”×$Ò$¤^´^ÀDÓ5IÓJÓKÈCÈRÐPó
ˆð
 	�$�ˆà×!Ñ! $Ô'¨Ó:÷ 
ð 
¸t×?QÑ?QÐRVÔ?WØó@
ð 	
r   c               ó$   € V ^8„  d   QhRRRRRR/# rµ   r   )r   s   "r   r   rl   „  s!   € ÷ &/ñ &/¨'ð &/¸ð &/Àñ &/r   c                	óT  € VP                  R 4      '       d]   \        VP                  RR7      p\        VRR RR7      p\        V4      p\        V4      p\	        We4      w  rxVR\        V4       p	W•8H  # \        V4      p
V
P                  '       g   \        VP                  4      pW8H  # )rz   Fr�   Nr{   )r|   r   Úpublicr¾   Ú_pad_versionÚlenr	   Úlocal)r*   r¶   rk   Únormalized_prospectiveÚnormalized_specÚ
split_specÚsplit_prospectiveÚpadded_prospectiveÚ_Úshortened_prospectiveÚspec_versions   &&&        r   Ú_compare_equalÚSpecifier._compare_equal„  s¶   € à�=‰=˜×Òä%9Ø×"Ñ"¸ô&Ð"ô 3°4¸¸°9ÐRWÔXˆOô (¨Ó8ˆJô
 !/Ð/EÓ FÐô %1Ð1BÓ$OÑ!Ðð
 %7Ð7H¼¸Z»Ð$IÐ!à(Ñ6Ð6ô # 4›=ˆLð
  ×%×%Ð%Ü% k×&8Ñ&8Ó9�àÑ.Ð.r   c               ó$   € V ^8„  d   QhRRRRRR/# rµ   r   )r   s   "r   r   rl   ¬  s!   € ÷ :ñ :¨gð :¸Sð :ÀTñ :r   c                	ó.   € V P                  W4      '       * # r   )rÐ   ©r*   r¶   rk   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   rl   ¯  s!   € ÷ <ñ <°Gð <À3ð <È4ñ <r   c                	óD   € \        VP                  4      \        V4      8*  # r   ©r	   rÄ   rÔ   s   &&&r   Ú_compare_less_than_equalÚ"Specifier._compare_less_than_equal¯  ó   € ô �{×)Ñ)Ó*¬g°d«mÑ;Ð;r   c               ó$   € V ^8„  d   QhRRRRRR/# rµ   r   )r   s   "r   r   rl   µ  s!   € ÷ <ñ <°wð <Àcð <Èdñ <r   c                	óD   € \        VP                  4      \        V4      8¬  # r   rÙ   rÔ   s   &&&r   Ú_compare_greater_than_equalÚ%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   r8   r   )r   s   "r   r   rl   »  s!   € ÷ ñ ¨gð Àð Èñ r   c                	óÒ   € \        V4      pW8  g   R # VP                  '       gB   VP                  '       d0   \        VP                  4      \        VP                  4      8X  d   R # R# ©FT)r	   r}   Úbase_version©r*   r¶   rã   rk   s   &&& r   Ú_compare_less_thanÚSpecifier._compare_less_than»  sX   € ô �xÓ ˆð
 Ô!Ùð ×!×!Ð! k×&?×&?Ð&?Ü�{×/Ñ/Ó0´G¸D×<MÑ<MÓ4NÔNÙñ
 r   c               ó$   € V ^8„  d   QhRRRRRR/# râ   r   )r   s   "r   r   rl   Ó  s!   € ÷ ñ °ð ÀCð ÈDñ r   c                	óL  € \        V4      pW8”  g   R # VP                  '       gB   VP                  '       d0   \        VP                  4      \        VP                  4      8X  d   R # VP                  e0   \        VP                  4      \        VP                  4      8X  d   R # R# rå   )r	   Úis_postreleaseræ   rÇ   rç   s   &&& r   Ú_compare_greater_thanÚSpecifier._compare_greater_thanÓ  s‡   € ô �xÓ ˆð
 Ô!Ùð ×"×"Ð" {×'A×'AÐ'AÜ�{×/Ñ/Ó0´G¸D×<MÑ<MÓ4NÔNÙð ×ÑÒ(Ü�{×/Ñ/Ó0´G¸D×<MÑ<MÓ4NÔNÙñ
 r   c               ó$   € V ^8„  d   QhRRRRRR/# rµ   r   )r   s   "r   r   rl   ñ  s!   € ÷ =ñ =¨gð =¸Sð =ÀTñ =r   c                	óh   € \        V4      P                  4       \        V4      P                  4       8H  # r   )r&   ÚlowerrÔ   s   &&&r   Ú_compare_arbitraryÚSpecifier._compare_arbitraryñ  s&   € Ü�;Ó×%Ñ%Ó'¬3¨t«9¯?©?Ó+<Ñ<Ð<r   c               ó    € V ^8„  d   QhRRRR/# )r   rJ   zstr | Versionr   r8   r   )r   s   "r   r   rl   ô  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")
False
>>> "1.3.0a1" in Specifier(">=1.2.3", prereleases=True)
True
©rL   ©r*   rJ   s   &&r   Ú__contains__ÚSpecifier.__contains__ô  ó   € ð& �}‰}˜TÓ"Ð"r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rJ   r   rA   r?   r   r8   r   )r   s   "r   r   rl   	  s'   € ÷ *@ñ *@˜_ð *@¸;ð *@ÐRVñ *@r   c                óÊ   € Vf   V P                   p\        V4      pVP                  '       d   V'       g   R# V P                  V P                  4      pV! W0P
                  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 uses :attr:`prereleases` to determine
    whether or not prereleases are allowed.

>>> 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")
False
>>> Specifier(">=1.2.3", prereleases=True).contains("1.3.0a1")
True
>>> Specifier(">=1.2.3").contains("1.3.0a1", prereleases=True)
True
F)rA   r   r}   r²   rn   r   )r*   rJ   rA   Únormalized_itemr±   s   &&&  r   rL   ÚSpecifier.contains	  sZ   € ð4 ÒØ×*Ñ*ˆKô *¨$Ó/ˆð
 ×(×(Ð(·Ùð /3×.@Ñ.@ÀÇÁÓ.OÐÙ  ·,±,Ó?Ð?r   c               ó$   € V ^8„  d   QhRRRRRR/# rO   r   )r   s   "r   r   rl   5  s$   € ÷ ;ñ ;Ø4ð;ØCNð;à	%ñ;r   c              #  óT  "  € Rp. pRVe   TMR/pV Fn  p\        V4      pV P                  ! V3/ VB '       g   K)  VP                  '       d.   V'       g&   V P                  '       g   VP	                  V4       Kh  RpVx € Kp  	  V'       g   V'       d   V F  pVx € K	  	  R# R# R# 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 be intelligently decide whether to allow
    prereleases or not (based on the :attr:`prereleases` attribute, and
    whether the only versions matching are prereleases).

This method is smarter than just ``filter(Specifier().contains, [...])``
because it implements the rule from :pep:`440` that a prerelease item
SHOULD be accepted if no other versions match the given specifier.

>>> 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']
FrA   NT)r   rL   r}   rA   Úappend)r*   rP   rA   ÚyieldedÚfound_prereleasesÚkwr   Úparsed_versions   &&&     r   rR   ÚSpecifier.filter5  s¡   é € ð< ˆØÐà¨KÒ,C™[ÈÐNˆó  ˆGÜ,¨WÓ5ˆNà�}Š}˜^Ñ2¨r×2Ò2ð "×/×/Ð/ß 4×#3×#3Ð#3à%×,Ñ,¨WÖ5ð #�GØ!”Mñ  ÷( ×,Û,�Ø”ó -ñ -‰wùs(   ‚5B(¼B(ÁB(ÁB(Á($B(ÂB(ÂB()rt   rs   ©r�   Nr   )%r   r   r   r   r    Ú_operator_regex_strÚ_version_regex_strÚreÚcompileÚVERBOSEÚ
IGNORECASEro   r°   rv   rV   rA   rW   rn   r   r•   r+   r    r2   r;   r²   rÀ   rÐ   rÕ   rÚ   rß   rè   rí   rò   rø   rL   rR   r!   r   r   r   rZ   rZ   c   sH  † ñðÐð\Ðð| �ZŠZØÐ%Õ%Ð(:Õ:¸WÕDØ
�
‰
�R—]‘]Õ"ó€Fð 	ˆlØˆgØˆkØÐØÐ"Øˆ[Øˆ^Øˆ{ð	€J÷(ð4 ôó ðð. ×Ñô"ó ð"ð ôó ðð ôó ðõBõ$*ð ô0ó ð0õ*õ=õ:!õ
õ(&/õP:õ<õ<õõ0õ<=õ#÷**@÷X;ó ;r   rZ   z^([0-9]+)((?:a|b|c|rc)[0-9]+)$c               ó    € V ^8„  d   QhRRRR/# )r   r   r&   r   ú	list[str]r   )r   s   "r   r   r   v  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_regexrp   ÚextendÚgroups)r   ÚresultÚepochrÍ   ÚrestrJ   ru   s   &      r   r¾   r¾   v  sy   € ð €Fà×'Ñ'¨Ó,�N€EˆdØ
‡M�M�%—,�,˜3Ôà—
‘
˜3–ˆÜ×$Ñ$ TÓ*ˆßØ�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  r  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   r8   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   )Ú
startswith)Ú.0r¿   r!  s   & €r   Ú	<genexpr>Ú!_is_not_suffix.<locals>.<genexpr>˜  s#   øé € ð Ù1P vˆ×Ñ˜6×"Ð"Ó1Pùs   ƒ!TF)ÚdevÚaÚbÚrcÚpost)Ú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   Úleftr  Úrightr   ztuple[list[str], list[str]]r   )r   s   "r   r   r   �  s"   € ÷ ñ �yð ¨ð Ð7Rñ r   c                ó$  € . . r2VP                  \        \        P                  ! R  V 4      4      4       VP                  \        \        P                  ! R V4      4      4       VP                  V \	        V^ ,          4      R 4       VP                  V\	        V^ ,          4      R 4       VP                  ^R.\        ^ \	        V^ ,          4      \	        V^ ,          4      ,
          4      ,          4       VP                  ^R.\        ^ \	        V^ ,          4      \	        V^ ,          4      ,
          4      ,          4       \        \        P                  P                  V4      4      \        \        P                  P                  V4      4      3# )c                ó"   € V P                  4       # r   ©Úisdigit©Úxs   &r   Ú<lambda>Ú_pad_version.<locals>.<lambda>¡  s
   € ¸¿¹¼r   c                ó"   € V P                  4       # r   r3  r5  s   &r   r7  r8  ¢  s
   € ¸!¿)¹)¼+r   Nr  )	r  rº   r»   r¼   rÆ   ÚinsertÚmaxÚchainÚfrom_iterable)r/  r0  Ú
left_splitÚright_splits   &&  r   rÅ   rÅ   �  s3  € Ø  "�ð ×Ñ”dœ9×.Ò.Ñ/DÀdÓKÓLÔMØ×Ñ”tœI×/Ò/Ñ0EÀuÓMÓNÔOð ×Ñ�dœ3˜z¨!�}Ó-Ð/Ð0Ô1Ø×Ñ�uœS ¨Q¥Ó0Ð2Ð3Ô4ð ×Ñ�a˜#˜¤ Q¬¨K¸­NÓ(;¼cÀ*ÈQÅ-Ó>PÕ(PÓ!QÕQÔRØ×Ñ�q˜3˜%¤# a¬¨Z¸­]Ó);¼cÀ+ÈaÅ.Ó>QÕ)QÓ"RÕRÔSô 	ŒY�_‰_×*Ñ*¨:Ó6Ó7ÜŒY�_‰_×*Ñ*¨;Ó7Ó8ðð r   c                  óê   € ] tR tRtRtRR R l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 R lltR!R R lltRtR# )"ÚSpecifierSeti²  zÀ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.
Nc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú
specifierszstr | Iterable[Specifier]rA   r?   r   rF   r   )r   s   "r   r   ÚSpecifierSet.__annotate__¹  s(   € ÷ $(ñ $(à-ð$(ð !ð$(ð 
ñ	$(r   c                ó0  € \        V\        4      '       de   VP                  R4       Uu. uF*  q3P                  4       '       g   K  VP                  4       NK,  	  pp\	        \        \        V4      4      V n        M\	        V4      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.
Ú,N)	r   r&   r  rr   Ú	frozensetÚmaprZ   Ú_specsrt   )r*   rC  rA   ÚsÚsplit_specifierss   &&&  r   rv   ÚSpecifierSet.__init__¹  su   € ô, �j¤#×&Ò&ð 4>×3CÑ3CÀCÔ3HÓVÑ3H¨aÏGÉGÏI¤	 §¡¦	Ñ3HÐÐVô $¤C¬	Ð3CÓ$DÓEˆD�Kô $ JÓ/ˆDŒKð (Öùò  Ws   ªBÁBc               ó   € V ^8„  d   QhRR/# r>   r   )r   s   "r   r   rD  à  s   € ÷ 7ñ 7˜[ñ 7r   c                	óî   € V P                   e   V P                   # V P                  '       g   R # \        ;QJ d&    R V P                   4       F  '       g   K   R# 	  R# ! R V P                   4       4      # )Nc              3  ó8   "  € T F  qP                   x € K  	  R # 5ir   ©rA   ©r%  rJ  s   & r   r&  Ú+SpecifierSet.prereleases.<locals>.<genexpr>î  s   é € Ð6©+ Q—=–=«+ùó   ‚TF)rt   rI  r-  r)   s   &r   rA   ÚSpecifierSet.prereleasesß  s]   € ð ×ÑÒ(Ø×$Ñ$Ð$ð
 �{�{ˆ{Ù÷ ‹sÑ6¨$¯+ª+Ó6�sŒsÐ6ŠsÐ6ˆsÑ6¨$¯+ª+Ó6Ó6Ð6r   c               ó    € V ^8„  d   QhRRRR/# rD   r   )r   s   "r   r   rD  ñ  r€   r   c                	ó   € Wn         R # r   r‚   rH   s   &&r   rA   rT  ð  rƒ   r   c               ó   € V ^8„  d   QhRR/# r%   r   )r   s   "r   r   rD  ô  s   € ÷ 5ñ 5˜#ñ 5r   c                óf   € V P                   e   RV P                  : 2MR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�   z<SpecifierSet(r‘   )rt   rA   r&   r“   s   & r   r•   ÚSpecifierSet.__repr__ô  sD   € ð × Ñ Ò,ð ˜T×-Ñ-Ñ0Ñ1àð 	ð  ¤ D£	™}¨S¨E°Ð4Ð4r   c               ó   € V ^8„  d   QhRR/# r%   r   )r   s   "r   r   rD  	  s   € ÷ =ñ =˜ñ =r   c                óX   € 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'
rF  c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   )r&   rQ  s   & r   r&  Ú'SpecifierSet.__str__.<locals>.<genexpr>  s   é € Ð;©{¨!œs 1Ÿv˜v«{ùrS  )r  ÚsortedrI  r)   s   &r   r+   ÚSpecifierSet.__str__	  s"   € ð �x‰xœÑ;¨t¯{ª{Ó;Ó;Ó<Ð<r   c               ó   € V ^8„  d   QhRR/# r/   r   )r   s   "r   r   rD    s   € ÷ !ñ !˜#ñ !r   c                	ó,   € \        V P                  4      # r   )r¤   rI  r)   s   &r   r2   ÚSpecifierSet.__hash__  s   € Ü�D—K‘KÓ Ð r   c               ó    € V ^8„  d   QhRRRR/# )r   r6   zSpecifierSet | strr   rA  r   )r   s   "r   r   rD    s   € ÷ ñ Ð/ð °Lñ r   c                ó  € \        V\        4      '       d   \        V4      pM\        V\        4      '       g   \        # \        4       p\	        V P
                  VP
                  ,          4      Vn        V P                  f"   VP                  e   VP                  Vn        V# V P                  e"   VP                  f   V P                  Vn        V# V P                  VP                  8X  d   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   r&   rA  r¨   rG  rI  rt   Ú
ValueError)r*   r6   Ú	specifiers   && r   Ú__and__ÚSpecifierSet.__and__  sé   € ô �eœS×!Ò!Ü  Ó'‰EÜ˜E¤<×0Ò0Ü!Ð!ä “Nˆ	Ü$ T§[¡[°5·<±<Õ%?Ó@ˆ	Ôà×ÑÒ$¨×);Ñ);Ò)GØ%*×%7Ñ%7ˆIÔ"ð Ðð ×ÑÒ*¨u×/AÑ/AÒ/IØ%)×%6Ñ%6ˆIÔ"ð Ðð ×Ñ %×"4Ñ"4Ô4Ø%)×%6Ñ%6ˆIÔ"ð Ðô	 ØXóð r   c               ó    € V ^8„  d   QhRRRR/# r5   r   )r   s   "r   r   rD  8  s   € ÷ +ñ +˜Fð + tñ +r   c                óÎ   € \        V\        \        34      '       d   \        \        V4      4      pM\        V\        4      '       g   \        # V P
                  VP
                  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&   rZ   rA  r¨   rI  r:   s   &&r   r;   ÚSpecifierSet.__eq__8  sJ   € ô& �eœc¤9Ð-×.Ò.Ü ¤ U£Ó,‰EÜ˜E¤<×0Ò0Ü!Ð!à�{‰{˜eŸl™lÑ*Ð*r   c               ó   € V ^8„  d   QhRR/# r/   r   )r   s   "r   r   rD  R  s   € ÷  ñ  ˜ñ  r   c                ó,   € \        V P                  4      # )z7Returns the number of specifiers in this specifier set.)rÆ   rI  r)   s   &r   Ú__len__ÚSpecifierSet.__len__R  s   € ä�4—;‘;ÓÐr   c               ó   € V ^8„  d   QhRR/# )r   r   zIterator[Specifier]r   )r   s   "r   r   rD  V  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')>]
)ÚiterrI  r)   s   &r   Ú__iter__ÚSpecifierSet.__iter__V  s   € ô �D—K‘KÓ Ð r   c               ó    € V ^8„  d   QhRRRR/# )r   rJ   r   r   r8   r   )r   s   "r   r   rD  `  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")
False
>>> "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   rJ   r   rA   r?   Ú	installedr   r8   r   )r   s   "r   r   rD  u  s8   € ÷ 7Sñ 7Sàð7Sð !ð7Sð ð	7Sð
 
ñ7Sr   c                óž  aa€ \        S\        4      '       g   \        S4      oSf   V P                  oS'       g   SP                  '       d   R# V'       d(   SP                  '       d   \        SP                  4      o\
        ;QJ d*    VV3R lV P                   4       F  '       d   K   R# 	  R# ! VV3R lV P                   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 uses :attr:`prereleases` to determine
    whether or not prereleases are allowed.

>>> 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")
False
>>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True).contains("1.3.0a1")
True
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True)
True
Fc              3  óH   <"  € T F  qP                  SSR 7      x € K  	  R# 5i)rP  Nrö   )r%  rJ  rJ   rA   s   & €€r   r&  Ú(SpecifierSet.contains.<locals>.<genexpr>¬  s   øé € ÐRÁkÀ—:‘:˜d°�:×<Ð<Ãkùs   ƒ"T)r   r	   rA   r}   ræ   ÚallrI  )r*   rJ   rA   ry  s   &ff&r   rL   ÚSpecifierSet.containsu  s’   ù€ ô< ˜$¤×(Ò(Ü˜4“=ˆDð
 ÒØ×*Ñ*ˆK÷ ˜t×1×1Ð1Ùç˜×+×+Ð+Ü˜4×,Ñ,Ó-ˆD÷ ‹sÕRÀdÇkÂkÓR�sŒsÐRŠsÐRˆsÕRÀdÇkÂkÓRÓRÐRr   c               ó$   € V ^8„  d   QhRRRRRR/# rO   r   )r   s   "r   r   rD  ®  s)   € ÷ M"ñ M"Ø4ðM"ØCNðM"à	%ñM"r   c                óÎ  € Vf   V P                   pV P                  '       d;   V P                   F  pVP                  V\        V4      R7      pK!  	  \	        V4      # . p. pV FV  p\        V4      pVP                  '       d&   V'       g   V'       g   VP                  V4       KC  KE  VP                  V4       KX  	  V'       g   V'       d   Vf   \	        V4      # \	        V4      # )a.  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 be intelligently decide whether to allow
    prereleases or not (based on the :attr:`prereleases` attribute, and
    whether the only versions matching are prereleases).

This method is smarter than just ``filter(SpecifierSet(...).contains, [...])``
because it implements the rule from :pep:`440` that a prerelease item
SHOULD be accepted if no other versions match the given specifier.

>>> 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"]))
[]
>>> 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']

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']
rP  )rA   rI  rR   r8   rr  r   r}   r  )r*   rP   rA   rk   Úfilteredr  rJ   r  s   &&&     r   rR   ÚSpecifierSet.filter®  sÈ   € ðX ÒØ×*Ñ*ˆKð
 �;�;ˆ;ØŸœ�ØŸ;™; x¼TÀ+Ó=N˜;ÓO’ñ $ä˜“>Ð!ð
 24ˆHØ:<Ðã �Ü!0°Ó!6�ð "×/×/Ð/¿ß#Ø)×0Ñ0°Ö6ñ $ð —O‘O DÖ)ñ !÷ × 1°kÒ6IÜÐ-Ó.Ð.ä˜“>Ð!r   )rt   rI  r  )NNr   )r   r   r   r   r    rv   rV   rA   rW   r•   r+   r2   rg  r;   rn  rs  rø   rL   rR   r!   r   r   r   rA  rA  ²  sv   † ñ÷$(ðL ô7ó ð7ð  ×Ñô"ó ð"õ5õ*=õ!õõ>+õ4 õ!õ#÷*7S÷rM"ó M"r   rA  )"r    Ú
__future__r   rT   r»   r
  Útypingr   r   r   r   r   Úutilsr   r   r	   r&   r   r
   r8   r¬   r   re  r   ÚABCMetar#   rZ   r  r  r¾   r¹   r½   rÅ   rA  r   r   r   Ú<module>r‡     s¸   ðñõ #ã 
Û Û 	ß ?Õ ?å 'Ý à˜ ˜Õ%€ÙÐ1¸ÔIÐ Ø˜W c˜N¨DÐ0Õ1Ð õô	�zô 	ô4˜cŸk™kõ 4ônM�ô Mð` —
’
Ð<Ó=€õõ,'õõô*I"�=ö I"r   