Ë
    óÿæi6  ã                   óž   — d dl Z d dlZddlmZ e j                   ee j                  «       ee j                  «      z  z   Z G d„ d«      Z	d„ Z
y)é    Né   )Úlegacy_end_markerc                   ó`   — e Zd ZU dZeed<   efdefd„Zd„ Ze	d„ «       Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zy)Ú
Translatorzã
    >>> Translator('xyz')
    Traceback (most recent call last):
    ...
    AssertionError: Invalid separators

    >>> Translator('')
    Traceback (most recent call last):
    ...
    AssertionError: Invalid separators
    Úsepsc                 óZ   — |rt        |«      t        t        «      k  sJ d«       ‚|| _        y )NzInvalid separators)ÚsetÚ_default_sepsr   )Úselfr   s     ú^/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/zipp/glob.pyÚ__init__zTranslator.__init__   s(   € Ùœ˜D›	¤S¬Ó%7Ò7ÐMÐ9MÓMÐ7Øˆ�	ó    c                 ó`   — | j                  | j                  | j                  |«      «      «      S )zH
        Given a glob pattern, produce a regex that matches it.
        )ÚextendÚ
match_dirsÚtranslate_core©r   Úpatterns     r   Ú	translatezTranslator.translate   s'   € ð �{‰{˜4Ÿ?™?¨4×+>Ñ+>¸wÓ+GÓHÓIÐIr   c                 ó   — 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)\z© r   s     r   r   zTranslator.extend"   s   € ð �w�i˜sÐ#Ð#r   c                 ó   — |› d�S )z„
        Ensure that zipfile.Path directory names are matched.

        zipfile.Path directory names always end in a slash.
        z[/]?r   r   s     r   r   zTranslator.match_dirs.   s   € ð �)˜4Ð Ð r   c           
      óž   — | j                  |«       dj                  t        | j                  t	        | j                  |«      «      «      «      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   s     r   r   zTranslator.translate_core6   s<   € ð 	×Ñ˜GÔ$Ø�w‰w”s˜4Ÿ<™<¬°$×2EÑ2EÀgÓ2NÓ)OÓPÓQÐQr   c                 ó  — |j                  d«      xsu t        j                  |j                  d«      «      j                  dd«      j                  ddt        j                  | j                  «      › d�«      j                  dd	«      S )
zM
        Perform the replacements for a match from :func:`separate`.
        r	   r   z\*\*z.*z\*ú[^z]*z\?z[^/])ÚgroupÚreÚescaper   r   )r   Úmatchs     r   r   zTranslator.replaceE   si   € ð �{‰{˜5Ó!ò 
Ü�I‰I�e—k‘k !“nÓ%ß‰W�X˜uÓ%ß‰W�U˜r¤"§)¡)¨D¯I©IÓ"6Ð!7°rÐ:Ó;ß‰W�U˜GÓ$ð		
r   c                 ó°   — dt        j                  | j                  «      › d�}t        j                  ||«      }t	        d„ |D «       «      rt        d«      ‚y)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
        Ú[ú]+c              3   ó2   K  — | ]  }d |v xr |d k7  –— Œ y­w)z**Nr   )Ú.0Úsegments     r   Ú	<genexpr>z,Translator.restrict_rglob.<locals>.<genexpr>[   s!   è ø€ ÐKÁ(°wˆt�wˆÒ2 7¨d¡?Ó2Á(ùs   ‚z&** must appear alone in a path segmentN)r$   r%   r   ÚsplitÚanyÚ
ValueError)r   r   Úseps_patternÚsegmentss       r   r   zTranslator.restrict_rglobP   sP   € ð œBŸI™I d§i¡iÓ0Ð1°Ð4ˆÜ—8‘8˜L¨'Ó2ˆÜÑKÁ(ÓKÔKÜÐEÓFÐFð Lr   c                 ó|   — d„ }dt        j                  | j                  «      › d�}t        j                  |||«      S )z@
        Ensure that * will not match an empty segment.
        c                 ó6   — | j                  d«      }|dk(  rdS |S )Nr   Ú*z?*)r#   )r&   r,   s     r   Úhandle_segmentz1Translator.star_not_empty.<locals>.handle_segmentc   s    € Ø—k‘k !“nˆGØ" cš>�4Ð6¨wÐ6r   r"   r)   )r$   r%   r   Úsub)r   r   r6   Únot_seps_patterns       r   r    zTranslator.star_not_empty^   s:   € ò
	7ð !¤§¡¨4¯9©9Ó!5Ð 6°bÐ9ÐÜ�v‰vÐ&¨¸Ó@Ð@r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r
   r   r   r   r   r   r   r   r   r    r   r   r   r   r   	   sS   … ñ
ð ƒIà#0ñ ˜Só òJð ñ	$ó ð	$ò!òRò	
òGó
Ar   r   c                 ó.   — t        j                  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   s    r   r   r   k   s   € ô �;‰;ÐEÀwÓOÐOr   )Úosr$   Úcompat.py313r   Úsepr=   ÚaltsepÚboolr
   r   r   r   r   r   Ú<module>rF      sF   ðÛ 	Û 	å +à—‘™˜RŸY™Y›©$¨r¯y©y«/Ñ9Ñ9€÷_Añ _AóD	Pr   