
    o)f*                        d dl Z d dlZd dlZd dlZej
                  r+d dlZ G d dej                        Z	 ej                  d      ZdZddZ G d d	e      Z G d
 dej                         Z ej$                  dee      Zdedej,                  ej.                     dej0                  ej.                  gef   defdZ G d d      Z	 ddlmZ ddlmZ ddlmZ y# e$ r ddl mZ ddl mZ ddl mZ Y yw xY w)    Nc                       e Zd ZdefdZy)HasHTMLreturnc                      y N selfs    P/var/www/html/flask-app/venv/lib/python3.12/site-packages/markupsafe/__init__.py__html__zHasHTML.__html__
   s        N)__name__
__module____qualname__strr   r   r   r   r   r   	   s    	c 	r   r   _Pz2.1.5r   c                 D     t        j                         d fd       }|S )Nc                     t        t        |      t        |      | j                        }t        ||j	                         | j                         | j                   | g|i |      S r   )_escape_argspeclist	enumerateescapeitems	__class__)r
   argskwargsarg_listfuncs       r   wrappedz)_simple_escaping_wrapper.<locals>.wrapped   sQ    "4:yL<~~d4=(=f=>>r   )r
   Markupr   z_P.argsr   z	_P.kwargsr   r    )	functoolswraps)r   r   s   ` r   _simple_escaping_wrapperr#      s%    __T? ?
 Nr   c            	       
    e Zd ZdZdZ	 d)dej                  dej                  e   deddf fdZ	d*d	Z
d
ej                  edf   ddf fdZd
ej                  edf   ddfdZd+ fdZeZdej                  ddf fdZdef fdZdej$                  ej                  edf      ddf fdZej&                  j                  e_        	 d,dej                  e   dedej*                  d   f fdZej,                  j                  e_        	 d,dej                  e   dedej*                  d   f fdZej.                  j                  e_        	 d-dedej*                  d   f fdZej2                  j                  e_        defdZdefdZedej                  ddfd       Z eej>                        Z eej@                        Z  eejB                        Z! eejD                        Z" eejF                        Z# eejH                        Z$ eejJ                        Z% eejL                        Z& eejN                        Z' eejP                        Z( eejR                        Z) eejT                        Z* eejV                        Z+ eejX                        Z, eejZ                        Z- eej\                        Z. eej^                        Z/e0jb                  dk\  r$ eejd                        Z2 eejf                        Z3dedejh                  d   f fd Z5dedejh                  d   f fd!Z6d"ej                  d#ej                  ddfd$Z7d%ejp                  eej                  f   ddfd&Z9d'eddfd(Z: xZ;S ).r    a  A string that is ready to be safely inserted into an HTML or XML
    document, either because it was escaped or because it was marked
    safe.

    Passing an object to the constructor converts it to text and wraps
    it to mark it safe without escaping. To escape the text, use the
    :meth:`escape` class method instead.

    >>> Markup("Hello, <em>World</em>!")
    Markup('Hello, <em>World</em>!')
    >>> Markup(42)
    Markup('42')
    >>> Markup.escape("Hello, <em>World</em>!")
    Markup('Hello &lt;em&gt;World&lt;/em&gt;!')

    This implements the ``__html__()`` interface that some frameworks
    use. Passing an object that implements ``__html__()`` will wrap the
    output of that method, marking it safe.

    >>> class Foo:
    ...     def __html__(self):
    ...         return '<a href="/foo">foo</a>'
    ...
    >>> Markup(Foo())
    Markup('<a href="/foo">foo</a>')

    This is a subclass of :class:`str`. It has the same methods, but
    escapes their arguments and returns a ``Markup`` instance.

    >>> Markup("<em>%s</em>") % ("foo & bar",)
    Markup('<em>foo &amp; bar</em>')
    >>> Markup("<em>Hello</em> ") + "<foo>"
    Markup('<em>Hello</em> &lt;foo&gt;')
    r   baseencodingerrorsr   te.Selfc                     t        |d      r|j                         }|t        |   | |      S t        |   | |||      S Nr   )hasattrr   super__new__)clsr%   r&   r'   r   s       r   r-   zMarkup.__new__C   sF     4$==?D7?3--wsD(F;;r   c                     | S r   r   r	   s    r   r   zMarkup.__html__N   s    r   otherr   c                     t        |t              st        |d      r-| j                  t        |   | j                  |                  S t        S r*   )
isinstancer   r+   r   r,   __add__r   NotImplemented)r
   r0   r   s     r   r3   zMarkup.__add__Q   s=    eS!WUJ%?>>%'/$++e2D"EFFr   c                     t        |t              st        |d      r | j                  |      j	                  |       S t
        S r*   )r2   r   r+   r   r3   r4   )r
   r0   s     r   __radd__zMarkup.__radd__W   s5    eS!WUJ%?;;u%--d33r   c                 l    t        |t              r| j                  t        |   |            S t
        S r   )r2   intr   r,   __mul__r4   )r
   numr   s     r   r9   zMarkup.__mul__]   s+    c3>>%'/#"677r   argc                 2    t        |t              rt         fd|D              }nSt        t        |      d      r't        |t              st        | j                        }nt        | j                        f} j                  t         %  |            S )Nc              3   J   K   | ]  }t        |j                          y wr   )_MarkupEscapeHelperr   ).0xr
   s     r   	<genexpr>z!Markup.__mod__.<locals>.<genexpr>h   s     I+At{{;Is    #__getitem__)
r2   tupler+   typer   r>   r   r   r,   __mod__)r
   r;   r   s   ` r   rE   zMarkup.__mod__e   sq    c5!ISIICT#Y.z#s7K%c4;;7C 'sDKK8:C~~egoc233r   c                 T    | j                   j                   dt        |           dS )N())r   r   r,   __repr__)r
   r   s    r   rI   zMarkup.__repr__r   s*    ..))*!EG,<,>+?qAAr   seqc                 h    | j                  t        | 	  t        | j                  |                  S r   )r   r,   joinmapr   )r
   rJ   r   s     r   rL   zMarkup.joinu   s&    ~~egl3t{{C+@ABBr   sepmaxsplitc                 h    t         |   ||      D cg c]  }| j                  |       c}S c c}w r   )r,   splitr   r
   rN   rO   vr   s       r   rQ   zMarkup.splitz   s-     ,17=h+GHaq!HHH   /c                 h    t         |   ||      D cg c]  }| j                  |       c}S c c}w r   )r,   rsplitr   rR   s       r   rV   zMarkup.rsplit   s-     ,17>#x+HIaq!IIIrT   keependsc                 f    t         |   |      D cg c]  }| j                  |       c}S c c}w r   )r,   
