HEX
Server: LiteSpeed
System: Linux ws4.angoweb.net 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 11 04:57:59 EST 2025 x86_64
User: tswangoe (2287)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Upload Files
File: //lib/python3.9/site-packages/zipp/__pycache__/glob.cpython-39.opt-1.pyc
a

��f��@sDddlZddlZejeej�eej�ZGdd�d�Zdd�ZdS)�Nc@sdeZdZUdZeed<efed�dd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�ZdS)�
Translatorz�
    >>> Translator('xyz')
    Traceback (most recent call last):
    ...
    AssertionError: Invalid separators

    >>> Translator('')
    Traceback (most recent call last):
    ...
    AssertionError: Invalid separators
    �seps�rcCs
||_dS)Nr)�selfr�r�-/usr/lib/python3.9/site-packages/zipp/glob.py�__init__szTranslator.__init__cCs|�|�|�|���S)zH
        Given a glob pattern, produce a regex that matches it.
        )�extend�
match_dirs�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	!s	zTranslator.extendcCs
|�d�S)z�
        Ensure that zipfile.Path directory names are matched.

        zipfile.Path directory names always end in a slash.
        z[/]?rrrrrr
,szTranslator.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_emptyrrrrr4s
zTranslator.translate_corecCsB|�d�p@t�|�d���dd��ddt�|j��d���dd	�S)
zM
        Perform the replacements for a match from :func:`separate`.
        �setrz\*\*z.*z\*�[^z]*z\?z[^/])�group�re�escaperr)r�matchrrrrCs
����zTranslator.replacecCs>dt�|j��d�}t�||�}tdd�|D��r:td��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>Y�z,Translator.restrict_rglob.<locals>.<genexpr>z&** must appear alone in a path segmentN)rrr�split�any�
ValueError)rr
Zseps_pattern�segmentsrrrrNs	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_segmentas
z1Translator.star_not_empty.<locals>.handle_segmentrr)rrr�sub)rr
r'Znot_seps_patternrrrr\szTranslator.star_not_emptyN)�__name__�
__module__�__qualname__�__doc__�str�__annotations__�
_default_sepsrrr	r
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
rrrris	r)	�osr�sepr-�altsep�boolr/rrrrrr�<module>sa