
    /h3                    >   d dl mZ d dlmZ d dlZd dlZ	 ddlm	Z	 n# e
$ r	 ddlm	Z	 Y nw xY wej        rd dlZ G d dej                  Z G d dej                  ZddZddZddZ G d de          Z G d dej                  Z G d d          ZddZdS )    )annotationsN   )_escape_innerc                      e Zd ZddZdS )_HasHTMLreturnstrc                   d S N selfs    F/var/www/html/venv/lib/python3.11/site-packages/markupsafe/__init__.py__html__z_HasHTML.__html__             Nr   r	   )__name__
__module____qualname__r   r   r   r   r   r      s        %%%%%%r   r   c                      e Zd ZddZdS )	_TPEscapest.Anyr   Markupc                   d S r   r   )r   r   s     r   __call__z_TPEscape.__call__   r   r   Nr   r   r   r   )r   r   r   r   r   r   r   r   r      s        222222r   r   r   r   r   r   c                  t          |           t          u rt          t          |                     S t	          | d          r!t          |                                           S t          t          t          |                               S )a  Replace the characters ``&``, ``<``, ``>``, ``'``, and ``"`` in
    the string with HTML-safe sequences. Use this if you need to display
    text that might contain such characters in HTML.

    If the object has an ``__html__`` method, it is called and the
    return value is assumed to already be safe for HTML.

    :param s: An object to be converted to a string and escaped.
    :return: A :class:`Markup` string with the escaped text.
    r   )typer	   r   r   hasattrr   r   s    r   escaper#      sm     Aww#~~mA&&'''q* $ajjll###-A''(((r   t.Any | Nonec               @    | t                      S t          |           S )a  Like :func:`escape` but treats ``None`` as the empty string.
    Useful with optional values, as otherwise you get the string
    ``'None'`` when the value is ``None``.

    >>> escape(None)
    Markup('None')
    >>> escape_silent(None)
    Markup('')
    )r   r#   r"   s    r   escape_silentr&   0   s     	yxx!99r   r	   c               N    t          | t                    st          |           S | S )a  Convert an object to a string if it isn't already. This preserves
    a :class:`Markup` string rather than converting it back to a basic
    string, so it will still be marked as safe and won't be escaped
    again.

    >>> value = escape("<User 1>")
    >>> value
    Markup('&lt;User 1&gt;')
    >>> escape(str(value))
    Markup('&amp;lt;User 1&amp;gt;')
    >>> escape(soft_str(value))
    Markup('&lt;User 1&gt;')
    )
