CasperSecurity

Current Path : /usr/lib/python3.10/distutils/__pycache__/
Upload File :
Current File : //usr/lib/python3.10/distutils/__pycache__/versionpredicate.cpython-310.pyc

o

��bc
�@s�dZddlZddlZddlZe�dej�Ze�d�Ze�d�Z	dd�Z
ejejej
ejejejd�ZGd	d
�d
�Zdadd�ZdS)
zBModule for parsing and testing package version predicate strings.
�Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6t�|�}|s
td|��|��\}}|tj�|�fS)zVParse a single version comparison.

    Return (comparison string, StrictVersion)
    z"bad package restriction syntax: %r)�re_splitComparison�match�
ValueError�groups�	distutils�version�
StrictVersion)�pred�res�comp�verStr�r
�1/usr/lib/python3.10/distutils/versionpredicate.py�splitUps

r)�<z<=z==�>z>=z!=c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�VersionPredicatea�Parse and test package version predicates.

    >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)')

    The `name` attribute provides the full dotted name that is given::

    >>> v.name
    'pyepat.abc'

    The str() of a `VersionPredicate` provides a normalized
    human-readable version of the expression::

    >>> print(v)
    pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3)

    The `satisfied_by()` method can be used to determine with a given
    version number is included in the set described by the version
    restrictions::

    >>> v.satisfied_by('1.1')
    True
    >>> v.satisfied_by('1.4')
    True
    >>> v.satisfied_by('1.0')
    False
    >>> v.satisfied_by('4444.4')
    False
    >>> v.satisfied_by('1555.1b3')
    False

    `VersionPredicate` is flexible in accepting extra whitespace::

    >>> v = VersionPredicate(' pat( ==  0.1  )  ')
    >>> v.name
    'pat'
    >>> v.satisfied_by('0.1')
    True
    >>> v.satisfied_by('0.2')
    False

    If any version numbers passed in do not conform to the
    restrictions of `StrictVersion`, a `ValueError` is raised::

    >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)')
    Traceback (most recent call last):
      ...
    ValueError: invalid version number '1.2zb3'

    It the module or package name given does not conform to what's
    allowed as a legal module or package name, `ValueError` is
    raised::

    >>> v = VersionPredicate('foo-bar')
    Traceback (most recent call last):
      ...
    ValueError: expected parenthesized list: '-bar'

    >>> v = VersionPredicate('foo bar (12.21)')
    Traceback (most recent call last):
      ...
    ValueError: expected parenthesized list: 'bar (12.21)'

    cCs�|��}|s
td��t�|�}|std|��|��\|_}|��}|rMt�|�}|s1td|��|��d}dd�|�d�D�|_|jsKtd|��d	Sg|_d	S)
z*Parse a version predicate string.
        zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|]}t|��qSr
)r)�.0�aPredr
r
r�
<listcomp>tsz-VersionPredicate.__init__.<locals>.<listcomp>�,zempty parenthesized list in %rN)	�stripr�re_validPackagerr�name�re_paren�splitr	)�self�versionPredicateStrr�paren�strr
r
r�__init__`s(

��
zVersionPredicate.__init__cCs4|jrdd�|jD�}|jdd�|�dS|jS)NcSs g|]\}}|dt|��qS)� )r)r�cond�verr
r
rr}s z,VersionPredicate.__str__.<locals>.<listcomp>z (z, �))r	r�join)r�seqr
r
r�__str__{szVersionPredicate.__str__cCs(|jD]\}}t|||�sdSqdS)z�True if version is compatible with all the predicates in self.
        The parameter version must be acceptable to the StrictVersion
        constructor.  It may be either a string or StrictVersion.
        FT)r	�compmap)rrr"r#r
r
r�satisfied_by�s
�zVersionPredicate.satisfied_byN)�__name__�
__module__�__qualname__�__doc__r r'r)r
r
r
rrs
@rcCsdtdurt�dtj�a|��}t�|�}|std|��|�d�p"d}|r+tj	�
|�}|�d�|fS)a9Return the name and optional version number of a provision.

    The version number, if given, will be returned as a `StrictVersion`
    instance, otherwise it will be `None`.

    >>> split_provision('mypkg')
    ('mypkg', None)
    >>> split_provision(' mypkg( 1.2 ) ')
    ('mypkg', StrictVersion ('1.2'))
    Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r��)�
_provision_rx�re�compile�ASCIIrrr�grouprrr)�value�mr#r
r
r�split_provision�s�
r7)r-r1�distutils.versionr�operatorr2r3rrrr�lt�le�eq�gt�ge�ner(rr0r7r
r
r
r�<module>s �

�n
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY