HEX
Server: LiteSpeed
System: Linux s787.bom1.mysecurecloudhost.com 4.18.0-477.13.1.lve.el8.x86_64 #1 SMP Thu Jun 1 16:40:47 EDT 2023 x86_64
User: mobilech (5348)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/zipp/__pycache__/glob.cpython-310.pyc
o

;jC
�@sPddlZddlZddlmZejeej�eej�ZGdd�d�Z	dd�Z
dS)�N�)�legacy_end_markerc@sheZdZUdZeed<efdefdd�Zdd�Ze	dd��Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�ZdS)�
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	�=/opt/saltstack/salt/lib/python3.10/site-packages/zipp/glob.py�__init__s
zTranslator.__init__cCs|�|�|�|���S)zH
        Given a glob pattern, produce a regex that matches it.
        )�extend�
match_dirs�translate_core�r�patternr	r	r
�	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)\zr	rr	r	r
r"s
zTranslator.extendcCs
|�d�S)z�
        Ensure that zipfile.Path directory names are matched.

        zipfile.Path directory names always end in a slash.
        z[/]?r	rr	r	r
r
.s
zTranslator.match_dirscCs&|�|�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_emptyrr	r	r
r6s
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�matchr	r	r
rEs
�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�segmentr	r	r
�	<genexpr>\s�z,Translator.restrict_rglob.<locals>.<genexpr>z&** must appear alone in a path segmentN)rrr�split�any�
ValueError)rrZseps_pattern�segmentsr	r	r
rQs
	�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)rr!r	r	r
�handle_segmentds
z1Translator.star_not_empty.<locals>.handle_segmentrr)rrr�sub)rrr(Znot_seps_patternr	r	r
r_szTranslator.star_not_emptyN)�__name__�
__module__�__qualname__�__doc__�str�__annotations__rrrrrr
rrrrr	r	r	r
r	s

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)rr	r	r
rls	r)�osrZcompat.py313r�sepr.�altsep�boolrrrr	r	r	r
�<module>sc