isinstancer	   r"   s    r   soft_strr)   @   s&     a 1vvHr   c                       e Zd ZdZdZ	 dWdX fdZdYdZdZ fdZdZdZd[ fdZ	d[ fdZ
d\ fdZd] fdZd^ fdZ	 d_d` fd Z	 d_d` fd!Z	 dadb fd%Zd]d&Zd]d'Zedcd)            Zdd fd,ZdY fd-ZdY fd.ZdY fd/ZdY fd0Zdedf fd4Zdgdh fd8Zdgdh fd9Zdidj fd;Zdidj fd<Zdgdh fd=Zdidj fd>Z dk fdAZ!dldm fdDZ"dY fdEZ#dn fdFZ$dY fdGZ%do fdIZ&dp fdKZ'dq fdMZ(dq fdNZ)drdQZ*dsdTZ+dtdVZ, xZ-S )ur   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    Nstrictobjectr   encoding
str | Noneerrorsr	   r   te.Selfc                    t          |d          r|                                }|"t                                          | |          S t                                          | |||          S Nr   )r!   r   super__new__)clsr-   r.   r0   	__class__s       r   r5   zMarkup.__new__z   s`     6:&& 	'__&&F77??3///wwsFHf===r   c                   | S r   r   r   s    r   r   zMarkup.__html__   s    r   valuestr | _HasHTMLc                   t          |t                    st          |d          rG|                     t	                                          |                     |                              S t          S r3   )r(   r	   r!   r7   r4   __add__r#   NotImplementedr   r9   r7   s     r   r<   zMarkup.__add__   s\    eS!! 	GWUJ%?%? 	G>>%''//$++e2D2D"E"EFFFr   c                   t          |t                    st          |d          r(|                     |                              |           S t
          S r3   )r(   r	   r!   r#   r<   r=   )r   r9   s     r   __radd__zMarkup.__radd__   sK    eS!! 	4WUJ%?%? 	4;;u%%--d333r   t.SupportsIndexc               l    |                      t                                          |                    S r   r7   r4   __mul__r>   s     r   rD   zMarkup.__mul__   %    ~~eggooe44555r   c               l    |                      t                                          |                    S r   rC   r>   s     r   __rmul__zMarkup.__rmul__   rE   r   c                   t          |t                    rt           fd|D                       }n^t          t          |          d          r+t          |t                    st          | j                  }nt          | j                  f}                     t                      	                    |                    S )Nc              3  B   K   | ]}t          |j                  V  d S r   )_MarkupEscapeHelperr#   ).0xr   s     r   	<genexpr>z!Markup.__mod__.<locals>.<genexpr>   s0      MM!-a==MMMMMMr   __getitem__)
r(   tupler!   r    r	   rJ   r#   r7   r4   __mod__r>   s   ` r   rP   zMarkup.__mod__   s    eU## 	?MMMMuMMMMMEET%[[-00 	?E39O9O 	?'t{;;EE )<<>E~~eggooe44555r   c               d    | j         j         dt                                                       dS )N())r7   r   r4   __repr__r   r7   s    r   rT   zMarkup.__repr__   s/    .)AAEGG,<,<,>,>AAAAr   iterablecabc.Iterable[str | _HasHTML]c                   |                      t                                          t          | j        |                              S r   )r7   r4   joinmapr#   )r   rV   r7   s     r   rY   zMarkup.join   s1    ~~eggll3t{H+E+EFFGGGr   sepmaxsplitlist[te.Self]c               b      fdt                                          ||          D             S )Nc                :    g | ]}                     |          S r   r7   rK   vr   s     r   
<listcomp>z Markup.split.<locals>.<listcomp>   %    HHHaq!!HHHr   )r4   splitr   r\   r]   r7   s   `  r   rf   zMarkup.split   s3     IHHH577==h+G+GHHHHr   c               b      fdt                                          ||          D             S )Nc                :    g | ]}                     |          S r   ra   rb   s     r   rd   z!Markup.rsplit.<locals>.<listcomp>   s%    IIIaq!!IIIr   )r4   rsplitrg   s   `  r   rj   zMarkup.rsplit   s3     JIII577>>#x+H+HIIIIr   Fkeependsboolc               `      fdt                                          |          D             S )Nc                :    g | ]}                     |          S r   ra   rb   s     r   rd   z%Markup.splitlines.<locals>.<listcomp>   re   r   )r4   
splitlines)r   rk   r7   s   ` r   ro   zMarkup.splitlines   s3     IHHH577+=+=h+G+GHHHHr   c               >    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)htmlrq   r	   )r   rq   s     r   rq   zMarkup.unescape   s,     	"!!!!!xD		"""r   c               l   t          |           }|                    d          x}dk    rQ|                    d|          x}dk    rn4|d|          ||dz   d          }|                    d          x}dk    Q|                    d          x}dk    rQ|                    d|          x}dk    rn4|d|          ||dz   d          }|                    d          x}dk    Qd	                    |                                          }|                     |                                          S )
u   :meth:`unescape` the markup, remove tags, and normalize
        whitespace to single spaces.

        >>> Markup("Main &raquo;	<em>About</em>").striptags()
        'Main » About'
        z<!--r[   z-->N   <>r    )r	   findrY   rf   r7   rq   )r   r9   startends       r   	striptagszMarkup.striptags   sF    D		 

6***ur11zz%///B66VeV}7eC!GHHo77E 

6***ur11 

3'uB..zz#u---"44VeV}7eC!GHHo77E	 

3'uB.. ''~~e$$--///r   r   c               L    t          |          }|j        | ur | |          S |S )ztEscape a string. Calls :func:`escape` and ensures that for
        subclasses the correct type is returned.
        )r#   r7   )r6   r   rvs      r   r#   zMarkup.escape   s.    
 AYY<s""3r77N	r   keyt.SupportsIndex | slicec               l    |                      t                                          |                    S r   )r7   r4   rN   )r   r~   r7   s     r   rN   zMarkup.__getitem__   s'    ~~egg11#66777r   c               j    |                      t                                                                S r   )r7   r4   
capitalizerU   s    r   r   zMarkup.capitalize   s%    ~~egg0022333r   c               j    |                      t                                                                S r   )r7   r4   titlerU   s    r   r   zMarkup.title   !    ~~eggmmoo...r   c               j    |                      t                                                                S r   )r7   r4   lowerrU   s    r   r   zMarkup.lower   r   r   c               j    |                      t                                                                S r   )r7   r4   upperrU   s    r   r   zMarkup.upper   r   r   oldnewcountc                   |                      t                                          ||                     |          |                    S r   )r7   r4   replacer#   )r   r   r   r   r7   s       r   r   zMarkup.replace  s5    ~~eggooc4;;s3C3CUKKLLLr   rw   widthfillcharc                   |                      t                                          ||                     |                              S r   )r7   r4   ljustr#   r   r   r   r7   s      r   r   zMarkup.ljust  3    ~~eggmmE4;;x3H3HIIJJJr   c                   |                      t                                          ||                     |                              S r   )r7   r4   rjustr#   r   s      r   r   zMarkup.rjust  r   r   charsc               l    |                      t                                          |                    S r   )r7   r4   lstripr   r   r7   s     r   r   zMarkup.lstrip
  %    ~~eggnnU33444r   c               l    |                      t                                          |                    S r   )r7   r4   rstripr   s     r   r   zMarkup.rstrip  r   r   c                   |                      t                                          ||                     |                              S r   )r7   r4   centerr#   r   s      r   r   zMarkup.center  s3    ~~eggnnUDKK4I4IJJKKKr   c               l    |                      t                                          |                    S r   )r7   r4   stripr   s     r   r   zMarkup.strip  %    ~~eggmmE22333r   table#cabc.Mapping[int, str | int | None]c               l    |                      t                                          |                    S r   )r7   r4   	translate)r   r   r7   s     r   r   zMarkup.translate  s)    
 ~~egg//66777r      tabsizec               l    |                      t                                          |                    S r   )r7   r4   
expandtabs)r   r   r7   s     r   r   zMarkup.expandtabs  s'    ~~egg0099:::r   c               j    |                      t                                                                S r   )r7   r4   swapcaserU   s    r   r   zMarkup.swapcase   %    ~~egg..00111r   c               l    |                      t                                          |                    S r   )r7   r4   zfill)r   r   r7   s     r   r   zMarkup.zfill#  r   r   c               j    |                      t                                                                S r   )r7   r4   casefoldrU   s    r   r   zMarkup.casefold&  r   r   prefixc               l    |                      t                                          |                    S r   )r7   r4   removeprefix)r   r   r7   s     r   r   zMarkup.removeprefix)  '    ~~egg226::;;;r   suffixc                l    |                      t                                          |                    S r   )r7   r4   removesuffix)r   r   r7   s     r   r   zMarkup.removesuffix,  r   r    tuple[te.Self, te.Self, te.Self]c                   t                                          |          \  }}}| j        } ||           ||           ||          fS r   )r4   	partitionr7   r   r\   leftrightr6   r7   s        r   r   zMarkup.partition/  sM     77,,S11c5ns4yy##c((CCJJ..r   c                   t                                          |          \  }}}| j        } ||           ||           ||          fS r   )r4   
rpartitionr7   r   s        r   r   zMarkup.rpartition4  sM     77--c22c5ns4yy##c((CCJJ..r   argskwargsc                ~    t          | j                  }|                     |                    | ||                    S r   EscapeFormatterr#   r7   vformat)r   r   r   	formatters       r   formatzMarkup.format9  s5    #DK00	~~i//dFCCDDDr   mappingcabc.Mapping[str, t.Any]c               ~    t          | j                  }|                     |                    | d|                    S )Nr   r   )r   r   r   s      r   
format_mapzMarkup.format_map=  s7    
 $DK00	~~i//b'BBCCCr   format_specc               (    |rt          d          | S )Nz,Unsupported format specification for Markup.)
ValueError)r   r   s     r   __html_format__zMarkup.__html_format__E  s     	MKLLLr   )r+   Nr,   )r-   r   r.   r/   r0   r	   r   r1   )r   r1   )r9   r:   r   r1   )r9   rA   r   r1   )r9   r   r   r1   r   )rV   rW   r   r1   )Nr[   )r\   r/   r]   rA   r   r^   )F)rk   rl   r   r^   )r   r   r   r1   )r~   r   r   r1   )r[   )r   r	   r   r	   r   rA   r   r1   )rw   )r   rA   r   r	   r   r1   r   )r   r/   r   r1   )r   r   r   r	   )r   )r   rA   r   r1   )r   rA   r   r1   )r   r	   r   r1   )r   r	   r   r1   )r\   r	   r   r   )r   r   r   r   r   r1   )r   r   r   r1   )r   r	   r   r1   ).r   r   r   __doc__	__slots__r5   r   r<   r@   rD   rG   rP   rT   rY   rf   rj   ro   rq   r{   classmethodr#   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__ra   s   @r   r   r   T   s       ! !F I MU	> 	> 	> 	> 	> 	> 	>           6 6 6 6 6 66 6 6 6 6 66 6 6 6 6 6B B B B B BH H H H H H FHI I I I I I I FHJ J J J J J J #(I I I I I I I
	# 	# 	# 	#0 0 0 0> 	 	 	 [	8 8 8 8 8 84 4 4 4 4 4/ / / / / // / / / / // / / / / /M M M M M M MK K K K K K KK K K K K K K5 5 5 5 5 5 55 5 5 5 5 5 5L L L L L L L4 4 4 4 4 4 48 8 8 8 8 8; ; ; ; ; ; ;2 2 2 2 2 24 4 4 4 4 42 2 2 2 2 2< < < < < << < < < < </ / / / / /
/ / / / / /
E E E ED D D D       r   c                  0     e Zd ZdZd fdZd fdZ xZS )r   )r#   r#   r   r   Nonec                V    || _         t                                                       d S r   )r#   r4   __init__)r   r#   r7   s     r   r   zEscapeFormatter.__init__O  s&    !'r   r9   r   r   r	   c                   t          |d          r|                    |          }nyt          |d          r:|r#t          d| dt          |           d          |                                }n/t                                          |t          |                    }t          |                     |                    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   r    r   r4   format_fieldr	   r#   )r   r9   r   r}   r7   s       r   r   zEscapeFormatter.format_fieldS  s    5+,, 	?&&{33BBUJ'' 	?  G G Ge G G G  
 !!BB %%eS-=-=>>B4;;r??###r   )r#   r   r   r   )r9   r   r   r	   r   r	   )r   r   r   r   r   r   r   ra   s   @r   r   r   L  s`        I     $ $ $ $ $ $ $ $ $ $r   r   c                  F    e Zd ZdZdZdd	ZddZddZddZddZ	ddZ
