
    h6                         S SK r S SKrSSKJr  \ R                  \" \ R                  5      \" \ R                  5      -  -   r " S S5      r	S r
g)    N   )legacy_end_markerc                   l    \ rS rSr% Sr\\S'   \4S\4S jjrS r	\
S 5       rS rS rS	 rS
 rS rSrg)
Translator	   z
>>> Translator('xyz')
Traceback (most recent call last):
...
AssertionError: Invalid separators

>>> Translator('')
Traceback (most recent call last):
...
AssertionError: Invalid separators
sepsc                 d    U(       a  [        U5      [        [        5      ::  d   S5       eXl        g )NzInvalid separators)set_default_sepsr   )selfr   s     A/var/www/auris/envauris/lib/python3.13/site-packages/zipp/glob.py__init__Translator.__init__   s&    D	S%77M9MM7	    c                 `    U R                  U R                  U R                  U5      5      5      $ )z8
Given a glob pattern, produce a regex that matches it.
)extend
match_dirstranslate_corer   patterns     r   	translateTranslator.translate   s'     {{4??4+>+>w+GHIIr   c                     SU S3$ )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   Translator.extend"   s     wis##r   c                     U S3$ )zl
Ensure that zipfile.Path directory names are matched.

zipfile.Path directory names always end in a slash.
z[/]?r   r   s     r   r   Translator.match_dirs.   s     )4  r   c           
          U R                  U5        SR                  [        U R                  [	        U R                  U5      5      5      5      $ )z
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   Translator.translate_core6   s<     	G$wws4<<$2E2Eg2N)OPQQr   c                     UR                  S5      =(       dw    [        R                  " UR                  S5      5      R                  SS5      R                  SS[        R                  " U R                  5       S35      R                  SS	5      $ )
z=
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#   Translator.replaceE   si     {{5! 
IIekk!n%WXu%WUr"))DII"6!7r:;WUG$		
r   c                     S[         R                  " U R                  5       S3n[         R                  " X!5      n[	        S U 5       5      (       a  [        S5      eg)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   D   #    U  H  nS U;   =(       a    US :g  v   M     g7f)z**Nr   ).0segments     r   	<genexpr>,Translator.restrict_rglob.<locals>.<genexpr>[   s      K(wtw27d?2(s    z&** must appear alone in a path segmentN)r*   r+   r   splitany
ValueError)r   r   seps_patternsegmentss       r   r    Translator.restrict_rglobP   sQ     BIIdii01488L2K(KKKEFF Lr   c                 ~    S nS[         R                  " U R                  5       S3n[         R                  " X2U5      $ )z0
Ensure that * will not match an empty segment.
c                 8    U R                  S5      nUS:X  a  S$ U$ )Nr   *z?*)r)   )r,   r3   s     r   handle_segment1Translator.star_not_empty.<locals>.handle_segmentc   s     kk!nG"c>46w6r   r(   r0   )r*   r+   r   sub)r   r   r?   not_seps_patterns       r   r%   Translator.star_not_empty^   s8    
	7 !499!5 6b9vv&@@r   )r   N)__name__
__module____qualname____firstlineno____doc__str__annotations__r   r   r   r   r   r   r   r#   r    r%   __static_attributes__r   r   r   r   r   	   sS    
 I#0 S J 	$ 	$!R	
G
Ar   r   c                 0    [         R                  " SU 5      $ )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     ;;EwOOr   )osr*   compat.py313r   seprI   altsepboolr   r   r$   r   r   r   <module>rS      sF    	 	 +RYY$ryy/99_A _AD	Pr   