HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/setuptools/_vendor/zipp/__pycache__/glob.cpython-310.pyc
o

��h
�@sDddlZddlZejeej�eej�ZGdd�d�Zdd�ZdS)�Nc@s\eZdZUdZeed<efdefdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dS)�
Translatorz�
    >>> Translator('xyz')
    Traceback (most recent call last):
    ...
    AssertionError: Invalid separators

    >>> Translator('')
    Traceback (most recent call last):
    ...
    AssertionError: Invalid separators
    �sepscCs&|r
t|�tt�ksJd��||_dS)NzInvalid separators)�set�
_default_sepsr)�selfr�r�G/usr/local/lib/python3.10/dist-packages/setuptools/_vendor/zipp/glob.py�__init__s
zTranslator.__init__cCs|�|�|��S)zH
        Given a glob pattern, produce a regex that matches it.
        )�extend�translate_core�r�patternrrr�	translateszTranslator.translatecCsd|�d�S)z�
        Extend regex for pattern-wide concerns.

        Apply '(?s:)' to create a non-matching group that
        matches newlines (valid on Unix).

        Append '\Z' to imply fullmatch even when match is used.
        z(?s:z)\Zrrrrrr
!�	zTranslator.extendcCs&|�|�d�t|jt|�|����S)a?
        Given a glob pattern, produce a regex that matches it.

        >>> t = Translator()
        >>> t.translate_core('*.txt').replace('\\\\', '')
        '[^/]*\\.txt'
        >>> t.translate_core('a?txt')
        'a[^/]txt'
        >>> t.translate_core('**/*').replace('\\\\', '')
        '.*/[^/][^/]*'
        �)�restrict_rglob�join�map�replace�separate�star_not_emptyrrrrr,s
zTranslator.translate_corecCsB|�d�p t�|�d���dd��ddt�|j��d���dd	�S)
zM
        Perform the replacements for a match from :func:`separate`.
        rrz\*\*z.*z\*�[^z]*z\?z[^/])�group�re�escaperr)r�matchrrrr;s
�zTranslator.replacecCs>dt�|j��d�}t�||�}tdd�|D��rtd��dS)z�
        Raise ValueError if ** appears in anything but a full path segment.

        >>> Translator().translate('**foo')
        Traceback (most recent call last):
        ...
        ValueError: ** must appear alone in a path segment
        �[�]+css �|]}d|vo|dkVqdS)z**Nr)�.0�segmentrrr�	<genexpr>Qs�z,Translator.restrict_rglob.<locals>.<genexpr>z&** must appear alone in a path segmentN)rrr�split�any�
ValueError)rr
�seps_pattern�segmentsrrrrFs
	�zTranslator.restrict_rglobcCs*dd�}dt�|j��d�}t�|||�S)z@
        Ensure that * will not match an empty segment.
        cSs|�d�}|dkrdS|S)Nr�*z?*)r)rrrrr�handle_segmentYs
z1Translator.star_not_empty.<locals>.handle_segmentrr)rrr�sub)rr
r'�not_seps_patternrrrrTszTranslator.star_not_emptyN)�__name__�
__module__�__qualname__�__doc__�str�__annotations__rr	rr
rrrrrrrrrs
rcCst�d|�S)z�
    Separate out character sets to avoid translating their contents.

    >>> [m.group(0) for m in separate('*.txt')]
    ['*.txt']
    >>> [m.group(0) for m in separate('a[?]txt')]
    ['a', '[?]', 'txt']
    z+([^\[]+)|(?P<set>[\[].*?[\]])|([\[][^\]]*$))r�finditer)r
rrrrarr)	�osr�sepr.�altsep�boolrrrrrrr�<module>s
Y