§
    Ètºf*  ã                   óÂ   — d Z ddlZddlZddlmZ ddlmZ ddlmZ  G d„ d¦  «        Z	 G d	„ d
¦  «        Z
 G d„ de
¦  «        Ze
fd„Zd„ Zedk    r e¦   «          dS dS )z"
HTML rendering of Python source.
é    N)Úescape)ÚListé   )Úreflectc                   ó4   — e Zd ZdZd\  ZZdxZZdZd„ Z	d„ Z
dS )ÚTokenPrinterzU
    Format a stream of tokens and intermediate whitespace, for pretty-printing.
    )r   r   r   úutf-8c                 ó   — || _         dS )zJ
        @param writer: A file-like object, opened in bytes mode.
        N)Úwriter)Úselfr   s     úV/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/python/htmlizer.pyÚ__init__zTokenPrinter.__init__   s   € ð ˆŒˆˆó    c                 óT  — t          t          d¦  «        r|t          j        k    r	|| _        d S t	          |t
          ¦  «        s|                     | j        ¦  «        }|\  }}|\  }}	| j        |k     r/|                      d|| j        z
  z  ¦  «         |dc| _        | _	        |                      d|| j	        z
  z  ¦  «         | j
        r
d}d| _        nk|t          j        k    r$t          j        |¦  «        rd}nD| j        rd}n:d	}n7t          j                             |¦  «        }|€J ‚|                     ¦   «         }|                      ||¦  «         |	| _	        | xj        |                     d¦  «        z  c_        | j        |k    rd| _	        |d
v | _
        |dk    r	d| _        d S d S )NÚENCODINGó   
r   ó    Ú
identifierr   ÚkeywordÚ	parameterÚvariable)s   defs   classó   :)ÚhasattrÚtokenizer   ÚencodingÚ
isinstanceÚbytesÚencodeÚcurrentLiner   Ú
currentColÚlastIdentifierÚ
parametersÚNAMEr   Ú	iskeywordÚtok_nameÚgetÚlowerÚcount)
r   ÚtypeÚtokenÚsCoordinatesÚeCoordinatesÚlineÚsrowÚscolÚerowÚecols
             r   Ú
printtokenzTokenPrinter.printtoken    sÀ  € Ý•8˜ZÑ(Ô(ð 	¨TµXÔ5FÒ-FÐ-FØ!ˆDŒMØˆFå˜%¥Ñ'Ô'ð 	0Ø—L’L ¤Ñ/Ô/ˆEà#‰ˆˆtØ#‰ˆˆtØÔ˜dÒ"Ð"Ø�KŠK˜ ¨Ô(8Ñ!8Ñ9Ñ:Ô:Ð:Ø04°aÐ-ˆDÔ˜dœoØ�Š�D˜D 4¤?Ñ2Ñ3Ñ4Ô4Ð4ØÔð 	 ØˆDØˆDŒOˆOØ•X”]Ò"Ð"ÝÔ  Ñ'Ô'ð &Ø ��à”?ð &Ø&�D�Dà%�D�DåÔ$×(Ò(¨Ñ.Ô.ˆDØÐ#Ð#Ð#Ø—:’:‘<”<ˆDØ�Š�E˜4Ñ Ô Ð ØˆŒØÐÔ˜EŸKšK¨Ñ.Ô.Ñ.ÐÔØÔ˜tÒ#Ð#ØˆDŒOØ#Ð'9Ð9ˆÔØ�DŠ=ˆ=ØˆDŒOˆOˆOð ˆ=r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r   r!   r"   r   r   r2   © r   r   r   r      sW   € € € € € ðð ð #Ñ€J�Ø"#Ð#€N�ZØ€Hðð ð ð$ ð $ ð $ ð $ ð $ r   r   c                   ó<   — e Zd ZU dZg Zee         ed<   d„ Zdd„Z	dS )Ú
HTMLWriterzm
    Write the stream of tokens and whitespace from L{TokenPrinter}, formating
    tokens as HTML spans.
    ÚnoSpanc                 ó\   — || _         g }t          j        | j        d|¦  «         || _        d S )Nr:   )r   r   ÚaccumulateClassListÚ	__class__r:   )r   r   r:   s      r   r   zHTMLWriter.__init__O   s0   € ØˆŒØˆÝÔ# D¤N°H¸fÑEÔEÐEØˆŒˆˆr   Nc                 óN  — t          |t          ¦  «        r|                     d¦  «        }t          |¦  «        }|                     d¦  «        }|�	|| j        v r|                      |¦  «         d S |                      d|                     d¦  «        z   dz   |z   dz   ¦  «         d S )Nr	   s   <span class="py-src-s   ">s   </span>)r   r   Údecoder   r   r:   r   )r   r*   r)   s      r   ÚwritezHTMLWriter.writeU   s½   € Ý�e�UÑ#Ô#ð 	*Ø—L’L Ñ)Ô)ˆEÝ�u‘”ˆØ—’˜WÑ%Ô%ˆØˆL˜d d¤kÐ1Ð1Ø�KŠK˜ÑÔÐÐÐà�KŠKØ'Ø—+’+˜gÑ&Ô&ñ'àñð ñð ñ	ñô ð ð ð r   )N)
