403Webshell
Server IP : 178.105.222.151  /  Your IP : 216.73.216.38
Web Server : nginx/1.28.3
System : Linux MNK 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.5.4
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/lib/python3/dist-packages/packaging/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3/dist-packages/packaging/__pycache__/specifiers.cpython-314.pyc
+
Z��i]����Rt^RIHt^RIt^RIt^RIt^RIHtHtH	t	H
t
HtHt^RI
Ht^RIHtHt]]]3,t]!R]R7t]]].]3,tRR	ltR
RltRR
lt!RR]4t!RR]P8R7t!RR]4t]P>!R4t RRlt!RRlt"RRlt#RRlt$!RR]4t%R#) z�
.. testsetup::

    from packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier
    from packaging.version import Version
)�annotationsN)�Callable�Final�Iterable�Iterator�TypeVar�Union)�canonicalize_version)�InvalidVersion�Version�UnparsedVersionVar)�boundc� �V^8�dQhRRRR/#)��version�UnparsedVersion�return�Version | None�)�formats"�6/usr/lib/python3/dist-packages/packaging/specifiers.py�__annotate__rs����_����c�r�\V\4'g\V4pV#V# \dR#i;i�N)�
isinstancerr
�rs&r�_coerce_versionrs=���g�w�'�'�	��g�&�G��N�7�N���	��	�s�'�6�6c� �V^8�dQhRRRR/#�rrrrr)rs"rrr#s��+�+�W�+��+rc�&�VPRR7#)N)�local��__replace__rs&r�_public_versionr$#s�����T��*�*rc� �V^8�dQhRRRR/#rr)rs"rrr's��J�J�7�J�w�Jrc�,�VPRRRRR7#)N)�pre�post�devr!r"rs&r�
_base_versionr*'s�����4�d��D��I�Irc��]tRt^+tRtRtR#)�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'
rN)�__name__�
__module__�__qualname__�__firstlineno__�__doc__�__static_attributes__rrrr,r,+s��rr,c�l�]tRt^7tRtRt]RRl4t]PRRl4t
]PRRl4t]PRRl4t]]PR	R
l44t
]
PRRl4t
]PRRRll4t]PRRRll4tRtR
#)�
BaseSpecifierc��V^8�dQhRR/#�rr�strr)rs"rr�BaseSpecifier.__annotate__<s����c�rc
��\V4#)z Internal property for match_args�r7��selfs&r�_str�BaseSpecifier._str;s���4�y�rc��V^8�dQhRR/#r6r)rs"rrr8As�����rc
��R#)zv
Returns the str representation of this Specifier-like object. This
should be representative of the Specifier itself.
Nrr;s&r�__str__�BaseSpecifier.__str__@��rc��V^8�dQhRR/#�rr�intr)rs"rrr8Hs����#�rc
��R#)z6
Returns a hash value for this Specifier-like object.
Nrr;s&r�__hash__�BaseSpecifier.__hash__GrCrc� �V^8�dQhRRRR/#�r�other�objectr�boolr)rs"rrr8Ns����F��t�rc
��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<rLs&&r�__eq__�BaseSpecifier.__eq__MrCrc��V^8�dQhRR/#�rr�bool | Noner)rs"rrr8Xs����[�rc
��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.
Nrr;s&r�prereleases�BaseSpecifier.prereleasesVrCrc� �V^8�dQhRRRR/#)r�valuerNr�Noner)rs"rrr8`s������$�rc
��R#)zASetter for :attr:`prereleases`.

:param value: The value to set.
Nr�r<rZs&&rrWrX_rCrNc�$�V^8�dQhRRRRRR/#)r�itemr7rWrUrrNr)rs"rrr8gs!����S��{��d�rc
��R#)zB
Determines if the given item is contained within this specifier.
Nr�r<r_rWs&&&r�contains�BaseSpecifier.containsfrCrc�$�V^8�dQhRRRRRR/#�r�iterablezIterable[UnparsedVersionVar]rWrUrzIterator[UnparsedVersionVar]r)rs"rrr8ms$����4��CN��	%�rc
��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<rfrWs&&&r�filter�BaseSpecifier.filterlrCrr)r=r)r-r.r/r0�	__slots__�__match_args__�propertyr=�abc�abstractmethodrArHrQrW�setterrbrhr2rrrr4r47s����I��N�
����	������	������
	��������������������	������
	�����rr4)�	metaclassc�N�]tRt^vt$RtRHtRtRt]P!R],],R,]P]P,4tRRRRR	R
