o
    ooi                     @   s   d Z ddl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	 d	gZ
eeZG d
d	 d	e	jejejZdS )z/Pipe DOT code objects through Graphviz ``dot``.    N   )_tools)backend)
exceptions)base)encodingPipec                   @   s  e Zd ZdZej					dddddeje deje deje deje	e
df d	e	d
eje dddefddZej					ddddeje deje deje deje	e
df d	e	d
eje dedefddZej					ddddeje deje deje deje	e
df d	e	d
eje deje dejeef fddZ					dddddeje deje deje deje	e
df d	e	d
eje deje dejeef fddZejddd					dddddeje deje deje deje	e
df d	e	d
eje deje dejeef fddZdddddddddeje deje deje deje	e
df d	e	d
eje deje dejeef fddZdS )r   z6Pipe source lines through the Graphviz layout command..)enginer   formatrenderer	formatterneato_no_opNquietr	   r   returnc                C      dS )z,Return bytes with default ``encoding=None``.N selfr
   r   r   r   r   r	   r   r   r   C/home/ubuntu/.local/lib/python3.10/site-packages/graphviz/piping.pypipe       z	Pipe.pipe)r	   c                C   r   )z"Return string when given encoding.Nr   r   r   r   r   r   !   r   c                C   r   )z6Return bytes or string depending on encoding argument.Nr   r   r   r   r   r   ,   r   Fc             	   C      | j |||||||dS )a  Return the source piped through the Graphviz layout command.

        Args:
            format: The output format used for rendering
                (``'pdf'``, ``'png'``, etc.).
            renderer: The output renderer used for rendering
                (``'cairo'``, ``'gd'``, ...).
            formatter: The output formatter used for rendering
                (``'cairo'``, ``'gd'``, ...).
            neato_no_op: Neato layout engine no-op flag.
            quiet (bool): Suppress ``stderr`` output
                from the layout subprocess.
            engine: Layout engine for rendering
                (``'dot'``, ``'neato'``, ...).
            encoding: Encoding for decoding the stdout.

        Returns:
            Bytes or if encoding is given decoded string
                (stdout of the layout command).

        Raises:
            ValueError: If ``engine``, ``format``, ``renderer``, or ``formatter``
                are unknown.
            graphviz.RequiredArgumentError: If ``formatter`` is given
                but ``renderer`` is None.
            graphviz.ExecutableNotFound: If the Graphviz ``dot`` executable
                is not found.
            graphviz.CalledProcessError: If the returncode (exit status)
                of the rendering ``dot`` subprocess is non-zero.

        Example:
            >>> doctest_mark_exe()
            >>> import graphviz
            >>> source = 'graph { spam }'
            >>> graphviz.Source(source, format='svg').pipe()[:14]
            b'<?xml version='
            >>> graphviz.Source(source, format='svg').pipe(encoding='ascii')[:14]
            '<?xml version='
            >>> graphviz.Source(source, format='svg').pipe(encoding='utf-8')[:14]
            '<?xml version='
        r   r   r   r   r	   r   )_pipe_legacyr   r   r   r   r   7   s   1r   r   )supported_number
ignore_argc             	   C   r   )Nr   )_pipe_futurer   r   r   r   r   p   s   	zPipe._pipe_legacyr   c             
   C   s   | j ||||||dd\}}	|t|  |d urrt|t| ju r.| j|d|i|	S z| j|d| ji|	}
W n1 tj	yl } z$|j
^ }}}|d urU|| j}|d ur_|| j}|j|||dd }~ww |
|S | j|d| ji|	S )NT)r	   r
   r   r   r   r   verifyr   input_encoding)outputstderr)_get_pipe_parametersappenditercodecslookupr   _pipe_lines_string_pipe_linesr   CalledProcessErrorargsdecode	__class__)r   r
   r   r   r   r   r	   r   r)   kwargsrawer   r    r   r   r   r      s2   

zPipe._pipe_future).....)NNNNF)N)__name__
__module____qualname____doc__typingoverloadOptionalstrUnionboolintbytesr   r   deprecate_positional_argsr   r   r   r   r   r   r      s.   


9)r2   r$   loggingr3    r   r   r   r   r   __all__	getLoggerr/   logEncodingBaser   r   r   r   r   <module>   s    