r3   r4   r5   r6   r:   r   ÚstrÚ__annotations__r   r@   r7   r   r   r9   r9   G   sY   € € € € € € ðð ð
 €FˆD�ŒIÐÐÑðð ð ðð ð ð ð ð r   r9   c                   ó   — e Zd ZdZg d¢ZdS )ÚSmallerHTMLWriterzi
    HTMLWriter that doesn't generate spans for some junk.

    Results in much smaller HTML output.
    )Ú	endmarkerÚindentÚdedentÚopÚnewlineÚnlN)r3   r4   r5   r6   r:   r7   r   r   rD   rD   f   s&   € € € € € ðð ð FÐEÐE€F€F€Fr   rD   c                 ó<  — |                      d¦  «         t           ||j         ¦  «        j         ¦  «        j        }	 t          j        | j        ¦  «        D ]}|\  }}}}}	 ||||||	¦  «         Œn# t          j        $ r Y nw xY w|                      d¦  «         d S )Ns   <pre>s   </pre>
)r@   r   r2   r   ÚreadlineÚ
TokenError)
ÚinpÚoutr   Úprinterr*   Ú	tokenTypeÚstringÚstartÚendr-   s
             r   ÚfilterrU   p   sÁ   € Ø‡I‚IˆhÑÔÐÝ˜6˜6 #¤)Ñ,Ô,Ô2Ñ3Ô3Ô>€GðÝÔ& s¤|Ñ4Ô4ð 	9ð 	9ˆEØ49Ñ1ˆY˜  s¨DØˆG�I˜v u¨c°4Ñ8Ô8Ð8Ð8ð	9øõ Ôð ð ð Øˆðøøøà‡I‚IˆkÑÔÐÐÐs   ¾3A2 Á2BÂBc                  óÌ   — dd l } t          | j        d| j        ¦  «        }t          | j        d         d¦  «        5 }t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   Úbufferr   Úrb)ÚsysÚgetattrÚstdoutÚopenÚargvrU   )rY   r[   Úfs      r   Úmainr_   |   s§   € Ø€J€J€Jå�S”Z ¨3¬:Ñ6Ô6€FÝ	ˆcŒh�qŒk˜4Ñ	 Ô	 ð  AÝˆq�&ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   »AÁAÁ AÚ__main__)r6   r   r   Úhtmlr   Útypingr   Ú r   r   r9   rD   rU   r_   r3   r7   r   r   ú<module>rd      s(  ðð
ð ð €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ð3 ð 3 ð 3 ð 3 ð 3 ñ 3 ô 3 ð 3 ðlð ð ð ð ñ ô ð ð>Fð Fð Fð Fð F˜
ñ Fô Fð Fð 'ð 	ð 	ð 	ð 	ðð ð ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr   