
    1yigM                       d Z ddlmZ ddlZddlZddlmZ	 ddl
mZ ddl
mZ ddlmZ dd	lmZmZmZmZmZmZmZmZmZ d
Zej4                  Zej6                  Zej8                  Zej:                  Zej<                  Zej>                  Zej@                  Z ejB                  Z!ejD                  Z"ejF                  Z#ejH                  Z$ejJ                  Z%ejL                  Z&ejN                  Z'ejP                  Z(ejR                  Z)dZ*dZ+ e, ejZ                  dd            Z. e	e+      	 	 	 	 	 	 	 	 	 	 d)d       Z/ e	e+      	 	 	 	 	 	 	 	 	 	 d*d       Z0d+d,dZ1d-dZ2d.dZ3	 d/	 	 	 	 	 	 	 d0dZ4	 d/	 	 	 	 	 d1dZ5d+d2dZ6 G d dejn                  ee         Z8	 	 d3	 	 	 	 	 	 	 d4dZ-	 d/	 	 	 	 	 d5dZ9	 d/	 	 	 	 	 	 	 d6dZ:d-dZ;d7dZ<d7dZ=	 d/	 	 	 	 	 	 	 	 	 	 	 d8dZ>	 d/	 	 	 	 	 	 	 	 	 d9dZ?	 d/	 	 	 	 	 	 	 	 	 d9d Z@	 	 d:	 	 	 	 	 	 	 	 	 	 	 d;d!ZA	 d/	 	 	 	 	 	 	 	 	 d<d"ZB	 d/	 	 	 	 	 	 	 	 	 d=d#ZC	 	 d:	 	 	 	 	 	 	 	 	 	 	 	 	 d>d$ZD	 	 d:	 	 	 	 	 	 	 	 	 	 	 	 	 d>d%ZE	 	 d:	 	 	 	 	 	 	 	 	 	 	 	 	 d?d&ZF	 	 d:	 	 	 	 	 	 	 	 	 	 	 	 	 d?d'ZGd( ZH ej                  e8eH       y)@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    t        j                  | ||      j                         S )zCached search compile.)r   _SearchParserparse)pattern
re_verbose
re_unicodepattern_types       N/var/www/html/content_weaver/venv/lib/python3.12/site-packages/backrefs/bre.py_cached_search_compiler=   G   s"     ##GZDJJLL    c                l    t        j                  | |t        |t        z              j	                         S )zCached replace compile.)r   _ReplaceParserboolFORMATr7   )r8   replflagsr;   s       r<   _cached_replace_compilerE   S   s+     $$WdD4HIOOQQr>   c                    | s t         j                         j                  }|S t        j                         j                  }|S )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    t         j                          t        j                          y)zPurge the cache.N)rE   cache_clearr=    r>   r<   _purge_cacherO   i   s     '')&&(r>   c                "    t        | t              S )z$Check if object is a replace object.)
isinstancer   )objs    r<   _is_replacerS   p   s     c?++r>   c                    | t        d      t        |t              r|j                  |       S t	        j
                  | j                  |t        |t        z              j                         j                  |       S )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   sd     	y)**$({{1~$$QTT4efn1EFLLNUUVWXXr>   c                   t        | t        t        f      rt        t        |z        }d}t        t
        t        z  |z        rd}nt        t        |z        rd}|t        z  st        | ||t        |             }|S t        j                  | ||      j                         }|S t        | t              r|rt        d      | j                   }|S t        | t"              r|rt        d      | }|S t%        d      )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                    t        | t              r(| j                  |k7  r|rt        d      t        d      yt        | t        t
        f      st        d      y)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      s[     $(??j( !KLL !VWW	 )
 sEl+GHH ,r>   c                      e Zd ZU dZded<   ded<   ded<   dZdd  fd	Zed!d
       Zed"d       Z	ed#d       Z
ed$d       Zed%d       Zd"dZd&dZd&dZd'dZ	 d(	 	 	 	 	 d)dZ	 d*	 	 	 	 	 d+dZ	 	 	 	 	 	 	 	 d,dZ	 	 	 	 	 	 	 	 d,dZ	 	 	 	 	 	 	 	 d,dZ	 	 	 	 	 	 	 	 d-dZ	 	 	 	 	 	 	 	 d.dZ	 	 	 	 	 	 	 	 d/dZ	 	 	 	 	 	 	 	 	 	 d0dZ	 	 	 	 	 	 	 	 	 	 d0dZ	 	 	 	 	 	 	 	 	 	 d1dZ	 	 	 	 	 	 	 	 	 	 d1dZ xZS )2r0   zBre object.Pattern[AnyStr]r^   rA   auto_compileint_hashr^   rh   rj   c           
     h    t         |   ||t        t        |       t        |      ||f             y)zInitialization.rk   N)super__init__hashr]   )selfr8   rh   	__class__s      r<   rn   zBre.__init__   s6     	%T
