+
    SBi
                         ^ RI t ^ RIt] P                  ]! ] P                  4      ]! ] P                  4      ,          ,           t ! R R4      tR tR# )    Nc                   l   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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   "A/usr/lib/python3.14/site-packages/setuptools/_vendor/zipp/glob.py__annotate__Translator.__annotate__   s      S     c                j    V'       d   \        V4      \        \        4      8:  g   Q R 4       hWn        R# )zInvalid separatorsN)set_default_sepsr   )selfr   s   &&r   __init__Translator.__init__   s&    D	S%77M9MM7	r   c                B    V P                  V P                  V4      4      # )z8
Given a glob pattern, produce a regex that matches it.
)extendtranslate_corer   patterns   &&r   	translateTranslator.translate   s     {{4..w788r   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 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_core,   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`.
r   z\*\*z.*z\*[^z]*z\?z[^/])groupreescaper&   r   )r   matchs   &&r   r&   Translator.replace;   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>Q   s#     K(wtw227d?2(s   !!TFz&** must appear alone in a path segmentN)r-   r.   r   splitany
ValueError)r   r   seps_patternsegmentss   &&  r   r#   Translator.restrict_rglobF   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,   )r/   r6   s   & r   handle_segment1Translator.star_not_empty.<locals>.handle_segmentY   s     kk!nG"c>46w6r   r+   r3   )r-   r.   r   sub)r   r   rB   not_seps_patterns   &&  r   r(   Translator.star_not_emptyT   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__r   r   r   r   r   r&   r#   r(   __annotate_func____static_attributes____classdictcell__)r   s   @r   r   r      sB     
 $1  9	$R	
G
AY  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>[\[].*?[\]])|([\[][^\]]*$))r-   finditer)r   s   &r   r'   r'   a   s     ;;EwOOr   )	osr-   sepr
   altsepboolr   r   r'   r   r   r   <module>rV      sE    	 	 RYY$ryy/99VA VAr	Pr   