splitlinesr   )r
   rW   rS   r   s      r   rY   zMarkup.splitlines   s,     ,17+=h+GHaq!HHHs   .c                 0    ddl m}  |t        |             S )u   Convert escaped markup back into a text string. This replaces
        HTML entities with the characters they represent.

        >>> Markup("Main &raquo; <em>About</em>").unescape()
        'Main » <em>About</em>'
        r   )unescape)htmlr[   r   )r
   r[   s     r   r[   zMarkup.unescape   s     	"D	""r   c                    t        |       }	 |j                  d      }|dk(  rn(|j                  d|      }|dk(  rn|d|  ||dz   d  }?	 |j                  d      }|dk(  rn(|j                  d|      }|dk(  rn|d|  ||dz   d  }?d	j                  |j                               }| j	                  |      j                         S )
u   :meth:`unescape` the markup, remove tags, and normalize
        whitespace to single spaces.

        >>> Markup("Main &raquo;	<em>About</em>").striptags()
        'Main » About'
        z<!--z-->N   <>    )r   findrL   rQ   r   r[   )r
   valuestartends       r   	striptagszMarkup.striptags   s     D	
 JJv&E{ **UE*CbyVe}oeC!GHo%67E   JJsOE{**S%(CbyVe}oeC!GHo%67E  '~~e$--//r   sc                 H    t        |      }|j                  | ur | |      S |S )ztEscape a string. Calls :func:`escape` and ensures that for
        subclasses the correct type is returned.
        )r   r   )r.   ri   rvs      r   r   zMarkup.escape   s'    
 AY<<s"r7N	r   )r_   	   )r(   r(   r(   c                     t         |   | j                  |            \  }}}| j                  } ||       ||       ||      fS r   )r,   	partitionr   r   r
   rN   lri   rr.   r   s         r   rn   zMarkup.partition   sC    '#DKK$451ann1vs1vs1v%%r   c                     t         |   | j                  |            \  }}}| j                  } ||       ||       ||      fS r   )r,   
rpartitionr   r   ro   s         r   rs   zMarkup.rpartition   sC    '$T[[%561ann1vs1vs1v%%r   r   r   c                 p    t        | j                        }| j                  |j                  | ||            S r   EscapeFormatterr   r   vformat)r
   r   r   	formatters       r   formatzMarkup.format   s.    #DKK0	~~i//dFCDDr   rM   c                 p    t        | j                        }| j                  |j                  | d|            S )Nr   ru   )r
   rM   rx   s      r   
format_mapzMarkup.format_map   s0     $DKK0	~~i//b#>??r   format_specc                      |rt        d      | S )Nz,Unsupported format specification for Markup.)
ValueError)r
   r|   s     r   __html_format__zMarkup.__html_format__   s    KLLr   ) Nstrict)r   r(   )r:   zte.SupportsIndexr   r(   )Nr^   )F)<r   r   r   __doc__	__slots__tAnyOptionalr   r-   r   Unionr3   r6   r9   __rmul__rE   rI   IterablerL   r8   ListrQ   rV   boolrY   r[   rh   classmethodr   r#   rB   
capitalizetitlelowerupperreplaceljustrjustlstriprstripcenterstrip	translate
expandtabsswapcasezfillcasefoldsysversion_inforemoveprefixremovesuffixTuplern   rs   ry   Mappingr{   r   __classcell__r   s   @r   r    r       s   !F I PX	<55	<)*C	<IL	<		<QWWS)^4  aggc9n5 )  H4155 4Y 4B# BC

1773	>#:; C	 C 88##DL <>I::c?I58I	
		I
 II%%EM <>J::c?J58J	
		J
 ZZ''FN  %II	
		I
 //J	## 	#+03 +0Z 	quu 	 	 	 +3??;K)#..9J$SYY/E$SYY/E$SYY/E&s{{3G$SYY/E$SYY/E%cjj1F%cjj1F%cjj1F$SYY/E(7I)#..9J'5H$SYY/E'5H
6!/0@0@A/0@0@A&S &QWW-L%M &
&c &agg.M&N &
EAEE EQUU Ey E@99S!%%Z(@	@3 9 r   r    c                        e Zd ZdZdej
                  ej                  gef   ddf fdZdej                  de	de	fdZ
 xZS )	rv   r   r   r   Nc                 0    || _         t        | 	          y r   )r   r,   __init__)r
   r   r   s     r   r   zEscapeFormatter.__init__  s    r   re   r|   c                 :   t        |d      r|j                  |      }ndt        |d      r.|rt        d| dt        |       d      |j	                         }n*t
        j                  j                  | |t        |            }t        | j                  |            S )Nr   r   zFormat specifier z given, but z{ does not define __html_format__. A class that defines __html__ must define __html_format__ to work with format specifiers.)
r+   r   r~   rD   r   string	Formatterformat_fieldr   r   )r
   re   r|   rk   s       r   r   zEscapeFormatter.format_field  s    5+,&&{3BUJ' '}Le NG G 
 !B !!..tUC<LMB4;;r?##r   )r   r   r   r   r   Callabler   r    r   r   r   r   r   s   @r   rv   rv     sL    Iqzz155'6/: t $!%% $c $c $r   rv   _ListOrDictobjiterabler   c                 j    |D ]-  \  }}t        |t              st        |d      s# ||      | |<   / | S )z,Helper for various string-wrapped functions.r   )r2   r   r+   )r   r   r   keyre   s        r   r   r      s>      %
UeS!WUJ%?e}CH% Jr   c                       e Zd ZdZdZdej                  dej                  ej                  gef   ddfdZ	dej                  dd	fd
Z
defdZdefdZdefdZdefdZy)r>   z"Helper for :meth:`Markup.__mod__`.r   r   r   r   r   Nc                      || _         || _        y r   r   )r
   r   r   s      r   r   z_MarkupEscapeHelper.__init__0  s    r   itemr(   c                 T    | j                  | j                  |   | j                        S r   )r   r   r   )r
   r   s     r   rB   z_MarkupEscapeHelper.__getitem__4  s    ~~dhhtndkk::r   c                 J    t        | j                  | j                              S r   )r   r   r   r	   s    r   __str__z_MarkupEscapeHelper.__str__7  s    4;;txx())r   c                 \    t        | j                  t        | j                                    S r   )r   r   reprr   r	   s    r   rI   z_MarkupEscapeHelper.__repr__:  s    4;;tDHH~.//r   c                 ,    t        | j                        S r   )r8   r   r	   s    r   __int__z_MarkupEscapeHelper.__int__=  s    488}r   c                 ,    t        | j                        S r   )floatr   r	   s    r   	__float__z_MarkupEscapeHelper.__float__@  s    TXXr   )r   r   r   r   r   r   r   r   r    r   rB   r   r   rI   r8   r   r   r   r   r   r   r>   r>   +  s    ,!IAEE 1::quugvo+F 4 ; ;) ;* *0# 0 5 r   r>   rb   r   )escape_silent)soft_str)r   zt.Callable[_P, str]r   zt.Callable[_P, Markup])!r!   r   r   typingr   TYPE_CHECKINGtyping_extensionsteProtocolr   	ParamSpecr   __version__r#   r   r    r   rv   TypeVarr   dictr   r   r   r   r   r>   	_speedupsr   r   r   ImportError_nativer   r   r   <module>r      s      
 ??""++  
d	B dS dN$f&& $2 aiitT2	 !

155 1;<::quugvo;V 4.+9/ .)7-.s   
C C76C7