1j6 ddlZddlZddlmZejeejeejzzZGddZ dZ dS)N)legacy_end_markercheZdZUdZeed<efdefdZdZe dZ dZ dZ dZ d Zd Zd S) Translatorz >>> Translator('xyz') Traceback (most recent call last): ... AssertionError: Invalid separators >>> Translator('') Traceback (most recent call last): ... AssertionError: Invalid separators sepscv|r%t|ttks Jd||_dS)NzInvalid separators)set _default_sepsr)selfrs n/builddir/build/BUILD/cloudlinux-venv-1.0.11/venv/lib/python3.11/site-packages/setuptools/_vendor/zipp/glob.py__init__zTranslator.__init__s:MD S%7%77779M777 cx||||S)zH Given a glob pattern, produce a regex that matches it. )extend match_dirstranslate_corer patterns r translatezTranslator.translates0{{4??4+>+>w+G+GHHIIIrcd|dS)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)\zrs r rzTranslator.extend"s$w####rc |dS)z Ensure that zipfile.Path directory names are matched. zipfile.Path directory names always end in a slash. z[/]?rrs r rzTranslator.match_dirs.s     rc ||dt|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_rglobjoinmapreplaceseparatestar_not_emptyrs r rzTranslator.translate_core6sL G$$$wws4<$2E2Eg2N2N)O)OPPQQQrc(|dp}tj|dddddtj|jddd S) zM Perform the replacements for a match from :func:`separate`. r rz\*\*z.*z\*[^z]*z\?z[^/])groupreescaperr)r matchs r rzTranslator.replaceEsy{{5!! Iekk!nn % % WXu % % WU:")DI"6"6::: ; ; WUG $ $  rcdtj|jd}tj||}t d|Drt ddS)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 []+c3*K|]}d|vo|dkVdS)z**Nr).0segments r z,Translator.restrict_rglob..[s/KKwtw27d?KKKKKKrz&** must appear alone in a path segmentN)r$r%rsplitany ValueError)r r seps_patternsegmentss r rzTranslator.restrict_rglobPsl5BIdi00444 8L'22 KK(KKK K K GEFF F G Grcnd}dtj|jd}tj|||S)z@ Ensure that * will not match an empty segment. c@|d}|dkrdn|S)Nr*z?*)r#)r&r,s r handle_segmentz1Translator.star_not_empty..handle_segmentcs#kk!nnG"c>>44w 6rr"r))r$r%rsub)r rr6not_seps_patterns r r zTranslator.star_not_empty^sE  7 7 7:49!5!5999v&@@@rN)__name__ __module__ __qualname____doc__str__annotations__r r rrrrrrrr rrr rr s   III#0SJJJ  $ $ $!!! R R R     G G G A A A A Arrc,tjd|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[\[].*?[\]])|([\[][^\]]*$))r$finditer)rs r rrks ;Ew O OOr) osr$ compat.py313rsepr=altsepboolr rrrrr rFs ++++++RY$$ry//99 _A_A_A_A_A_A_A_AD P P P P Pr