RRR
RRRRRRR/t
R]R&RIRRlltRRltRRlt]RRl4t]P(R R!l4t]R"R#l4t]R$R%l4tR&R'ltR(R)lt]R*R+l4tR,R-ltR.R/ltR0R1ltR2R3ltR4R5ltR6R7ltR8R9lt R:R;lt!R<R=lt"R>R?lt#R@RAlt$RBRClt%RJRDREllt&RJRFRGllt'RHt(R#)K�	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*�~=�
compatible�==�equal�!=�	not_equalz<=�less_than_equal�>=�greater_than_equal�<�	less_than�>�greater_than�===�	arbitraryr�
_operatorsNc�$�V^8�dQhRRRRRR/#)r�specr7rWrUrr[r)rs"rr�Specifier.__annotate__�s!��>�>�S�>�K�>�4�>rc
�
�VPPV4pV'g\RV:24hVPR4P	4VPR4P	43VnW nRVnR#)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).
zInvalid specifier: �operatorrN)�_regex�	fullmatchr,�group�strip�_spec�_prereleases�
_spec_version)r<r�rW�matchs&&& r�__init__�Specifier.__init__�su�����%�%�d�+���"�%8���#A�B�B�
�K�K�
�#�)�)�+��K�K�	�"�(�(�*�'
��
�(��:>��rc� �V^8�dQhRRRR/#)rrr7rrr)rs"rrr�s��
!�
!��
!��
!rc
��VPe,VP^,V8XdVP^,#\V4pVfR#W3VnV#)zDOne element cache, as only one spec Version is needed per Specifier.N)r�r)r<r�version_specifiers&& r�_get_spec_version�Specifier._get_spec_versionsV�����)�d�.@�.@��.C�w�.N��%�%�a�(�(�+�G�4���$��%�9��� � rc� �V^8�dQhRRRR/#)rrr7rrr)rs"rrr�s����S��W�rc
�4�VPV4pVfQhV#)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�)r<r�spec_versions&& r�_require_spec_version�Specifier._require_spec_versions&���-�-�g�6���'�'�'��rc��V^8�dQhRR/#rTr)rs"rrr�&s����[�rc	��VPe
VP#VPwrVR8wdLVR8XdVPR4'dR#VPV4pVfR#VP'dR#R#)Nrwru�.*FT)r�r��endswithr��
is_prerelease)r<r��version_strrs&   rrW�Specifier.prereleases%s}�����(��$�$�$�!%�
�
����t���4��K�$8�$8��$>�$>���,�,�[�9�G�����$�$�$��rc� �V^8�dQhRRRR/#�rrZrUrr[r)rs"rrr�C���"�"��"��"rc	��WnR#r�r�r]s&&rrWr�B���!�rc��V^8�dQhRR/#r6r)rs"rrr�Gs����#�rc
�(�VP^,#)zHThe operator of this specifier.

>>> Specifier("==1.2.3").operator
'=='
�r�r;s&rr��Specifier.operatorF����z�z�!�}�rc��V^8�dQhRR/#r6r)rs"rrr�Ps�����rc
�(�VP^,#)zIThe version of this specifier.

>>> Specifier("==1.2.3").version
'1.2.3'
r�r;s&rr�Specifier.versionOr�rc��V^8�dQhRR/#r6r)rs"rrr�Xs��B�B�#�Brc
��VPeRVP:2MRpRVPPR\	V4:VR2#)aA representation of the Specifier that shows all internal state.

>>> Specifier('>=1.0.0')
<Specifier('>=1.0.0')>
>>> Specifier('>=1.0.0', prereleases=False)
<Specifier('>=1.0.0', prereleases=False)>
>>> Specifier('>=1.0.0', prereleases=True)
<Specifier('>=1.0.0', prereleases=True)>
�, prereleases=�r|�(�)>)r�rW�	__class__r-r7�r<r's& r�__repr__�Specifier.__repr__XsU��� � �,��T�-�-�0�1��	��4�>�>�*�*�+�1�S��Y�M�#��b�A�Arc��V^8�dQhRR/#r6r)rs"rrr�js��*�*��*rc
�6�RP!VP!#)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{}{})rr�r;s&rrA�Specifier.__str__js���}�}�d�j�j�)�)rc��V^8�dQhRR/#)rrztuple[str, str]r)rs"rrr�us��+�+��+rc	��VPwrVR8XgVPR4'dW3#VPV4p\W1R8gR7pW3#)r�r�rs��strip_trailing_zero)r�r�r�r	)r<r�rr��canonical_versions&    r�_canonical_spec�Specifier._canonical_spects]�� �J�J����u��� 0� 0�� 6� 6��$�$��1�1�'�:��0��4�/?�
���*�*rc��V^8�dQhRR/#rEr)rs"rrr��s��*�*�#�*rc	�,�\VP4#r)�hashr�r;s&rrH�Specifier.__hash__�s���D�(�(�)�)rc� �V^8�dQhRRRR/#rKr)rs"rrr��s��=�=�F�=�t�=rc
��\V\4'dVP\V44pM!\WP4'g\#VP
VP
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
)rr7r�r,�NotImplementedr�rPs&&rrQ�Specifier.__eq__�sm��&�e�S�!�!�
&����s�5�z�2���E�>�>�2�2�!�!��#�#�u�'<�'<�<�<��$�
&�%�%�
&�s�A-�-B�Bc� �V^8�dQhRRRR/#)r�opr7r�CallableOperatorr)rs"rrr��s��!�!��!�(8�!rc	�F�\VRVPV,24pV#)�	_compare_)�getattrr�)r<r��operator_callables&& r�
_get_operator�Specifier._get_operator�s+��.5��I�d�o�o�b�1�2�3�/
��!� rc�$�V^8�dQhRRRRRR/#�r�prospectiverr�r7rrNr)rs"rrr��s!��
�
�w�
�c�
�d�
rc
	���\\\P!\\V444RR4pVR,
pVP
R4!W4;'dVP
R4!W4#)Nr�rzru���)�
_version_join�list�	itertools�	takewhile�_is_not_suffix�_version_splitr�)r<r�r��prefixs&&& r�_compare_compatible�Specifier._compare_compatible�ss�����$�$�^�^�D�5I�J�K�C�R�P�
��
	�$����!�!�$�'��:�
�
�t�?Q�?Q�RV�?W��@
�	
rc�$�V^8�dQhRRRRRR/#r�r)rs"rrr��s!��&/�&/�'�&/��&/��&/rc	�J�VPR4'd\\\V4RR7p\VRRRR7p\V4p\V4p\	We4wrxVR\V4p	W�8H#VP
V4p
V
P'g\V4pW8H#)r�Fr�N���)r�r	r$r��_pad_version�lenr�r!)r<r�r��normalized_prospective�normalized_spec�
split_spec�split_prospective�padded_prospective�_�shortened_prospectiver�s&&&        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� �5�5�d�;�L�
 �%�%�%�-�k�:���.�.rc�$�V^8�dQhRRRRRR/#r�r)rs"rrr��s!��:�:�g�:�S�:�T�:rc	�.�VPW4'*#r)r��r<r�r�s&&&r�_compare_not_equal�Specifier._compare_not_equal�s���&�&�{�9�9�9rc�$�V^8�dQhRRRRRR/#r�r)rs"rrr��s&��P�P�G�P�3�P�4�Prc	�<�\V4VPV48*#r�r$r�r�s&&&r�_compare_less_than_equal�"Specifier._compare_less_than_equal�����{�+�t�/I�/I�$�/O�O�Orc�$�V^8�dQhRRRRRR/#r�r)rs"rrr��s&��P�P�w�P�c�P�d�Prc	�<�\V4VPV48�#rr�r�s&&&r�_compare_greater_than_equal�%Specifier._compare_greater_than_equal�r�rc�$�V^8�dQhRRRRRR/#�rr�r�spec_strr7rrNr)rs"rrr��s!����g�����rc	��VPV4pW8gR#VP'g.VP'd\V4\V48XdR#R#�FT)r�r�r*�r<r�rr�s&&& r�_compare_less_than�Specifier._compare_less_than�sS���)�)�(�3��
�!���"�"�"��)�)�)��k�*�m�D�.A�A��
rc�$�V^8�dQhRRRRRR/#rr)rs"rrr�s!�� � �� �C� �D� rc	��VPV4pW8�gR#VP'g.VP'd\V4\V48XdR#VPe\V4\V48XdR#R#r)r��is_postreleaser*r!rs&&& r�_compare_greater_than�Specifier._compare_greater_thans}���)�)�(�3��
�!���#�#�#��*�*�*��k�*�m�D�.A�A�����(�]��.
�
�4�
 �.!��
