U
    d/e                     @   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eje eje eje eje	e
df e	eje dedddZejdddeje eje eje eje	e
df e	eje eedd	dZejdddeje eje eje eje	e
df e	eje eje ejeef dd
dZddddeje eje eje eje	e
df e	eje eje ejeef dddZejddddddeje eje eje eje	e
df e	eje eje ejeef dddZddddddddeje eje eje eje	e
df e	eje eje ejeef dddZdS )r   z6Pipe source lines through the Graphviz layout command..)enginer   N)formatrenderer	formatterneato_no_opquietr	   r   returnc                C   s   dS )z,Return bytes with default ``encoding=None``.N selfr
   r   r   r   r   r	   r   r   r   3/tmp/pip-unpacked-wheel-n8ok7rre/graphviz/piping.pypipe   s    	z	Pipe.pipe)r	   c                C   s   dS )z"Return string when given encoding.Nr   r   r   r   r   r   !   s    	c                C   s   dS )z6Return bytes or string depending on encoding argument.Nr   r   r   r   r   r   ,   s    	Fc             	   C   s   | 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   )Zsupported_numberc             	   C   s   | j |||||||dS )Nr   )_pipe_futurer   r   r   r   r   p   s    	zPipe._pipe_legacyr   c             
   C   s  | j ||||||dd\}}	|t|  |d k	rt|t| jkr\| j|d|i|	S z| j|d| ji|	}
W nl tj	k
r } zL|j
^ }}}|d k	r|| j}|d k	r|| j}|j|||dW 5 d }~X Y nX |
|S | j|d| ji|	S )NT)r	   r
   r   r   r   r   verifyr   Zinput_encoding)outputstderr)Z_get_pipe_parametersappenditercodecslookupr   Z_pipe_lines_stringZ_pipe_linesr   CalledProcessErrorargsdecode	__class__)r   r
   r   r   r   r   r	   r   r!   kwargsrawer   r   r   r   r   r      s.    
$
zPipe._pipe_future).....).....).....)NNNNF)NNNNF)N)__name__
__module____qualname____doc__typingoverloadOptionalstrUnionboolintbytesr   r   Zdeprecate_positional_argsr   r   r   r   r   r   r      s         
      
            9
       )r*   r   loggingr+    r   r   r   r   r   __all__	getLoggerr'   logEncodingZBaser   r   r   r   r   <module>   s   
