+
     Bi                         ^ RI t ^ RIt] P                  ]! ] P                  4      ]! ] P                  4      ,          ,           t ! R R4      tR tR# )    Nc                   r   a  ] tR t^t o Rt]3V 3R lR lltR tR tR t	R t
R tR	 tR
 tV 3R ltRtV tR# )
Translatorz
>>> Translator('xyz')
Traceback (most recent call last):
...
AssertionError: Invalid separators

>>> Translator('')
Traceback (most recent call last):
...
AssertionError: Invalid separators
c                    < V ^8  d   QhRS[ /#    sepsstr)format__classdict__s   ")/usr/lib/python3.14/zipfile/_path/glob.py__annotate__Translator.__annotate__   s      S     c                    Wn         R # )Nr   )selfr   s   &&r   __init__Translator.__init__   s    	r   c                `    V P                  V P                  V P                  V4      4      4      # )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                    RV R2# )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                    V R2# )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           
         V P                  V4       RP                  \        V P                  \	        V P                  V4      4      4      4      # )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_core3   s<     	G$wws4<<$2E2Eg2N)OPQQr   c                "   VP                  R4      ;'       gx    \        P                  ! VP                  ^ 4      4      P                  RR4      P                  RR\        P                  ! V P                  4       R24      P                  RR4      # )	z=
Perform the replacements for a match from :func:`separate`.
setz\*\*z.*z\*[^z]*z\?z[^/])groupreescaper(   r   )r   matchs   &&r   r(   Translator.replaceB   sn     {{5! 
 
IIekk!n%WXu%WUr"))DII"6!7r:;WUG$		
r   c                   R\         P                  ! V P                  4       R2p\         P                  ! W!4      p\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        R4      hR# )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   F   "   T F  pR V9   ;'       d    VR 8g  x  K  	  R# 5i)z**Nr   ).0segments   & r   	<genexpr>,Translator.restrict_rglob.<locals>.<genexpr>X   s#     K(wtw227d?2(s   !!TFz&** must appear alone in a path segmentN)r0   r1   r   splitany
ValueError)r   r   seps_patternsegmentss   &&  r   r%   Translator.restrict_rglobM   sa     BIIdii01488L23K(K333K(KKKEFF Lr   c                ~    R pR\         P                  ! V P                  4       R2p\         P                  ! W2V4      # )z0
Ensure that * will not match an empty segment.
c                 :    V P                  ^ 4      pVR8X  d   R# T# )r   *z?*)r/   )r2   r9   s   & r   handle_segment1Translator.star_not_empty.<locals>.handle_segment`   s     kk!nG"c>46w6r   r.   r6   )r0   r1   r   sub)r   r   rE   not_seps_patterns   &&  r   r*   Translator.star_not_empty[   s8    
	7 !499!5 6b9vv&@@r   c                &   < V ^8  d   Qh/ S[ ;R&   # r   r	   )r   r   s   "r   r   r      s      I r   r   N)__name__
__module____qualname____firstlineno____doc___default_sepsr   r   r   r   r   r(   r%   r*   __annotate_func____static_attributes____classdictcell__)r   s   @r   r   r      sH     
 $1  J	$!R	
G
Ai  r   r   c                0    \         P                  ! RV 4      # )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>[\[].*?[\]])|([\[][^\]]*$))r0   finditer)r   s   &r   r)   r)   h   s     ;;EwOOr   )	osr0   sepr
   altsepboolrP   r   r)   r   r   r   <module>rZ      sC    	 	RYY$ryy/99^A ^AB	Pr   