
    ̆hd              	      0   S r SSKJr  SSKrSSKrSSKJr	  SSK
rSSKJr  SSKJrJrJrJr  SSKJrJr  \" S	5      r\" S
5      r\" S5      r\" S5      r\\" S5      -  r\\-  r\" S5      r\" S5      r\" S5      r\\-  \-  r \" S5      r!\" S5      r"\" S5      r#\" S5      r$Sr%Sr&SSSSSSSSS.r'Sr( " S  S!\)5      r* " S" S#\)5      r+ " S$ S%\\   5      r, " S& S'\\   5      r- " S( S)\	R\                  \\   5      r/S* r0\Rb                  " \/\05        g)+zg
Backrefs Regex parser.

Licensed under MIT
Copyright (c) 2011 - 2020 Isaac Muse <isaacmuse@gmail.com>
    )annotationsN   )util)_compile_replacement_helper)GenericAnyStrAnycast)PatternMatch)4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)
0123456789)rA   rB   rC   rD   rE   rF   rG   rH   )r   r   r   r   r   r   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   )_)r   r   r   r   r   r    r"   ){}) -rK   )r2   r   r   r   r   r!   r   )r   r   r   r   r#   r$   rA   rB   ){   }      	
\)z\az\bz\fz\rz\tz\nz\v\\)r   r   r   c                      \ rS rSrSrSrg)LoopException:   zLoop exception. N__name__
__module____qualname____firstlineno____doc____static_attributes__r`       N/opt/services/DDDS/venv/lib/python3.13/site-packages/backrefs/_bregex_parse.pyr^   r^   :   s    rh   r^   c                      \ rS rSrSrSrg)GlobalRetryException>   zGlobal retry exception.r`   Nra   r`   rh   ri   rk   rk   >   s    !rh   rk   c                     \ rS rSr% SrSrSrSrSrS\	S'   S	\	S
'   S\	S'   S\	S'   S\	S'   S\	S'   S!S"S jjr
S#S jrS$S jrS%S&S jjrS%S'S jjrS(S jrS(S jrS%S)S jjrS$S jrS$S jrS$S jrS*S jrS+S jrS,S jrSrg )-_SearchParserB   zSearch Template.)r   r8   r7   r+   z\x1bz#(?>\r\n|[\n\v\f\r\x85\u2028\u2029])z(?>\r\n|[\n\v\f\r\x85])boolverboseintversionzdict[str, bool]global_flag_swaptemp_global_flag_swapis_bytesr   searchc                    [        U[        5      (       a  SU l        OSU l        U R                  (       a  U R                  U l        OU R
                  U l        X l        X0l        Xl        g)Initialize.TFN)	
isinstancebytesrv   _bytes_line_break_re_line_break_line_break
re_verbose
re_versionrw   )selfrw   r   r   s       ri   __init___SearchParser.__init__Q   sQ     fe$$ DM!DM=="&"8"8D"&"2"2D$$rh   c                   SnSn/ n/ n[         R                  " U5      nU H  nU(       d
  US:X  a  SnM  U(       a  SnUS:X  aC  U(       a:  UR                  [        R                  " SR                  U5      5      5        / nSnMd  Mf  US:X  a  U(       d  SnMw  U(       a  UR                  SU/5        M  UR                  SU/5        M  U(       a  UR                  U5        M  UR                  U5        M     U(       a  U(       a  UR                  S5        OU(       a  UR                  S5        U(       a4  UR                  [        R                  " SR                  U5      5      5        SR                  U5      $ )zProcess quotes.Fr[   Tr+    r7   )_util
StringIterappend_regexescapejoinextend)r   textescaped	in_quotescurrentquotedr   r    s           ri   process_quotes_SearchParser.process_quotesa   s    	T"AqDy8 v}}RWWV_'EF!#$)	 ! #Xi $IMM4),NND!9-a q!' * MM$NN4 NN6==9:wwwrh   c                j   / nSn US:w  a  U(       d  US:X  a  SnUR                  U5        OLU(       a4  SnXR                  ;   a  UR                  S5        UR                  U5        OUR                  U5        [        U5      nUS:w  a  M  US:X  a  UR                  U5        U$ ! [         a     N%f = f)zHandle verbose comments.FrY   r[   T)r   	_new_refsnextStopIteration)r   r    r   r   r   s        ri   verbose_comment_SearchParser.verbose_comment   s     	t)19"GNN1%#GNN*t,NN1%NN1%G t) 9NN1  		s   BB% %
B21B2c                   SnU R                   [        R                  :X  d  U(       a  SU;   a  U R                  (       a  SU l        OTSU;   aN  U R                  (       d=  SU l        U(       d/  U R                   [        R                  :X  a  SU R
                  S'   SnSU;   aE  U R                   [        R                  :X  a'  SU R
                  S'   [        R                  U l         SnOJSU;   aD  U R                   [        R                  :X  a&  SU R
                  S'   [        R                  U l         SnU(       a  [        S	5      eg
)zAnalyze flags.Fz-xr$   Trq   V0rs   V1zGlobal RetryN)rs   r   r   rq   r   ru   rk   )r   r   scopedglobal_retrys       ri   flags_SearchParser.flags   s     LLFII%TT\dll DLD[DLdllfii78<**95#4<DLLFII5 59D&&y1!99DLLT\dllfii748D&&y1!99DLL&~66 rh   c                    / nU(       d#  US:X  a  UR                  U R                  5        U$ US:X  a3  [        R                  " S5        UR	                  U R
                  5        U$ UR	                  SU/5        U$ )Handle references.r8   r   z=The \e reference has been deprecated, please use \x1b insteadr[   )r   r}   r   warn_deprecatedr   
_re_escape)r   r    r   in_groupr   s        ri   	reference_SearchParser.reference   sq     AHNN4../  #X!!"bcNN4??+  NND!9%rh   c                   UR                   nS/n [        U5      nUS:w  a  [        S5      eUR                  U5        [        U5      nUS:X  a  UR                  U5        [        U5      nUS:w  aC  U[        ;  a  [        S5      eU[
        ;  a  UR                  U5        [        U5      nUS:w  a  MC  UR                  U5        [        U5      nUS:w  d  U(       d  [        S5      eUR                  U5         U(       a  SR                  U5      $ S$ ! [         a#    UR                  UR                   U-
  5        / n NFf = f)	z
Get POSIX.[:zNot a valid property!^]zUnmatched ]r   N)	indexr   
ValueErrorr   	_PROPERTY_PROPERTY_STRIP	Exceptionrewindr   )r   r   r   valuer   s        ri   	get_posix_SearchParser.get_posix   s    	QACx !899QG8LLOQA3h	)()@AA/QQA 3h QG85$]33Q "'rwwu~0D0  	HHQWWu_%E	s   B!D 4AD *E Ec                <   UR                   nS/nSn [        U5      nUS:w  a  UR                  S5        gUR                  U5        [        U5      nUS:w  a  UR                  S5        gUR                  U5        [        U5      nUS:w  d  US	L a=  U(       a  SnOUS
:X  a  S	nUR                  U5        [        U5      nUS:w  a  M6  US	L a  M=  UR                  U5        U(       a  SR                  U5      $ S$ ! [         a  n[        SUS-
   S35      UeSnAff = f)zGet comments.(F?r   N#rS   )Tr[   zUnmatched '(' at !r   )r   r   r   r   r   SyntaxErrorr   )r   r   r   r   r   r   r   s          ri   get_comments_SearchParser.get_comments   s    	GQACxLLOQACxLLOQAs(go#G$Y"GQG s(go LLO "'rwwu~0D0  	G 1%!)A>?QF	Gs/   "C9 3C9 *AC9 C9 C9 9
DDDc                   UR                   nS/nSnSnU(       a  SOSn [        U5      n	U	S:w  a  UR                  S5        gUR                  U	5        [        U5      n	X:w  a  U(       a  U	[        ;  a  [        S5      eSnO^U(       a  U(       a	  U	S	:X  a  S
nOGU(       a  U	[        ;  a  [        S5      eSnO(U	S:X  a  S
nOU	[        ;  a  U	[        ;  a  [        S5      eUR                  U	5        [        U5      n	X:w  a  M  UR                  U	5        U(       a  SR                  U5      $ S$ ! [         a#    UR                  UR                   U-
  5        / n NFf = f)z
Get flags.r   Fr   r   r   r   Nz	Bad scoperO   TzBad versionr<   zBad flagr   )
r   r   r   r   _SCOPED_FLAGSr   	_VERSIONS_GLOBAL_FLAGSr   r   )
r   r   version0r   r   r   rs   toggleendr   s
             ri   	get_flags_SearchParser.get_flags  s8    c	QACxLLOQA(-(55"F"f!s(!F	)(77#G#X"Gm+0F$Z00QG! (" LLO
 "'rwwu~0D0	  	HHQWWu_%E	s   "D/ B?D/ D/ /*EEc                ~   U R                  X R                  [        R                  :H  5      nU(       a  U R	                  USS 5        U/$ U R                  U5      nU(       a  U/$ U R                  nU R                  X R                  [        R                  :H  S5      nU(       a  UnU R	                  USS SS9  / n US:w  aL  U(       d  UR                  U5        O UR                  U R                  X5      5        [        U5      nUS:w  a  ML  XPl        US:X  a  UR                  U5        U$ ! [         a     N+f = f)zHandle parenthesis.rS   T)r   r   )r   rs   r   r   r   r   rq   r   r   normalr   r   )r   r    r   r   commentsrq   r   s          ri   subgroup_SearchParser.subgroup.  s    q,,&))";<JJuQr{#7N $$Q':,, q<<699#<tDAJJuQr{4J0		s(NN1%NN4;;q#45G s( 8NN1  		s   >AD/ /
D<;D<c                H   / nUR                   S-
  nSnSnSnSn  U(       d
  US:X  a  SnGO:U(       a%  SnUR                  U R                  XS5      5        GOUS:X  a!  U(       d  US-  nUnUR                  U5        GOUS:X  a  U(       a  U R                  [
        R                  :X  ag  U R                  (       a  SOU R                  U5      n	U	(       a"  UR                  U	5        UR                   S-
  nGOoUS-  nUnUR                  U5        GOUUS:X  a_  U R                  (       a  SOU R                  U5      n	U	(       a"  UR                  U	5        UR                   S-
  nGOUR                  U5        OUS	:X  a"  US:X  a  XHS-   :X  a  UR                  U5        UnOU R                  [
        R                  :X  a(  US	:X  a"  US:  a  XFS-   :X  a  UR                  U5        UnOUS
:X  a"  US:X  a  XHS-   :w  a  UR                  U5        SnOmU R                  [
        R                  :X  a+  US
:X  a%  US:  a  XFS-   :w  a  US-  nUR                  U5        OUR                  U5        US-  n[        U5      nGM^  U(       a  UR                  U5        U$ ! [         a     N&f = f)zHandle character groups.r   r   FTr[   r   NrS   r   r   )r   r   r   r   rs   r   r   rv   r   r   r   )
r   r    r   r   posfound	sub_firstr   firstposixs
             ri   char_groups_SearchParser.char_groupsU  s?    ggk	2	19"G#GNN4>>!#=>#XeQJEENN1%#X%DLLFII,E$(MMDt~~a7HEu-ggk
$'	q)#X$(MMDt~~a7HEu-ggkq)#X%1*#2BNN1%E\\VYY.18	sbcVcOcNN1% #I#X%1*#2BNN1%E\\VYY.18	sbcVcOcQJENN1%NN1%qG_ f NN1  		s   G1J A-J 
J! J!c                   / nUS:X  a.   [        U5      nUR                  U R                  X5      5        U$ US:X  a"  UR                  U R                  X5      5        U$ U R                  (       a(  US:X  a"  UR                  U R                  X5      5        U$ US:X  a"  UR                  U R                  X5      5        U$ UR	                  U5        U$ ! [         a    UR	                  U5         U$ f = f)zHandle normal chars.r[   r   r   r   )	r   r   r   r   r   r   rq   r   r   )r   r    r   r   s       ri   r   _SearchParser.normal  s     9"Gt~~a34  #XNN4==./  \\a3hNN4//56
 	 #XNN4++A12  NN1 ! "q! "s   +C C21C2c                    / n  [        U5      nUR                  U R                  X15      5        M-  ! [         a     U$ f = f)zThe main group: group 0.)r   r   r   r   )r   r   r   r    s       ri   
main_group_SearchParser.main_group  sM     	Gt{{101   		s   .2 
A A c                    [        U R                  5      U l        U R                  (       a  U R                  O[        R
                  U l        U R                  S:g  SS.U l        SSS.U l        / n[        R                  " U R                  U5      5      nSnU(       a  Sn U R                  U5      nU(       a  M  S
R#                  U5      $ ! [         a  nU R                  S   (       a/  U R                  S   (       a  [        S5      UeSU R                  S'   U R                  S   (       a/  U R                  S   (       a  [        S5      UeSU R                  S'   SSS.U l        UR                  UR                   5        Sn S	nANS	nAff = f)zBegin parsing.r   F)rs   rq   Trs   zGlobal version flag recursion.rq   zGlobal verbose flag recursion.Nr   )rp   r   rq   r   r   DEFAULT_VERSIONrs   rt   ru   r   r   r   r   rk   r^   r   r   r   )r   rw   new_patternr   retryr   s         ri   _parse_SearchParser._parse  sc    DOO,*.//tv?U?U!+!

 &
"
 T0089E"ooa0 e. ww{##' (  --i8,,Y7+,LMSTT;?--i8--i8,,Y7+,LMSTT;?--i8$$.* !%s   !C 
FB-FFc                    [        U R                  [        5      (       a9  U R                  U R                  R	                  S5      5      R                  S5      $ U R                  U R                  5      $ )zApply search template.latin-1)rz   rw   r{   r   decodeencoder   s    ri   parse_SearchParser.parse  sQ     dkk5));;t{{11)<=DDYOO;;t{{++rh   )	r}   rt   rv   r   r   rw   ru   rq   rs   N)Fr   )rw   r   r   rp   r   rr   returnNone)r   strr   r   )r    r   r   _util.StringIterr   	list[str]F)r   r   r   rp   r   r   )r    r   r   r   r   rp   r   r   )r   r   r   
str | None)r   r   r   rp   r   rp   r   r   )r   r   r   r   )rw   r   r   r   r   r   )rb   rc   rd   re   rf   r   r   r~   r|   __annotations__r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r`   rh   ri   rn   rn   B   s    $IJ8K2ML%%**NN & P4701>1>%1N%N@D*
)$V,rh   rn   c                  N   \ rS rSrSrS!S"S jjrS#S jrS$S jrS%S jrS&S jr	S'S jr
S(S	 jrS)S
 jrS(S jrS(S jrS!S*S jjrS(S jrS)S jrS+S jrS,S jrS(S jrS+S jrS%S jrS-S jrS.S jrS/S jrS0S jrS/S jrS1S jrS2S jr  S3       S4S jjrS5S jrS6S jr S r!g)7_ReplaceParseri  zPre-replace template.c                   Xl         X l        X l        X0l        SU l        / U l        / U l        / U l        / U l        / U l	        / U l
        / U l        SU l        SU l        SU l        SU l        [!        U R                  ["        5      U l        g)ry   Fr   N)pattern	_original	_template
use_format	end_foundgroup_slotsliteral_slotsresult
span_stacksingle_stackliteralsgroupsslotmanualauto
auto_indexrz   r{   rv   )r   r   templater   s       ri   r   _ReplaceParser.__init__  s     !!$		"4>>59rh   c                    SnUS   S:X  a  USS OUSS nUSS S:X  a  US	   nUS
:X  a  SnOUS:X  a  SnOUS:X  a  Sn [        X5      nU$ ! [         a    Un U$ f = f)zParse format index.
   r   rO   r      NrS   rA   r   r   r      r$      )rr   r   )r   r   baseprefixcharidxs         ri   parse_format_index!_ReplaceParser.parse_format_index  s     "1gna$r(!A;#":Ds{	d/C 
  	C
	s   A AAc           
        UR                   nSn/ n US:X  aD  UR                  [        R                  S45        UR                  [        R                  S45        GO/ nU[
        ;   a[  UR                  U5        U R                  U5      nU[        ;   a.  UR                  U5        U R                  U5      nU[        ;   a  M.  OdU[        ;   aZ  UR                  U5        U R                  U5      nU[        ;   a.  UR                  U5        U R                  U5      nU[        ;   a  M.  SR                  U5      R                  5       n [        R                  [        [        US5      5      4/nUS:w  a!  UR                  [        R                  S45        US;   Ga0  US:X  a  / nUR                   S-
  nU R                  U5      n US:w  a*  UR                  U5        U R                  U5      nUS:w  a  M*  U R!                  SR                  U5      5      n
UR                  [        R                  U
45        U R                  U5      nO{/ nU R                  U5      nU[        ;   a.  UR                  U5        U R                  U5      nU[        ;   a  M.  UR                  [        R"                  SR                  U5      45        US;   a  GM0  US
:X  ai  U R                  U5      nU[$        ;  a  [        SUR                   S-
   S
35      eUR                  [        R&                  U45        U R                  U5      nUS:X  Ga
  Sn/ nSnSnU R                  U5      nUS;   a/  UnU R                  U5      nUS;   a  UnUnU R                  U5      nOU[        ;   aA  UnU R                  U5      nUS;   a  UnU R                  U5      nOoUR                  U5        SnO[UnU R                  U5      nUS:X  a
  US:X  a  UnSnUb5  US;  a  [        SUR                   S-
   S
35      eUnU R                  U5      nU[        ;   a.  UR                  U5        U R                  U5      nU[        ;   a  M.  U(       d$  [)        U5      (       a  US   S:X  a  [        S5      eU(       a"  U(       d  [)        U5      (       a  US   S:X  a  SnUS:X  a  UnU R                  U5      nU(       d  SnUR                  [        R*                  U R,                  (       a  UR/                  S5      OUUU(       a  [        SR                  U5      5      OSU445        US:w  a  [        SUS-
   35      e XE4$ ! [         a    [        R                  U4/n GNf = f! [         a  n	[        S	US-
   35      U	eSn	A	ff = f! [         a  n	[        SUS-
   S
35      U	eSn	A	ff = f)zGet format group.r   rM   Nr  r   )r   .r   r   zUnmatched '[' at r   zInvalid conversion type at r   )<>r   r   zInvalid format spec char at r   rA   z'=' alignment is not supported!rN   r   Unmatched '{' at )r   r   r   	FMT_FIELD	FMT_INDEX_LETTERS_UNDERSCOREformat_next_WORD_DIGITr   stripr   rr   r   r   r   r  FMT_ATTR_FMT_CONV_TYPEFMT_CONVlenFMT_SPECrv   r   )r   r   r   r   fieldr   tempfindexsindexr   r  fillwidthalignconverts                  ri   
get_format_ReplaceParser.get_format  sq    E	HCxeoor23eoot45 ++KKN((+Au*A ,,Q/ u* &[KKN((+Av+A ,,Q/ v+
 ++-#oos3ub>/BCDE
 8LL%//4!89 :oCx!#!"1 ,,Q/W"#s( &a 0$($4$4Q$7 #$s(
 #55bggfoFeoos%;< ,,Q/!# ,,Q/5j"MM!, $ 0 0 3A  5j ennbggfo%FG) :o. 8((+A.),GRS}TU*VWWLL%..!!45((+A 8DE E"G((+AO+ ! ,,Q//#(D$%E $ 0 0 3Af  ,,Q//$%E $ 0 0 3A!LL.#'D  ,,Q/3;18&*G#'D+ 7&14PQRQXQX[\Q\P]]^2_&` `$%E $ 0 0 3Av+Q ,,Q/ v+ !SZZE!HO()JKKTc%jjU1X_"Cx"# ,,Q/"LL!NN:>--I 6T %8=RWWU^!41 '	
 Cx!$6uqyk"BCC 
 |[ " #oou56E"  - W"-0A&1*.N"OUVVWr  	H 2519+Q?@aG	Hs   B.V. A#V. 'V. &U& -AV. .V
 4BV. 6V. F V. -C5V. &VV. VV. 

V+V&&V++V. .
W8WWc                   US:X  ah  U R                  U5      nUS:X  a,  U R                  5         U R                  R                  U5        gU R	                  X5      u  p4U R                  X45        gU R                  U5      nUS:X  a,  U R                  5         U R                  R                  U5        g[        SUR                  S-
   S35      e)zHandle format.rL   rM   zUnmatched '}' at rS   r   N)r  get_single_stackr   r   r*  handle_format_groupr   r   )r   r    r   r"  r   s        ri   handle_format_ReplaceParser.handle_format  s     8  #ACx%%'""1%"ooa3((5  #ACx%%'""1%!$6qww{m1"EFFrh   c                Z   UR                   n/ nSn US:X  a6  [        S5       H'  nUS:w  a    O UR                  U5        [        U5      nM)     [	        U5      nUS:  a=  [        SU-
  5       H+  nU[
        ;  a    O UR                  U5        [        U5      nM-     UR                  S5        [	        U5      nU R                  (       a  U(       d3  U(       a  US:  d&  US:w  a   UR                  UR                   U-
  5        / nU(       a  SR                  U5      $ S$ ! [         a     N|f = f)z
Get octal.r   rA   r  r   r   N)
r   ranger   r   r   _OCTALr   r   r   r   )r   r   r   r   r   
zero_countrK   octal_counts           ri   	get_octal_ReplaceParser.get_octal  s    
	CxqACxLLOQA	 "
 UJA~q:~.ALLOQA	 /
 HHQK %jK*WX^imn^nHHQWWu_%E!&rwwu~0D0  		s   BD 
D*)D*c                   [        US5      nUS:  a  U R                  (       a  [        S5      eU R                  5       nU R                  (       aQ  U R                  [        U5      U R                  S   5      nUb  [        U R                  X5      5      O
[        U5      nO+U(       a$  [        U R                  [        U5      U5      5      nU R                  (       a&  U[        ;   a  U R                  [        U5      U5        gUS::  a   U R                  R                  SUS 35        gU R                  R                  [        U5      5        g)zParse octal value.r	     ,octal escape value outside of range 0-0o377!r   Nr[   03o)rr   rv   r   r-  r   convert_casechrordr   _CURLY_BRACKETS_ORDr/  r   r   )r   r   r   r   singles        ri   parse_octal_ReplaceParser.parse_octal  s     D!4<DMMKLL**,F((UT__R5HI@F@RD--d;<X[\`XaD--c%j&AB5,?#?""3u:q1$""Rc{#34""3u:.rh   c                F   UR                   n/ n [        U5      S:w  a  [        SUR                   S-
   S35      e[        U5      nUS:w  a$  UR                  U5        [        U5      nUS:w  a  M$  SR                  U5      $ ! [         a  n[        SU S35      UeSnAff = f)	zGet named Unicode.rL   zNamed Unicode missing '{' at r   r   rM   r  Nr   )r   r   r   r   r   r   )r   r   r   r   r   r   s         ri   get_named_unicode _ReplaceParser.get_named_unicode  s     	DAw#~!$B177Q;-q"QRRQAs(QG s( wwu~  	D 25';<!C	Ds   AB 
B BB c                   [        [        R                  " U R                  U5      5      5      nU R	                  5       nU R
                  (       aQ  U R                  [        U5      U R
                  S   5      nUb  [        U R                  XC5      5      O
[        U5      nO+U(       a$  [        U R                  [        U5      U5      5      nU R                  (       a&  U[        ;   a  U R                  [        U5      U5        gUS::  a   U R                  R                  SUS 35        gU R                  R                  [        U5      5        g)zParse named Unicode.r   Nr9  r[   r;  )r>  _unicodedatalookuprD  r-  r   r<  r=  r   r?  r/  r   r   r   r   r   r@  r   s        ri   parse_named_unicode"_ReplaceParser.parse_named_unicode  s     L''(>(>q(ABC&&(??$$SZ1DED<B<NC))$78TWX\T]E))#e*f=>E??u(;;s5z1-d]KKE#;/0KKs5z*rh   c                
   / n[        S5       HA  n[        U5      nUS:X  a  UR                  U5        M'  [        SUR                  S-
   S35      e   [        U5      nUS;   a  UR                  U5        O[        SUR                  S-
   S35      e[        S5       HS  n[        U5      nUR                  5       [        ;   a  UR                  U5        M9  [        SUR                  S-
   S35      e   SR                  U5      $ )	Get narrow Unicode.r  rA   z"Invalid wide Unicode character at r   r   rP      r   )r2  r   r   r   r   lower_HEXr   r   r   r   rK   r   s        ri   get_wide_unicode_ReplaceParser.get_wide_unicode  s     qAQACxQ!$FqwwQR{mST"UVV  G
?LLO B177Q;-qQRRqAQAwwyD Q!$FqwwQR{mST"UVV  wwu~rh   c                    / n[        S5       HS  n[        U5      nUR                  5       [        ;   a  UR	                  U5        M9  [        SUR                  S-
   S35      e   SR                  U5      $ )rM  rN  zInvalid Unicode character at r   r   r   r2  r   rO  rP  r   r   r   r   rQ  s        ri   get_narrow_unicode!_ReplaceParser.get_narrow_unicode)  sf     qAQAwwyD Q!$A!''A+a"PQQ  wwu~rh   c                   U(       a  U R                  U5      OU R                  U5      n[        US5      nU R                  5       nU R                  (       aQ  U R                  [        U5      U R                  S   5      nUb  [        U R                  X55      5      O
[        U5      nO+U(       a$  [        U R                  [        U5      U5      5      nU R                  (       a&  U[        ;   a  U R                  [        U5      U5        gUS::  a   U R                  R                  SUS 35        gU R                  R                  [        U5      5        g)zParse Unicode.r
  r   Nr9  r[   r;  )rR  rV  rr   r-  r   r<  r=  r>  r   r?  r/  r   r   )r   r   wider   r   r@  s         ri   parse_unicode_ReplaceParser.parse_unicode5  s     ,0t$$Q'T5L5LQ5OD"&&(??$$SZ1DED<B<NC))$78TWX\T]E))#e*f=>E??u(;;s5z1-d]KKE#;/0KKs5z*rh   c                    / n[        S5       HS  n[        U5      nUR                  5       [        ;   a  UR	                  U5        M9  [        SUR                  S-
   S35      e   SR                  U5      $ )z	Get byte.rS   zInvalid byte character at r   r   r   rU  rQ  s        ri   get_byte_ReplaceParser.get_byteG  sf     qAQAwwyD Q!$>qww{m1"MNN  wwu~rh   c                    [        U R                  U5      S5      nU R                  5       nU R                  (       aQ  U R	                  [        U5      U R                  S   5      nUb  [        U R	                  XC5      5      O
[        U5      nO+U(       a$  [        U R	                  [        U5      U5      5      nU R                  (       a&  U[        ;   a  U R                  [        U5      U5        gU R                  R                  SUS 35        g)zParse byte.r
  r   Nr[   r;  )rr   r]  r-  r   r<  r=  r>  r   r?  r/  r   r   rI  s        ri   parse_bytes_ReplaceParser.parse_bytesS  s     DMM!$b)&&(??$$SZ1DED<B<NC))$78TWX\T]E))#e*f=>E??u(;;s5z1-KKE#;/0rh   c                   UR                   nU/n [        U5      nUS:w  a  [        SUR                   S-
   S35      eUR                  U5        [        U5      nU[        ;   ab  UR                  U5        [        U5      nUS:w  a.  U[        ;   a  UR                  U5        [        U5      nUS:w  a  M.  UR                  U5        OU[
        ;   ab  UR                  U5        [        U5      nUS:w  a.  U[        ;   a  UR                  U5        [        U5      nUS:w  a  M.  UR                  U5        O[        SUR                   S-
   S35      eS	R                  U5      $ ! [         a  n[        SU S35      UeSnAff = f)
Get group number.r  zGroup missing '<' at r   r   r  zInvalid group character at zUnmatched '<' at Nr   )	r   r   r   r   r  r  r  r   r   )r   r    r   r   r   r   r   s          ri   get_named_group_ReplaceParser.get_named_groupb  s[    	CQACx!$9!''A+a"HIILLOQAF{QG3hF{QQA 3h Q))QG3hEzQQA 3h Q!$?!}A"NOO wwu~  	C 1%:;B	Cs1   B!E 4E AE  E 2E 
E>)E99E>c                   / n U[         ;   aO  US:w  aI  UR                  U5        [        U5      nU[         ;   a  UR                  U5        OUR                  S5        U(       a  SR                  U5      $ S$ ! [         a     N&f = f)rc  rA   r   r   N)r  r   r   r   r   r   )r   r    r   r   s       ri   	get_group_ReplaceParser.get_group  sw     		F{qCxQG;LLOHHQK "'rwwu~0D0  		s   AA7 A7 7
BBc                ^    [        U5      nUS:X  a  U R                  [        U5      U5      $ U$ )zGet next format char.r[   )r   format_references)r   r   r   s      ri   r  _ReplaceParser.format_next  s/     G56$Yt%%d1gq1EAErh   c                   U R                  X5      nU(       a;  [        US5      nUS:  a  U R                  (       a  [        S5      e[	        U5      nU$ U[
        ;   d  US:X  a  [        SU-      nU$ U R                  (       d,  US:X  a&  [	        [        U R                  U5      S5      5      nU$ U R                  (       d,  US:X  a&  [	        [        U R                  U5      S5      5      nU$ U R                  (       d-  US:X  a'  [        R                  " U R                  U5      5      nU$ US	:X  a&  [	        [        U R                  U5      S5      5      nU$ UR                  S
5        SnU$ )zHandle format references.r	  r9  r:  r[   r;   r
  r!   r4   r$   r   )r6  rr   rv   r   r=  _STANDARD_ESCAPES_BACK_SLASH_TRANSLATIONrR  rV  rG  rH  rD  r]  r   )r   r    r   octalr   r   s         ri   rj   _ReplaceParser.format_references  sE    q$E1A4xDMM !OPPFE  ##qDy+D1H5E  18D11!4b9:E  18D33A6;<E  18 ''(>(>q(ABE  #XDMM!,b12E  HHQKErh   c                   U R                  X5      nU[        ;   a  U(       a  U R                  X25        gU[        ;   d  US:X  aO  U R                  (       d>  U R                  X5      nU(       d  U R                  X5      nU R                  SU-   5        gU[        ;   a/  U R                  5         U R                  R                  SU-   5        gUS:X  a  U R                  U[        5        gUS:X  a  U R                  U[        5        gUS:X  a  U R                  U[        5        gUS:X  a  U R                  U[        5        gUS:X  a  SU l        gU R"                  (       d  US	:X  a  U R%                  US5        gU R"                  (       d  US
:X  a  U R%                  U5        gU R"                  (       d  US:X  a  U R'                  U5        gUS:X  a  U R)                  U5        gU R                  (       a7  U[*        ;   a-  U R                  R                  S5        U R-                  X5        gU R                  (       a=  US:X  a7  U R                  R                  S5        U R                  R                  U5        gSU-   nU R                  5         U R.                  (       a  U R1                  XPR.                  S   5      nU R                  R                  U5        g)r   r   r[   r   r2   r   r)   r+   Tr;   r!   r4   r$   r\   r   N)r6  r3  rA  r  r   rg  rd  handle_grouprm  r-  r   r   single_case_LOWER	span_case_UPPERr   rv   rZ  rJ  r`  _CURLY_BRACKETSr/  r   r<  )r   r    r   ro  groupr   s         ri   r   _ReplaceParser.reference  s   q$;5U&6kQ#XtNN1(E,,Q2dUl+##!!#KKtax(#XQ'#XNN1f%#XQ'#XNN1f%#X!DN18q$'18q!18$$Q'#XQ__o!5KKv&q$__cKKv&KKq!1HE!!#))%1DEKKu%rh   c                   S/U l         [        R                  " U5      n  [        U5      nU R                  (       a  U[
        ;   a  U R                  X25        O?US:X  a   [        U5      nU R                  X25        OU R                   R                  U5        My  ! [         a    U R                   R                  U5        e f = f! [         a     Of = f[        U R                   5      S:  as  U R                  R                  SR                  U R                   5      5        U R                   SS2	 U R                   R                  S5        U =R                  S-  sl        SR                  U R                  5      $ )Parse template.r   r[   r   N)r   r   r   r   r   rw  r/  r   r   r   r   r   r   r   )r   r  r   r    s       ri   _parse_template_ReplaceParser._parse_template  s0    dX&	G??qO';&&q,$Y Gq,
 KK&&q)  ) **1-
  		 t{{a%%bggdkk&:;AKKr"IINIwwt))**s)   ?C  B <C 'CC 
CCc                H   [        U R                  [        5      (       a?  U R                  U R                  R	                  S5      5      R                  S5      U l        O U R                  U R                  5      U l        Sn[        U R                  U R                  5       H~  n[        U[        5      (       a8  U R                  R                  S5        U R                  R                  X45        O)U R                  R                  [        [        U5      5        US-  nM     g)r{  r   r   Nr   )rz   r   r{   r|  r   r   r   r   r   rr   r   r   r   r
   r   )r   countparts      ri   parse_template_ReplaceParser.parse_template  s     dnne,,!11$..2G2G	2RSZZ[deDN!11$..ADN/dnnMD$$$$$T*""E=1$$T&$%78QJE Nrh   c                   U R                   (       a  U R                   R                  5         U R                  (       a  U R                  R                  5         U R                   R                  U5        [	        U R                   5      nSU l         U R
                  (       d  [        U5      nU R                  (       a  U[        ;   a  U R                  XA5        ONUS:X  a   [        U5      nU R                  XA5        O*U R                  R                  U R                  XB5      5        U R
                  (       d  U[	        U R                   5      :  a  SU l        OU R
                  (       d  M  U[	        U R                   5      :X  a  U R                   R                  5         gg! [         a    U R                  R                  U5        e f = f! [         a     Nkf = f)zNUppercase or lowercase the next range of characters until end marker is found.Fr[   N)r   popr   r   r   r   r   r   rw  r/  r   r   r   r<  )r   r   caser  r    s        ri   ru  _ReplaceParser.span_case  s[    ??OO!!!#t$DOO$	nnG??qO';&&q,$Y Gq,
 KK&&t'8'8'AB>>US-A%A%*DN nnn$ C((OO! ) ) **1-  		s2   AG
 F  ;AG
 G
  'GG
 

GGc                \   U R                   (       ar  / nU HY  nU[        ;   a;  UR                  U[        :X  a  UR	                  5       OUR                  5       5        MH  UR                  U5        M[     SR                  U5      $ U[        :X  a  UR	                  5       $ UR                  5       $ )zConvert case.r   )rv   _ASCII_LETTERSr   rt  rO  upperr   )r   r   r  casedr   s        ri   r<  _ReplaceParser.convert_case1  sz     ==E&LLdfn!'')LLLO	 
 775>!$(FN5;;=EErh   c                :   U R                   (       a  U R                   R                  5         U R                   R                  U5         [        U5      nU R                  (       a  U[
        ;   a  U R                  X15        gUS:X  a   [        U5      nU R                  X15        gU R                  5       nUb+  U R                  R                  U R                  X45      5        gg! [         a    U R                  R                  U5        e f = f! [         a     gf = f)z*Uppercase or lowercase the next character.r[   N)r   r  r   r   r   rw  r/  r   r   r   r-  r<  )r   r   r  r    	this_cases        ri   rs  _ReplaceParser.single_case?  s     !!#  &	QA1#7""1(dQANN1(
 !113	(KK&&t'8'8'FG ) % KK&&q)  		s0   7D  D C# $=D #'D

D 
DDc                    SnU R                   (       a-  U R                   R                  5       nU R                   (       a  M-  U$ )z)Get the correct single stack item to use.N)r   r  )r   r@  s     ri   r-  _ReplaceParser.get_single_stackX  s9     &&**,F rh   c                ^   US:X  a  U R                   (       a@  [        U R                  5      n[        R                  U4US'   U =R                  S-  sl        OU R
                  (       dX  U R                   (       dG  SU l         [        U R                  5      n[        R                  U4US'   U =R                  S-  sl        OQ[        S5      eU R
                  (       d  U R                   (       d  SU l        OU R
                  (       d  [        S5      eU R                  U[        U5      S5        g)zHandle format group.r   r   r   Tz2Cannot switch to auto format during manual format!z2Cannot switch to manual format during auto format!N)	r  r   r  r   r  r  r   rr  tuple)r   r"  r   s      ri   r.  "_ReplaceParser.handle_format_group`  s     B;yyDOO, ??E2Q1$[[ 	DOO, ??E2Q1$ !UVVTYYDKQRR%td3rh   Nc                ,   [        U R                  5      S:  a  U R                  R                  SR	                  U R                  5      5        U(       a  U R                  R                  SUS/5        OU R                  R                  U5        U R                  SS2	 U R                  R                  S5        U =R                  S-  sl        OAU(       a  U R                  R                  SUS/5        OU R                  R                  U5        U R                  R                  U R                  U R                  (       a  U R                  S   OSU R                  5       Uc  U R                  (       a  SOSOU445        U =R                  S-  sl        g)zHandle groups.r   r   z\g<r  Nr   r`   )r   r   r   r   r   r   r   r   r   r-  rv   )r   r   capture	is_formats       ri   rr  _ReplaceParser.handle_groupw  s)    t{{a%%bggdkk&:;""))64*=>""))$/AKKr"IINI%%vtS&9:%%d+		,0OOT__R())+5<_4==Rb'		
 			Q	rh   c                    U R                   $ )z0Return the unmodified template before expansion.)r   r   s    ri   get_base_template _ReplaceParser.get_base_template  s     ~~rh   c                   [        U R                  R                  [        U R                  5      5      (       d  [	        S5      eU R                  5         [        [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  5      U R                  U R                  5      $ )r{  z<Pattern string type must match replace template string type!)rz   r   typer   	TypeErrorr  ReplaceTemplater  r   r   r   hashr   rv   r   s    ri   r   _ReplaceParser.parse  s     $,,..T^^0DEEZ[[$++$""#$-- OOMM
 	
rh   )r   r   r  r  r   r   r   rv   r   r   r  r   r   r   r   r   r   r   )r   zPattern[AnyStr]r  r   r   rp   r   r   )r   r   r   z	int | str)r   r   r   r   r   z!tuple[str, list[tuple[int, Any]]])r    r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   rY  rp   r   r   )r    r   r   r   r   r   )r    r   r   r   r   r   )r  r   r   r   )r   r   )r   r   r  rr   r   r   )r   r   r  rr   r   r   )r   z
int | None)r"  r   r   zlist[tuple[int, Any]]r   r   )NF)r   r   r  z"tuple[tuple[int, Any], ...] | Noner  rp   r   r   r   )r   zReplaceTemplate[AnyStr])"rb   rc   rd   re   rf   r   r  r*  r/  r6  rA  rD  rJ  rR  rV  rZ  r]  r`  rd  rg  r  rj  r   r|  r  ru  r<  rs  r-  r.  rr  r  r   rg   r`   rh   ri   r   r     s    :*&N`G&1>/*"+"2
+$
1 D1 F2*&X+@""BF244 7;	   4  	 
 
 D

rh   r   c                     ^  \ rS rSr% SrSrS\S'   S\S'   S\S	'   S
\S'   S\S'   S
\S'   S\S'                 SU 4S jjrSS jrSS jr	SS jr
SS jrSS jrSS jrS S jrSS jrSrU =r$ )!r  i  zReplacement template expander.)r   r   r   pattern_hashr   _hash_bytestuple[tuple[int, int], ...]r   :tuple[tuple[int, tuple[int | None, int | None, Any]], ...]r   tuple[AnyStr | None, ...]r   rr   r  rp   r   r  r  c                Z   > [         TU ]  UUUUUU[        [        U 5      XUXEU45      S9  g)ry   )r   r   r   r   r  r  r  N)superr   r  r  )r   r   r   r   r  r   rv   	__class__s          ri   r   ReplaceTemplate.__init__  sG     	!#%J h 	 	
rh   c                $    U R                  U5      $ )zCall.)expand)r   r   s     ri   __call__ReplaceTemplate.__call__  s     {{1~rh   c                    U R                   $ )zHash.)r  r   s    ri   __hash__ReplaceTemplate.__hash__  s     zzrh   c                   [        U[        5      =(       a    U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       ay    U R                  UR                  :H  =(       aY    U R
                  UR
                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ zEqual.rz   r  r   r   r   r  r   r  r   others     ri   __eq__ReplaceTemplate.__eq__  s     uo. (KK5<<'( 1 11( MMU^^+( !3!33	(
 OOu///( KK5<<'	
rh   c                   [        U[        5      (       + =(       d    U R                  UR                  :g  =(       d    U R                  UR                  :g  =(       dy    U R                  UR                  :g  =(       dY    U R
                  UR
                  :g  =(       d9    U R                  UR                  :g  =(       d    U R                  UR                  :g  $ r  r  r  s     ri   __ne__ReplaceTemplate.__ne__  s     5/22 (KK5<<'( 1 11( MMU^^+( !3!33	(
 OOu///( KK5<<'	
rh   c           	         SR                  U R                  U R                  R                  U R                  U R
                  U R                  U R                  U R                  5      $ )zRepresentation.z#{}.{}({!r}, {!r}, {!r}, {!r}, {!r}))	formatrc   r  rb   r   r   r   r  r   r   s    ri   __repr__ReplaceTemplate.__repr__  sN     5;;OOT^^44KK))4==t
 	
rh   c                R    SnU R                    H  nUS   U:X  d  M  US   n  U$    U$ )z,Find and return the appropriate group index.r   r   )r   )r   r   g_indexrx  s       ri   _get_group_index ReplaceTemplate._get_group_index  s;     [[EQx5 (	 ! rh   c                R    SnU R                    H  nUS   U:X  d  M  US   n  U$    U$ )z+Find and return the appropriate group case.)NNr   r   r   )r   )r   r   g_caserx  s       ri   _get_group_attributes%ReplaceTemplate._get_group_attributes  s=     "%%EQx5 q	 & rh   c           	     D   Uc  [        S5      eUR                  R                  SS n[        U[        5      U R
                  :w  a  [        S5      e/ n[        S[        U R                  5      5       GHV  nU R                  U   nUGc.  U R                  U5      nU R                  U5      u  pxn	U R                  (       d"   [        SUR                  U5      5      nUc  UnOh [        SUR!                  U5      5      n["        R$                  " UU	[        U[        5      (       a  ["        R&                  O["        R(                  U5      nUb+  U[*        :X  a  UR-                  5       nOUR/                  5       nUb=  U[*        :X  a  USS	 R-                  5       US	S -   nOUSS	 R/                  5       US	S -   nUR1                  U5        GMY     UR3                  U5      $ ! [         a  n
[        SU S35      U
eSn
A
ff = f! [         a  n
[        SU S35      U
eSn
A
ff = f)
z&Using the template, expand the string.NzMatch is None!r   z6Match string type does not match expander string type!zAnyStr | None'z' is out of range!zlist[AnyStr]r   )r   rer   rz   r{   r  r  r2  r   r   r  r  r   r
   rx  
IndexErrorcapturesr   format_captures_to_bstr_to_strrt  rO  r  r   r   )r   r   sepr   r   r   r  ru  rs  r  r   objs               ri   r  ReplaceTemplate.expand  s    9-..ddll2Ac5!T[[0TUU1c$--01Ee$Ay//6262L2LU2S/	Q !'''2BC9 #A
Q">1::g3FG --*4S%*@*@emm	A ( F*GGIGGI*"f,aFLLNQqrU2aFLLNQqrU2KKNG 2J xx~5 & Q(1WI5G)HIqPQ & Q(1WI5G)HIqPQs0     G"H 
G=(G88G= 
H
HHr`   )r   r  r   r  r   r  r  rr   r   rp   rv   rp   r   r   )r   zMatch[AnyStr] | Noner   r   )r   rr   )r  r	   r   rp   )r   r   )r   rr   r   rr   )r   rr   r   z"tuple[int | None, int | None, Any])rb   rc   rd   re   rf   	__slots__r   r   r  r  r  r  r  r  r  r  rg   __classcell__)r  s   @ri   r  r    s    (fI''KK''JL
+
 P
 ,	

 
 
 
 

6




0 0rh   r  c                    [         U R                  U R                  U R                  U R                  U R
                  U R                  44$ )zPickle.)r  r   r   r   r  r   r  )r   s    ri   _pickler  L  s:     QXXq}}ajj!..RSR^R^`a`h`hiiirh   )2rf   
__future__r   unicodedatarG  copyreg_copyregr   r   r   regexr   regex.regexr   typingr   r   r	   r
   _bregex_typingr   r   	frozensetr  r  r3  rP  r  r  rm  rw  r   r   r   r   r   r?  rv  rt  rn  r  r   r^   rk   rn   r   	Immutabler  r  pickler`   rh   ri   <module>r     sn   # "    3 - - * 
E	F	;	<ab$y'88 f$AB J'O,FN_,	=>89j!	-  
	
 	  !I "9 "g,GFO g,TA
WV_ A
HYeoowv Yxj 	 )rh   