DM7LIJ 	 	
r>   c                .    | j                   j                  S )zReturn pattern.)r^   r8   rp   s    r<   r8   zBre.pattern        }}$$$r>   c                .    | j                   j                  S )zReturn flags.)r^   rD   rs   s    r<   rD   z	Bre.flags   s     }}"""r>   c                .    | j                   j                  S )zReturn group index.)r^   
groupindexrs   s    r<   rw   zBre.groupindex   s     }}'''r>   c                B    t        d| j                  j                        S )zReturn groups.tuple[AnyStr | None, ...])r   r^   groupsrs   s    r<   rz   z
Bre.groups   s     /1E1EFFr>   c                .    | j                   j                  S )zReturn scanner.)r^   scannerrs   s    r<   r|   zBre.scanner   rt   r>   c                    | j                   S )zHash.)rj   rs   s    r<   __hash__zBre.__hash__   s     zzr>   c                    t        |t              xr4 | j                  |j                  k(  xr | j                  |j                  k(  S zEqual.rQ   r0   r^   rh   rp   others     r<   __eq__z
Bre.__eq__   sA     uc" 4MMU^^+4!3!33	
r>   c                    t        |t               xs4 | j                  |j                  k7  xs | j                  |j                  k7  S r   r   r   s     r<   __ne__z
Bre.__ne__   sD     5#&& 4MMU^^+4!3!33	
r>   c                    dj                  | j                  | j                  j                  | j                  | j
                        S )zRepresentation.z{}.{}({!r}, auto_compile={!r}))format
__module__rq   __name__r^   rh   rs   s    r<   __repr__zBre.__repr__   s8     066OOT^^44dmmTEVEV
 	
r>   c                d   t        |t              r||j                  k7  rt        d      |S t        |t              s"t        |t        t
        f      r:| j                  r.| j                  ||rt        |t              s
t              S d      S t        |t        t
        f      r|rt        d      |S )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\   rh   r-   rB   AttributeError)rp   templaterd   s      r<   _auto_compilezBre._auto_compile  s     h0X000 !NOO  /2z(SRWL7Y^b^o^o<<Z
S[]lHm6vvstvv3,/J !!ghhr>   c                0    t        | j                  ||      S )zCompile replace.)r/   r^   )rp   rC   rD   s      r<   r-   zBre.compile  s     t}}dE::r>   c                B     | j                   j                  |g|i |S )zApply `search`.)r^   r   rp   stringargskwargss       r<   r   z
Bre.search  s%     $t}}##F<T<V<<r>   c                B     | j                   j                  |g|i |S )zApply `match`.)r^   r   r   s       r<   r   z	Bre.match)  %     #t}}""6;D;F;;r>   c                B     | j                   j                  |g|i |S )zApply `fullmatch`.)r^   r   r   s       r<   r   zBre.fullmatch3  s%     't}}&&v????r>   c                B     | j                   j                  |g|i |S )zApply `split`.)r^   r   r   s       r<   r   z	Bre.split=  r   r>   c                B     | j                   j                  |g|i |S )zApply `findall`.)r^   r   r   s       r<   r   zBre.findallG  s%     %t}}$$V=d=f==r>   c                B     | j                   j                  |g|i |S )zApply `finditer`.)r^   r   r   s       r<   r   zBre.finditerQ  s%     &t}}%%f>t>v>>r>   c                b     | j                   j                  | j                  |      |g|i |S )zApply `sub`.r^   r   r   rp   rC   r   r   r   s        r<   r   zBre.sub[  s2     !t}}  !3!3D!96SDSFSSr>   c                d     | j                   j                  | j                  |d      |g|i |S )&Apply `sub` with format style replace.Tr   r   s        r<   r   zBre.subff  s5     !t}}  !3!3D$!?Y$YRXYYr>   c                b     | j                   j                  | j                  |      |g|i |S )'Apply `subn` with format style replace.r^   r   r   r   s        r<   r   zBre.subnq  s2     "t}}!!$"4"4T":FTTTVTTr>   c                d     | j                   j                  | j                  |d      |g|i |S )%Apply `subn` after applying backrefs.Tr   r   s        r<   r   z	Bre.subfn|  s5     "t}}!!$"4"4T4"@&Z4ZSYZZr>   )T)r8   rg   rh   rA   returnNone)r   r	   )r   ri   )r   zMapping[str, int])r   ry   )r   r   )r   r   r   rA   )r   r[   F)r   AnyStr | Callable[..., AnyStr]rd   rA   r   r   r   )rC   r   rD   ri   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____doc____annotations__	__slots__rn   propertyr8   rD   rw   rz   r|   r~   r   r   r   r   r-   r   r   r   r   r   r   r   r   r   r   __classcell__)rq   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                    t        | t              r|t        d      |dk7  rt        d      | S |d}t        t        | |      |      S )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   rh   s      r<   r-   r-     sW     '3#PQQaZTUUL>'51<@@r>   c                B    t        j                  t        | |      |      S )z(Compile with extended search references.)_rer-   rb   )r8   rD   s     r<   r.   r.     s     ;;-gu=uEEr>   c                   | t        | t              rt        |t        t        f      rc| j                  t
        z  st        | ||t        |            }|S t        j                  | |t        |t        z              j                         }|S t        |t              r4|rt        d      |j                  t!        |       k7  rt        d      |}|S t#        d      t#        d      )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_hashro   r`   )r8   rC   rD   calls       r<   r/   r/     s     z'8<dS%L)MME).weT$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                 @    t                t        j                          y)zPurge caches.N)rO   r   r   rN   r>   r<   r   r     s     NIIKr>   c                0    t        |       t        | |      S )z8Expand the string using the replace pattern or function.)re   rX   rW   rC   s     r<   r   r     s     t"1d++r>   c                >    t        |d       t        | |t              S )z?Expand the string using the format replace pattern or function.TrD   )re   rX   rB   r   s     r<   r   r     s     tT""1d&99r>   c                L    t        j                  t        | |      ||g|i |S )z'Apply `search` after applying backrefs.)r   r   rb   )r8   r   rD   r   r   s        r<   r   r     s*     ::,We<fe]d]V\]]r>   c                H    t        j                  t        | |      |fd|i|S )z&Apply `match` after applying backrefs.rD   )r   r   rb   r8   r   rD   r   s       r<   r   r     s(     99+GU;V[5[TZ[[r>   c                H    t        j                  t        | |      |fd|i|S )z*Apply `fullmatch` after applying backrefs.rD   )r   r   rb   r   s       r<   r   r     s(     ==/?_u_X^__r>   c                J    t        j                  t        | |      |f||d|S )z&Apply `split` after applying backrefs.)maxsplitrD   )r   r   rb   )r8   r   r   rD   r   s        r<   r   r     s9     99w. 	
  r>   c                H    t        j                  t        | |      |fd|i|S )z(Apply `findall` after applying backrefs.rD   )r   r   rb   r   s       r<   r   r     s(     ;;-gu=v]U]V\]]r>   c                H    t        j                  t        | |      |fd|i|S )z)Apply `finditer` after applying backrefs.rD   )r   r   rb   r   s       r<   r   r     s(     <<.w>^e^W]^^r>   c                   t        |      }t        |t        t        f      }|r,t	        t
        t           |      j                  rt        d      t        | |      } t        j                  | |s|rt        | |      n||f|dd|S )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We,G77+5$	'   r>   c                &   t        |      }t        |t        t        f      }|r,t	        t
        t           |      j                  st        d      t        | |      } |rt        nd}t        j                  | |s|rt        | ||      n||f|dd|S )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We,G VaF779Cy$f	5VZ   r>   c                   t        |      }t        |t        t        f      }|r,t	        t
        t           |      j                  rt        d      t        | |      } t        j                  | |s|rt        | |      n||f|dd|S )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We,G88+5$	'   r>   c                &   t        |      }t        |t        t        f      }|r,t	        t
        t           |      j                  st        d      t        | |      } |rt        nd}t        j                  | |s|rt        | ||      n||f|dd|S )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We,G VaF889Cy$f	5VZ   r>   c                >    t         | j                  | j                  ffS )N)r0   r^   rh   )ra   s    r<   _pickler     s    Q^^,,,r>   )
r8   r	   r9   rA   r:   rA   r;   type[AnyStr]r   r	   )
r8   rg   rC   r	   rD   ri   r;   r   r   zReplaceTemplate[AnyStr]r   )rI   rA   r   ri   )r   r   )rR   r   r   rA   r   )rW   r   rC    ReplaceTemplate[AnyStr] | AnyStrrD   ri   r   r	   )r8   &AnyStr | Pattern[AnyStr] | Bre[AnyStr]rD   ri   r   zAnyStr | Pattern[AnyStr])rC   r   rd   rA   r   r   )r   N)r8   r   rD   ri   rh   zbool | Noner   zBre[AnyStr])r8   r   rD   ri   r   rg   )r8   rg   rC   r   rD   ri   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   ri   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   ri   rD   r   r   r   r   r	   )r8   r   rC   r   r   r	   r   ri   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>   