rc�$�V^8�dQhRRRRRR/#)rr�z
Version | strr�r7rrNr)rs"rrr�0s!��=�=�m�=�3�=�4�=rc	�h�\V4P4\V4P48H#r)r7�lowerr�s&&&r�_compare_arbitrary�Specifier._compare_arbitrary0s&���;��%�%�'�3�t�9�?�?�+<�<�<rc� �V^8�dQhRRRR/#)rr_z
str | VersionrrNr)rs"rrr�3s��#�#��#�4�#rc
�$�VPV4#)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
�rb�r<r_s&&r�__contains__�Specifier.__contains__3���&�}�}�T�"�"rc�$�V^8�dQhRRRRRR/#)rr_rrWrUrrNr)rs"rrr�Hs'��H�H�_�H�;�H�RV�Hrc	
�N�\\VPV.VR744#)a�Return whether or not the item is contained in this specifier.

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

>>> Specifier(">=1.2.3").contains("1.2.3")
True
>>> Specifier(">=1.2.3").contains(Version("1.2.3"))
True
>>> Specifier(">=1.2.3").contains("1.0.0")
False
>>> Specifier(">=1.2.3").contains("1.3.0a1")
True
>>> Specifier(">=1.2.3", prereleases=False).contains("1.3.0a1")
False
>>> Specifier(">=1.2.3").contains("1.3.0a1")
True
�rW)rNr�rhras&&&rrb�Specifier.containsHs#��2�D����d�V���E�F�G�Grc�$�V^8�dQhRRRRRR/#rer)rs"rrr�cs$��<,�<,�4�<,�CN�<,�	%�<,rc#
�>"�.pRpVeTMVPpVPVP4pVF�p\V4pVf=VPR8Xd*VP	WpP
4'dVx�KJKLKNV!W�P
4'gKhVP'd	V'd	RpVx�K�VeK�VPRJgK�VPV4K�	V'g%VfVPRJd
TRjx�L
R#R#R#R#L5i)a�Filter items in the given iterable, that match the specifier.

:param iterable:
    An iterable that can contain version strings and :class:`Version` instances.
    The items in the iterable will be filtered according to the specifier.
:param prereleases:
    Whether or not to allow prereleases in the returned iterator. If set to
    ``None`` (the default), it will follow the recommendation from :pep:`440`
    and match prereleases if there are no other versions.

