
    ̆hgM                    `   S r SSKJr  SSKrSSKrSSKJr	  SSK
Jr  SSK
Jr  SSKJr  SS	KJrJrJrJrJrJrJrJrJr  S
r\R4                  r\R6                  r\R8                  r\R:                  r\R<                  r\R>                  r\R@                  r \RB                  r!\RD                  r"\RF                  r#\RH                  r$\RJ                  r%\RL                  r&\RN                  r'\RP                  r(\RR                  r)Sr*Sr+\," \RZ                  " SS5      5      r.\	" \+S9          S)S j5       r/\	" \+S9          S*S j5       r0S+S,S jjr1S-S jr2S.S jr3 S/       S0S jjr4 S/     S1S jjr5S+S2S jjr6 " S S\Rn                  \\   5      r8  S3       S4S jjr- S/     S5S jjr9 S/       S6S jjr:S-S jr;S7S jr<S7S jr= S/           S8S jjr> S/         S9S jjr? S/         S9S  jjr@  S:           S;S! jjrA S/         S<S" jjrB S/         S=S# jjrC  S:             S>S$ jjrD  S:             S>S% jjrE  S:             S?S& jjrF  S:             S?S' jjrGS( rH\R                  " \8\H5        g)@ah  
Backrefs re.

Add the ability to use the following backrefs with re:

 - `\l`                                                          - Lowercase character class (search)
 - `\c`                                                          - Uppercase character class (search)
 - `\L`                                                          - Inverse of lowercase character class (search)
 - `\C`                                                          - Inverse of uppercase character class (search)
 - `\Q` and `\Q...\E`                                            - Escape/quote chars (search)
 - `\c` and `\C...\E`                                            - Uppercase char or chars (replace)
 - `\l` and `\L...\E`                                            - Lowercase char or chars (replace)
 - `[:ascii:]`                                                   - Posix style classes (search)
 - `[:^ascii:]`                                                  - Inverse Posix style classes (search)
 - `\pL`, `\p{Lu}`, \p{Letter}, `\p{gc=Uppercase_Letter}`        - Unicode properties (search Unicode)
 - `\PL`, `\P{Lu}`, `\p{^Lu}`                                    - Inverse Unicode properties (search Unicode)
 - `\N{Black Club Suit}`                                         - Unicode character by name (search & replace)
 - `\u0000` and `\U00000000`                                     - Unicode characters (replace)
 - `\m`                                                          - Starting word boundary (search)
 - `\M`                                                          - Ending word boundary (search)
 - `\R`                                                          - Generic line breaks (search)
 - `\X`                                                          - Simplified grapheme clusters (search)

Licensed under MIT
Copyright (c) 2011 - 2020 Isaac Muse <isaacmuse@gmail.com>
    )annotationsN)	lru_cache   )util)
_bre_parse)ReplaceTemplate)	AnyStrPatternMatchCallableAnyGenericMappingIteratorcast)#expandexpandfsearchmatch	fullmatchsplitfindallfinditersubsubfsubnsubfnpurgeescaper   DEBUGI
IGNORECASELLOCALEM	MULTILINESDOTALLUUNICODEXVERBOSEcompilecompile_searchcompile_replaceBrer   AASCIIi   )maxsizec                L    [         R                  " XU5      R                  5       $ )zCached search compile.)r   _SearchParserparse)pattern
re_verbose
re_unicodepattern_types       D/opt/services/DDDS/venv/lib/python3.13/site-packages/backrefs/bre.py_cached_search_compiler=   G   s      ##GDJJLL    c                l    [         R                  " X[        U[        -  5      5      R	                  5       $ )zCached replace compile.)r   _ReplaceParserboolFORMATr7   )r8   replflagsr;   s       r<   _cached_replace_compilerE   S   s)     $$WD4HIOOQQr>   c                    U (       d   [         R                  5       R                  nU$ [        R                  5       R                  nU$ )zGet size of cache.)r=   
cache_infocurrsizerE   )replacesizes     r<   _get_cache_sizerK   _   s=     %002;; K '113<<Kr>   c                 T    [         R                  5         [        R                  5         g)zPurge the cache.N)rE   cache_clearr=    r>   r<   _purge_cacherO   i   s     '')&&(r>   c                "    [        U [        5      $ )z$Check if object is a replace object.)
isinstancer   )objs    r<   _is_replacerS   p   s     c?++r>   c                   U c  [        S5      e[        U[        5      (       a  UR                  U 5      $ [        R
                  " U R                  U[        U[        -  5      5      R                  5       R                  U 5      $ )zOExpand with either the `ReplaceTemplate` or compile on the fly, or return None.zMatch is None!)

ValueErrorrQ   r   r   r   r@   rerA   rB   r7   )mrC   rD   s      r<   _apply_replace_backrefsrX   v   sg     	y)**$(({{1~$$QTT4efn1EFLLNUUVWXXr>   c                F   [        U [        [        45      (       a  [        [        U-  5      nSn[        [
        [        -  U-  5      (       a  SnO[        [        U-  5      (       a  SnU[        -  (       d  [        XU[        U 5      5      nU$ [        R                  " XU5      R                  5       n U$ [        U [        5      (       a   U(       a  [        S5      eU R                   nU$ [        U ["        5      (       a  U(       a  [        S5      eU nU$ [%        S5      e)z0Apply the search backrefs to the search pattern.NFT5Cannot process flags argument with a compiled patternz6Cannot process flags argument with a compiled pattern!z!Not a string or compiled pattern!)rQ   strbytesrA   r,   r2   r$   r*   r    r=   typer   r6   r7   r0   rU   _pattern_RE_TYPE	TypeError)r8   rD   r9   r:   ps        r<   _apply_search_backrefsrb      s    'C<(('E/*

5())J'E/""J&ZgA H ((jIOOQA H 
GS	!	!TUU H 
GX	&	&UVV H ;<<r>   c                    [        U [        5      (       a.  U R                  U:w  a  U(       a  [        S5      e[        S5      eg[        U [        [
        45      (       d  [        S5      eg)z(Check if replace template is expandable.z(Replace not compiled as a format replacez3Replace should not be compiled as a format replace!z-Expected string, buffer, or compiled replace!N)rQ   r   
use_formatrU   r[   r\   r`   )rC   rd   s     r<   _assert_expandablere      sa     $((??j( !KLL !VWW	 )
 sEl++GHH ,r>   c                  ,  ^  \ rS rSr% SrS\S'   S\S'   S\S'   S	rS!S"U 4S
 jjjr\S#S j5       r	\S$S j5       r
\S%S j5       r\S&S j5       r\S'S j5       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-S jjr        S.S jr        S.S jr        S.S jr        S/S jr        S0S jr        S1S jr          S2S jr          S2S jr          S3S jr          S3S jrS rU =r$ )4r0      zBre object.Pattern[AnyStr]r^   rA   auto_compileint_hashr^   ri   rk   c           
     `   > [         TU ]  UU[        [        U 5      [        U5      X45      S9  g)zInitialization.rl   N)super__init__hashr]   )selfr8   ri   	__class__s      r<   ro   Bre.__init__   s4     	%T
DM7IJ 	 	
r>   c                .    U R                   R                  $ )zReturn pattern.)r^   r8   rq   s    r<   r8   Bre.pattern        }}$$$r>   c                .    U R                   R                  $ )zReturn flags.)r^   rD   ru   s    r<   rD   	Bre.flags   s     }}"""r>   c                .    U R                   R                  $ )zReturn group index.)r^   
groupindexru   s    r<   r{   Bre.groupindex   s     }}'''r>   c                B    [        SU R                  R                  5      $ )zReturn groups.tuple[AnyStr | None, ...])r   r^   groupsru   s    r<   r   
Bre.groups   s     /1E1EFFr>   c                .    U R                   R                  $ )zReturn scanner.)r^   scannerru   s    r<   r   Bre.scanner   rw   r>   c                    U R                   $ )zHash.)rk   ru   s    r<   __hash__Bre.__hash__   s     zzr>   c                    [        U[        5      =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ zEqual.rQ   r0   r^   ri   rq   others     r<   __eq__
Bre.__eq__   sA     uc" 4MMU^^+4!3!33	
r>   c                    [        U[        5      (       + =(       d9    U R                  UR                  :g  =(       d    U R                  UR                  :g  $ r   r   r   s     r<   __ne__
Bre.__ne__   sD     5#&& 4MMU^^+4!3!33	
r>   c                    SR                  U R                  U R                  R                  U R                  U R
                  5      $ )zRepresentation.z{}.{}({!r}, auto_compile={!r}))format
__module__rr   __name__r^   ri   ru   s    r<   __repr__Bre.__repr__   s8     066OOT^^44dmmTEVEV
 	
r>   c                   [        U[        5      (       a  X!R                  :w  a  [        S5      e U$ [        U[        5      (       d,  [        U[        [
        45      (       aH  U R                  (       a7  U R                  X(       a  [        U[        5      (       d
  [        5      $ S5      $ [        U[        [
        45      (       a  U(       a  [        S5      eU$ )zCompile replacements.+Compiled replace cannot be a format object!r   zDFormat replaces cannot be called without compiling replace template!)
rQ   r   rd   rU   r[   r\   ri   r-   rB   AttributeError)rq   templaterd   s      r<   _auto_compileBre._auto_compile  s     h00000 !NOO 1  /22z(SRWL7Y7Y^b^o^o<<Z
S[]lHmHm6vvstvv3,//J !!ghhr>   c                .    [        U R                  X5      $ )zCompile replace.)r/   r^   )rq   rC   rD   s      r<   r-   Bre.compile  s     t}}d::r>   c                B    U R                   R                  " U/UQ70 UD6$ )zApply `search`.)r^   r   rq   stringargskwargss       r<   r   
Bre.search  s#     }}##F<T<V<<r>   c                B    U R                   R                  " U/UQ70 UD6$ )zApply `match`.)r^   r   r   s       r<   r   	Bre.match)  #     }}""6;D;F;;r>   c                B    U R                   R                  " U/UQ70 UD6$ )zApply `fullmatch`.)r^   r   r   s       r<   r   Bre.fullmatch3  s#     }}&&v????r>   c                B    U R                   R                  " U/UQ70 UD6$ )zApply `split`.)r^   r   r   s       r<   r   	Bre.split=  r   r>   c                B    U R                   R                  " U/UQ70 UD6$ )zApply `findall`.)r^   r   r   s       r<   r   Bre.findallG  s#     }}$$V=d=f==r>   c                B    U R                   R                  " U/UQ70 UD6$ )zApply `finditer`.)r^   r   r   s       r<   r   Bre.finditerQ  s#     }}%%f>t>v>>r>   c                b    U R                   R                  " U R                  U5      U/UQ70 UD6$ )zApply `sub`.r^   r   r   rq   rC   r   r   r   s        r<   r   Bre.sub[  s0     }}  !3!3D!96SDSFSSr>   c                d    U R                   R                  " U R                  US5      U/UQ70 UD6$ )&Apply `sub` with format style replace.Tr   r   s        r<   r   Bre.subff  s3     }}  !3!3D$!?Y$YRXYYr>   c                b    U R                   R                  " U R                  U5      U/UQ70 UD6$ )'Apply `subn` with format style replace.r^   r   r   r   s        r<   r   Bre.subnq  s0     }}!!$"4"4T":FTTTVTTr>   c                d    U R                   R                  " U R                  US5      U/UQ70 UD6$ )%Apply `subn` after applying backrefs.Tr   r   s        r<   r   	Bre.subfn|  s3     }}!!$"4"4T4"@&Z4ZSYZZr>   rN   )T)r8   rh   ri   rA   returnNone)r   r	   )r   rj   )r   zMapping[str, int])r   r~   )r   r   )r   r   r   rA   )r   r[   F)r   AnyStr | Callable[..., AnyStr]rd   rA   r   r   r   )rC   r   rD   rj   r   Callable[..., AnyStr])r   r	   r   r   r   r   r   Match[AnyStr] | None)r   r	   r   r   r   r   r   list[AnyStr])r   r	   r   r   r   r   r   'list[AnyStr] | list[tuple[AnyStr, ...]])r   r	   r   r   r   r   r   Iterator[Match[AnyStr]])
rC   r   r   r	   r   r   r   r   r   r	   )
rC   r   r   r	   r   r   r   r   r   tuple[AnyStr, int]) r   r   __qualname____firstlineno____doc____annotations__	__slots__ro   propertyr8   rD   r{   r   r   r   r   r   r   r   r-   r   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__)rr   s   @r<   r0   r0      s   J5I
 
 % %
 # #
 ( (
 G G
 % %




 !0  
(	, ;,; ; 
	;== = 	=
 
=<< < 	<
 
<@@ @ 	@
 
@<< < 	<
 
<>> > 	>
 
1>?? ? 	?
 
!?	T,	T 	T 		T
 	T 
	T	Z,	Z 	Z 		Z
 	Z 
	Z	U,	U 	U 		U
 	U 
	U	[,	[ 	[ 		[
 	[ 
	[ 	[r>   r0   c                    [        U [        5      (       a!  Ub  [        S5      eUS:w  a  [        S5      eU $ Uc  Sn[        [        X5      U5      $ )z>Compile both the search or search and replace into one object.z1Cannot compile Bre with a different auto_compile!r   rZ   T)rQ   r0   rU   r.   )r8   rD   ri   s      r<   r-   r-     sX     '3#PQQaZTUUL>'1<@@r>   c                B    [         R                  " [        X5      U5      $ )z(Compile with extended search references.)_rer-   rb   )r8   rD   s     r<   r.   r.     s     ;;-g=uEEr>   c                   U b  [        U [        5      (       a  [        U[        [        45      (       ah  U R                  [
        -  (       d  [        XU[        U5      5      nU$ [        R                  " X[        U[        -  5      5      R                  5       n U$ [        U[        5      (       a:  U(       a  [        S5      eUR                  [!        U 5      :w  a  [        S5      eUnU$ [#        S5      e[#        S5      e)zOConstruct a method that can be used as a replace method for `sub`, `subn`, etc.z5Cannot process flags argument with a ReplaceTemplate!z4Pattern hash doesn't match hash in compiled replace!zNot a valid type!z.Pattern must be a compiled regular expression!)rQ   r_   r[   r\   rD   r    rE   r]   r   r@   rA   rB   r7   r   rU   pattern_hashrp   r`   )r8   rC   rD   calls       r<   r/   r/     s     z'8<<dS%L))MME).weT$ZP K "00UV^@TU[[] K o.. !XYY  DM1 !WXXD
 K /00HIIr>   c                 B    [        5         [        R                  " 5         g)zPurge caches.N)rO   r   r   rN   r>   r<   r   r     s     NIIKr>   c                .    [        U5        [        X5      $ )z8Expand the string using the replace pattern or function.)re   rX   rW   rC   s     r<   r   r     s     t"1++r>   c                6    [        US5        [        X[        S9$ )z?Expand the string using the format replace pattern or function.TrD   )re   rX   rB   r   s     r<   r   r     s     tT""1&99r>   c                J    [         R                  " [        X5      X/UQ70 UD6$ )z'Apply `search` after applying backrefs.)r   r   rb   )r8   r   rD   r   r   s        r<   r   r     s&     ::,W<f]d]V\]]r>   c                H    [         R                  " [        X5      U4SU0UD6$ )z&Apply `match` after applying backrefs.rD   )r   r   rb   r8   r   rD   r   s       r<   r   r     s&     99+G;V[5[TZ[[r>   c                H    [         R                  " [        X5      U4SU0UD6$ )z*Apply `fullmatch` after applying backrefs.rD   )r   r   rb   r   s       r<   r   r     s&     ==/?_u_X^__r>   c                J    [         R                  " [        X5      U4UUS.UD6$ )z&Apply `split` after applying backrefs.)maxsplitrD   )r   r   rb   )r8   r   r   rD   r   s        r<   r   r     s7     99w. 	
  r>   c                H    [         R                  " [        X5      U4SU0UD6$ )z(Apply `findall` after applying backrefs.rD   )r   r   rb   r   s       r<   r   r     s&     ;;-g=v]U]V\]]r>   c                H    [         R                  " [        X5      U4SU0UD6$ )z)Apply `finditer` after applying backrefs.rD   )r   r   rb   r   s       r<   r   r     s&     <<.w>^e^W]^^r>   c                4   [        U5      n[        U[        [        45      nU(       a1  [	        [
        [           U5      R                  (       a  [        S5      e[        X5      n [        R                  " U U(       d  U(       a  [        X5      OUU4USS.UD6$ )z$Apply `sub` after applying backrefs.r   r   countrD   )rS   rQ   r[   r\   r   r   r	   rd   rU   r.   r   r   r/   r8   rC   r   r   rD   r   
is_replace	is_strings           r<   r   r     s     T"J4#u.Id?62D9DDFGGW,G77+5	'   r>   c           	     P   [        U5      n[        U[        [        45      nU(       a1  [	        [
        [           U5      R                  (       d  [        S5      e[        X5      n U(       a  [        OSn[        R                  " U U(       d  U(       a
  [        XUS9OUU4USS.UD6$ )r   (Compiled replace is not a format object!r   r   r   )rS   rQ   r[   r\   r   r   r	   rd   rU   r.   rB   r   r   r/   	r8   rC   r   r   rD   r   r   r   rflagss	            r<   r   r   8  s     T"J4#u.I$v6=HHCDDW,G VaF779Cyf	5VZ   r>   c                4   [        U5      n[        U[        [        45      nU(       a1  [	        [
        [           U5      R                  (       a  [        S5      e[        X5      n [        R                  " U U(       d  U(       a  [        X5      OUU4USS.UD6$ )r   r   r   r   )rS   rQ   r[   r\   r   r   r	   rd   rU   r.   r   r   r/   r   s           r<   r   r   S  s     T"J4#u.Id?62D9DDFGGW,G88+5	'   r>   c           	     P   [        U5      n[        U[        [        45      nU(       a1  [	        [
        [           U5      R                  (       d  [        S5      e[        X5      n U(       a  [        OSn[        R                  " U U(       d  U(       a
  [        XUS9OUU4USS.UD6$ )r   r   r   r   r   )rS   rQ   r[   r\   r   r   r	   rd   rU   r.   rB   r   r   r/   r   s	            r<   r   r   m  s     T"J4#u.I$v6=HHCDDW,G VaF889Cyf	5VZ   r>   c                >    [         U R                  U R                  44$ )N)r0   r^   ri   )ra   s    r<   _pickler     s    Q^^,,,r>   )
r8   r	   r9   rA   r:   rA   r;   type[AnyStr]r   r	   )
r8   rh   rC   r	   rD   rj   r;   r   r   zReplaceTemplate[AnyStr]r   )rI   rA   r   rj   )r   r   )rR   r   r   rA   r   )rW   r   rC    ReplaceTemplate[AnyStr] | AnyStrrD   rj   r   r	   )r8   &AnyStr | Pattern[AnyStr] | Bre[AnyStr]rD   rj   r   zAnyStr | Pattern[AnyStr])rC   r   rd   rA   r   r   )r   N)r8   r   rD   rj   ri   zbool | Noner   zBre[AnyStr])r8   r   rD   rj   r   rh   )r8   rh   rC   r   rD   rj   r   r   )rW   r   rC   r   r   r	   )r8   r   r   r	   rD   int | _re.RegexFlagr   r   r   r   r   r   )
r8   r   r   r	   rD   r   r   r   r   r   )r   r   )r8   r   r   r	   r   rj   rD   r   r   r   r   r   )
r8   r   r   r	   rD   r   r   r   r   r   )
r8   r   r   r	   rD   r   r   r   r   r   )r8   r   rC   r   r   r	   r   rj   rD   r   r   r   r   r	   )r8   r   rC   r   r   r	   r   rj   rD   r   r   r   r   r   )Jr   
__future__r   rV   r   copyreg_copyreg	functoolsr   
_lru_cacher3   r   _utilr   r   typingr	   r
   r   r   r   r   r   r   r   __all__r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r1   r2   r   rB   	_MAXCACHEr]   r-   r_   r=   rE   rK   rO   rS   rX   rb   re   	Immutabler0   r.   r/   r   r   r   r   r   r   r   r   r   r   r   r   r   r   picklerN   r>   r<   <module>r     s|  4 #   -   ' Z Z Z 			EE^^
EE	EEMM	EE	EE
++EE
++EE			 
 	B"# IMMM M 	M
 M M IRR
R R 	R
 R R), YY
*Y Y 	Y" 3 @
I P[%//76? P[j  $A3AA A 	A, F3FF F 
(  	4,: "#	^3	^	^ 	^ 		^
 	^ 	^ "#\3\\ \ 	\
 \ "#`3`` ` 	`
 ` !"	3  	
  * "#^3^^ ^ 	^
 -^ "#_3__ _ 	_
 _ !"3
(  	
   < !"3
(  	
   > !"3
(  	
   < !"3
(  	
   6- 	W r>   