dS )rJ   z"Helper for :meth:`Markup.__mod__`.objr#   r   r   r#   r   r   r   c                "    || _         || _        d S r   r   )r   r   r#   s      r   r   z_MarkupEscapeHelper.__init__j  s    !'r   r~   r1   c               N    |                      | j        |         | j                  S r   )r7   r   r#   )r   r~   s     r   rN   z_MarkupEscapeHelper.__getitem__n  s    ~~dhsmT[999r   r	   c               P    t          |                     | j                            S r   )r	   r#   r   r   s    r   __str__z_MarkupEscapeHelper.__str__q  s    4;;tx(()))r   c               j    t          |                     t          | j                                      S r   )r	   r#   reprr   r   s    r   rT   z_MarkupEscapeHelper.__repr__t  s$    4;;tDH~~..///r   intc               *    t          | j                  S r   )r   r   r   s    r   __int__z_MarkupEscapeHelper.__int__w  s    48}}r   floatc               *    t          | j                  S r   )r   r   r   s    r   	__float__z_MarkupEscapeHelper.__float__z  s    TXr   N)r   r   r#   r   r   r   )r~   r   r   r1   r   )r   r   )r   r   )r   r   r   r   r   r   rN   r   rT   r   r   r   r   r   rJ   rJ   e  s        ,,!I( ( ( (: : : :* * * *0 0 0 0        r   rJ   namec                    | dk    r9dd l }dd l}|                    dd           |j                            d          S t          |           )N__version__r   zThe '__version__' attribute is deprecated and will be removed in MarkupSafe 3.1. Use feature detection, or `importlib.metadata.version("markupsafe")`, instead.   )
stacklevel
markupsafe)importlib.metadatawarningswarnmetadataversionAttributeError)r   	importlibr   s      r   __getattr__r   ~  so    }!!!!D 	 	 	
 	
 	
 !)),777


r   r   )r   r$   r   r   )r   r   r   r	   )r   r	   r   r   )
__future__r   collections.abcabccabcstringtypingt	_speedupsr   ImportError_nativeTYPE_CHECKINGtyping_extensionsteProtocolr   r   r#   r&   r)   r	   r   	Formatterr   rJ   r   r   r   r   <module>r     s   " " " " " "           '((((((( ' ' '&&&&&&&&' ? #""""& & & & &qz & & &3 3 3 3 3
 3 3 3) ) ) )0       (u u u u uS u u up$ $ $ $ $f& $ $ $2       2     s    ++