>>> 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']
FNr�T)	rWr�r�rrrr�r��append)	r<rfrW�prereleases_versions�found_non_prereleases�include_prereleasesr�r�parsed_versions	&&&      rrh�Specifier.filtercs���0 "�� %��'�2�K��8H�8H�	�
!�.�.�t�}�}�=�� �G�,�W�5�N��%��=�=�E�)�d�.E�.E��\�\�/�/�"�M�/�)�#�>�<�<�@�@�%�3�3�3�7J�,0�)�!�M� �(�T�->�->�e�-K�(�/�/��8� �(&��#��!�!��.�+�+�+�/�$�&�
,�s6�BD�D�0D�8	D�
D�D�5D�D�
D)r�r�r��r�Nr))r-r.r/r0r1rj�_operator_regex_str�_version_regex_str�re�compile�VERBOSE�
IGNORECASEr�r��__annotations__r�r�r�rlrWror�rr�rAr�rHrQr�r�r�r�r�r�rrrrrbrhr2rrrrrrrvsb���;�I���\��|�Z�Z��$�$�'9�9�F�B�
�
�
�R�]�]�"��F�	
�l��g��k����"��[��^�
�{�	�J��	�>�8
!������8���"��"���������B�$*��+��+�*�=�:!�
�(&/�P:�P�P��6 �D=�#�*H�6<,�<,rrrz([0-9]+)((?:a|b|c|rc)[0-9]+)c� �V^8�dQhRRRR/#)rrr7r�	list[str]r)rs"rrr�s����C��I�rc�6�.pVPR4wr#pTPT;'gR4VPR4FRp\P	V4pV'd"VPVP
44KAVPV4KT	V#)aSplit 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_regexr��extend�groups)r�result�epochr��restr_r�s&      rr�r��sy���F��'�'��,�N�E�d�
�M�M�%�,�,�3���
�
�3����'�'��-����M�M�%�,�,�.�)��M�M�$�� ��Mrc� �V^8�dQhRRRR/#)r�
componentsr/rr7r)rs"rrr�s��'�'�i�'�C�'rc�4�VvrVRRPV4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.
r1r3)�join)r=r:r;s&  rr�r��s%���L�E��W�A�c�h�h�t�n�%�&�&rc� �V^8�dQhRRRR/#)r�segmentr7rrNr)rs"rrr�s����C��D�rc�a�\;QJd)V3RlR4F'gKR'*#	R'*#!V3RlR44'*#)c3�F<"�TFpSPV4x�K	R#5ir)�
startswith)�.0r�rAs& �r�	<genexpr>�!_is_not_suffix.<locals>.<genexpr>�s#�����1P�v����6�"�"�1P�s�!TF)r)�a�b�rcr()�any)rAsfrr�r��sM����s��1P��s�s���s���s��1P����rc�$�V^8�dQhRRRRRR/#)r�leftr/�rightrztuple[list[str], list[str]]r)rs"rrr�s"����y����7R�rc�$�..r2VP\\P!RV444VP\\P!RV444VPV\	V^,4R4VPV\	V^,4R4VP^R.\
^\	V^,4\	V^,4,
4,4VP^R.\
^\	V^,4\	V^,4,
4,4\\PPV44\\PPV443#)c�"�VP4#r��isdigit��xs&r�<lambda>�_pad_version.<locals>.<lambda>�s
�����rc�"�VP4#rrQrSs&rrUrV�s
��!�)�)�+rNr2)	r r�r�r�r��insert�max�chain�
from_iterable)rMrN�
left_split�right_splits&&  rr�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��rc���]tRtRtRtRtRRRllt]RRl4t]PRR	l4tR
Rlt
RR
ltRRltRRlt
RRltRRltRRltRRltR RRlltR!RRlltRtR#)"�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�dQhRRRRRR/#)r�
specifierszstr | Iterable[Specifier]rWrUrr[r)rs"rr�SpecifierSet.__annotate__�s(��$(�$(�-�$(�!�$(�
�	$(rc
�0�\V\4'deVPR4Uu.uF*q3P4'gKVP4NK,	pp\	\\V44VnM\	V4VnW nR#uupi)aLInitialize 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)	rr7r5r��	frozenset�maprr�_specsr�)r<rarW�s�split_specifierss&&&  rr��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�(��� Ws�B�Bc��V^8�dQhRR/#rTr)rs"rrrbs����[�rc	��VPe
VP#VP'gR#\;QJd&RVP4F'gKRM	RM!RVP44'dR#R#)Nc3�8"�TFqPx�K	R#5irr�rErhs& rrF�+SpecifierSet.prereleases.<locals>.<genexpr>s���2�k��}�}�k���TF)r�rgrKr;s&rrW�SpecifierSet.prereleasess[�����(��$�$�$�
�{�{�{���3�2�d�k�k�2�3�3�3�2�d�k�k�2�2�2��rc� �V^8�dQhRRRR/#r�r)rs"rrrb%r�rc	��WnR#rr�r]s&&rrWrq$r�rc��V^8�dQhRR/#r6r)rs"rrrb(s��5�5�#�5rc
�f�VPeRVP:2MRpR\V4:VR2#)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�)r�rWr7r�s& rr��SpecifierSet.__repr__(sD��� � �,��T�-�-�0�1��	� ��D�	�}�S�E��4�4rc��V^8�dQhRR/#r6r)rs"rrrb=s��=�=��=rc
�X�RP\RVP444#)a6A 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'
rdc3�8"�TFp\V4x�K	R#5irr:rns& rrF�'SpecifierSet.__str__.<locals>.<genexpr>Hs���;�{�!�s�1�v�v�{�rp)r?�sortedrgr;s&rrA�SpecifierSet.__str__=s"���x�x��;�t�{�{�;�;�<�<rc��V^8�dQhRR/#rEr)rs"rrrbJs��!�!�#�!rc	�,�\VP4#r)r�rgr;s&rrH�SpecifierSet.__hash__Js���D�K�K� � rc� �V^8�dQhRRRR/#)rrLzSpecifierSet | strrr_r)rs"rrrbMs����/��L�rc
���\V\4'd
\V4pM\V\4'g\#\4p\	VP
VP
,4VnVPf"VPeVPVnV#VPeVPeVPVP8XdVPVnV#\R4h)aRReturn 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.)rr7r_r�rergr��
ValueError)r<rL�	specifiers&& r�__and__�SpecifierSet.__and__Ms����e�S�!�!� ��'�E��E�<�0�0�!�!� �N�	�$�T�[�[�5�<�<�%?�@�	�����$��);�);�)G�%*�%7�%7�I�"���
���)�e�.@�.@�.H�
�
�
�%�"4�"4�
4�%)�%6�%6�I�"���	�X��
rc� �V^8�dQhRRRR/#rKr)rs"rrrbls��+�+�F�+�t�+rc
���\V\\34'd\\V44pM\V\4'g\#VP
VP
8H#)a1Whether 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
)rr7rrr_r�rgrPs&&rrQ�SpecifierSet.__eq__lsJ��&�e�c�9�-�.�.� ��U��,�E��E�<�0�0�!�!��{�{�e�l�l�*�*rc��V^8�dQhRR/#rEr)rs"rrrb�s�� � �� rc
�,�\VP4#)z7Returns the number of specifiers in this specifier set.)r�rgr;s&r�__len__�SpecifierSet.__len__�s���4�;�;��rc��V^8�dQhRR/#)rrzIterator[Specifier]r)rs"rrrb�s��!�!�-�!rc
�,�\VP4#)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')>]
)�iterrgr;s&r�__iter__�SpecifierSet.__iter__�s���D�K�K� � rc� �V^8�dQhRRRR/#)rr_rrrNr)rs"rrrb�s��#�#��#�T�#rc
�$�VPV4#)aReturn 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
rrs&&rr�SpecifierSet.__contains__�rrc�(�V^8�dQhRRRRRRRR/#)rr_rrWrU�	installedrrNr)rs"rrrb�s8��&N�&N��&N�!�&N��	&N�

�&Nrc	
��\V4pVeV'dVP'dRpVfTMTp\\VP	V.VR744#)a�Return whether or not the item is contained in this SpecifierSet.

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

>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.2.3")
True
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains(Version("1.2.3"))
True
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.0.1")
False
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1")
True
>>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False).contains("1.3.0a1")
False
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True)
True
Tr)rr�rNr�rh)r<r_rWr�r�
check_items&&&&  rrb�SpecifierSet.contains�sQ��@"�$�'����9��1F�1F�1F��K�$�_�T�'�
��D����j�\�{��K�L�M�Mrc�$�V^8�dQhRRRRRR/#rer)rs"rrrb�s.��[R�[R�4�[R�CN�[R�	%�[Rrc
�Fa	�VfVPe
VPpVP'd<VPFpTPYfRMTR7pK	Ve\V4#M#VRJd\V4#VRJd
V	3RlV4#.p.pRpVFnp\	V4pVf%VPV4VPV4K6VP'dVPV4K[VPV4RpKp	\V'dV4#T4#)aFilter items in the given iterable, that match the specifiers in this set.

:param iterable:
    An iterable that can contain version strings and :class:`Version` instances.
    The items in the iterable will be filtered according to the specifier.
:param prereleases:
    Whether or not to allow prereleases in the returned iterator. If set to
    ``None`` (the default), it will follow the recommendation from :pep:`440`
    and match prereleases if there are no other versions.

>>> 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']

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']
TrFc3�n<"�TF*p\V4;oeSP'dK&Vx�K,	R#5ir)rr�)rEr_rs& �rrF�&SpecifierSet.filter.<locals>.<genexpr>s3����� (��#2�4�#8�8��A�"�0�0��D� (�s�#5�
5)rWrgrhr�rr r�)
r<rfrWr��filtered_items�found_prereleases�found_final_releaser_r$rs
&&&      @rrh�SpecifierSet.filter�s3���N��4�#3�#3�#?��*�*�K�
�;�;�;������;�;��2E�$�;�'���$�
�&��H�~�%�'��d�"��H�~�%��e�#�� (���46��68��#���D�,�T�2�N��%��%�%�d�+�!�(�(��.��-�-�-�!�(�(��.��%�%�d�+�&*�#���&9�N�Q�Q�?P�Q�Qr)r�rgr&)NNr)r-r.r/r0r1rjr�rlrWror�rArHr�rQr�r�rrbrhr2rrrr_r_�s���+�I�$(�L����&���"��"�5�*=�!��>+�4 �!�#�*&N�P[R�[Rrr_)&r1�
__future__rrmr�r)�typingrrrrrr�utilsr	rr
rr7rrrNr�rr$r*r�r,�ABCMetar4rrr*r6r�r�r�r�r_rrr�<module>r�s����#�
��	�F�F�'�,�����%���1��I���W�c�N�D�0�1���+�J�	�z�	�<�c�k�k�<�~i,�
�i,�X�
�
�:�;�
��,'���*KR�=�KRr

Youez - 2016 - github.com/yon3zu
LinuXploit