
    Mhz                         d Z ddlmZ ddlmZ ddlmZ ddlmZ g dZ	 G d de          Z
 G d	 d
e          ZdZdZ G d de          ZdS )z
    pygments.formatters.other
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    Other formatters: NullFormatter, RawTokenFormatter.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )	Formatter)get_choice_opt)Token)colorize)NullFormatterRawTokenFormatterTestcaseFormatterc                   *    e Zd ZdZdZddgZdgZd ZdS )r   z;
    Output the text unchanged without any formatting.
    z	Text onlytextnullz*.txtc                     | j         }|D ]E\  }}|r)|                    |                    |                     0|                    |           Fd S N)encodingwriteencode)selftokensourceoutfileencttypevalues         Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pygments/formatters/other.pyformatzNullFormatter.format   sd    m' 	% 	%LE5 %ell3//0000e$$$$		% 	%    N)__name__
__module____qualname____doc__namealiases	filenamesr    r   r   r   r      sE          DvG	I% % % % %r   r   c                   4    e Zd ZdZdZddgZdgZdZd Zd Z	d	S )
r   a}  
    Format tokens as a raw representation for storing token streams.

    The format is ``tokentype<TAB>repr(tokenstring)\n``. The output can later
    be converted to a token stream with the `RawTokenLexer`, described in the
    :doc:`lexer list <lexers>`.

    Only two options are accepted:

    `compress`
        If set to ``'gz'`` or ``'bz2'``, compress the output with the given
        compression algorithm after encoding (default: ``''``).
    `error_color`
        If set to a color name, highlight error tokens using that color.  If
        set but with no value, defaults to ``'red'``.

        .. versionadded:: 0.11

    z
Raw tokensrawtokensz*.rawFc                 J   t          j        | fi | d| _        t          |dg dd          | _        |                    dd           | _        | j        du rd| _        | j        >	 t          | j        d           d S # t          $ r t          d| j        d	          w xY wd S )
Nasciicompress) nonegzbz2r)   error_colorTredzInvalid color z
 specified)
r   __init__r   r   r(   getr-   r   KeyError
ValueErrorr   optionss     r   r/   zRawTokenFormatter.__init__>   s    4++7+++  &w
'@'@'@"F F";;}d;;t##$D'R)2..... R R R !P$2B!P!P!PQQQR ('s   &A= =#B c                 >  
 	                      d           n# t          $ r t          d          w xY w| j        dk    r+dd l}|                    ddd          j         }j        }n?| j        dk    r&dd l}|                    d          

fd	}
fd
}nj         }j        }| j	        rH|D ]D\  }}d||fz  }	|t          j        u r |t          | j	        |	                     9 ||	           En|D ]\  }} |d||fz              |             d S )Nr   z3The raw tokens formatter needs a binary output filer+   r   r)   wb	   r,   c                 X                                             |                      d S r   )r   r(   )r   
compressorr   s    r   r   z'RawTokenFormatter.format.<locals>.write_   s)    j11$7788888r   c                  ~                                                                                                      d S r   )r   flush)r9   r   s   r   r;   z'RawTokenFormatter.format.<locals>.flushb   s2    j..00111r   s   %r	%r
)r   	TypeErrorr(   gzipGzipFilecloser,   BZ2Compressorr;   r-   r   Errorr   )r   r   r   r=   r   r;   r,   r   r   liner9   s     `       @r   r   zRawTokenFormatter.formatO   s   	+MM# 	+ 	+ 	+ * + + +	+ =D  KKKmmBa99GMEMEE]e##JJJ**1--J9 9 9 9 9 9              MEME 		4 +    u"eU^3EK''E(4#3T::;;;;E$KKKK  !, 4 4ukUEN23333s    4N)
r   r   r   r   r   r    r!   unicodeoutputr/   r   r"   r   r   r   r   $   s\         & DhG	IMR R R"$ $ $ $ $r   r   zG    def testNeedsName(lexer):
        fragment = %r
        tokens = [
zD        ]
        assert list(lexer.get_tokens(fragment)) == tokens
c                   (    e Zd ZdZdZdgZd Zd ZdS )r	   zU
    Format tokens as appropriate for a new testcase.

    .. versionadded:: 2.0
    Testcasetestcasec                 p    t          j        | fi | | j        | j        dk    rt          d          d S d S )Nutf-8z*Only None and utf-8 are allowed encodings.)r   r/   r   r2   r3   s     r   r/   zTestcaseFormatter.__init__   sL    4++7+++=$')A)AIJJJ %$)A)Ar   c           	      Z   d}g }g }|D ]8\  }}|                     |           |                     | d| d|d           9t          d                    |          fz  }d                    |          }	t          }
| j        |                    ||	z   |
z              nx|                    |                    d                     |                    |	                    d                     |                    |
                    d                     |                                 d S )Nz            (z, z),
r)   rH   )appendTESTCASE_BEFOREjoinTESTCASE_AFTERr   r   r   r;   )r   r   r   indentationrawbufoutbufr   r   beforeduringafters              r   r   zTestcaseFormatter.format   s"   ' 	C 	CLE5MM%   MM[AA5AAEAAABBBB BGGFOO#55= MM&6/E12222MM&--00111MM&--00111MM%,,w//000r   N)r   r   r   r   r   r    r/   r   r"   r   r   r	   r	      sM         
 DlGK K K
    r   r	   N)r   pygments.formatterr   pygments.utilr   pygments.tokenr   pygments.consoler   __all__r   r   rL   rN   r	   r"   r   r   <module>rZ      s    ) ( ( ( ( ( ( ( ( ( ( (             % % % % % %
E
E
E% % % % %I % % %"O O O O O	 O O Od
    	     r   