
    ci                         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j                  e      Z G d
 d	e	j                  ej                  ej                         Zy)z/Pipe DOT code objects through Graphviz ``dot``.    N   )_tools)backend)
exceptions)base)encodingPipec                   
   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       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       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       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Z ej                  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       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Zy)r	   z6Pipe source lines through the Graphviz layout command..)enginer   formatrenderer	formatterneato_no_opNquietr   r   returnc                     y)z,Return bytes with default ``encoding=None``.N selfr   r   r   r   r   r   r   s           6/tmp/pip-target-z3e9_cxr/lib/python/graphviz/piping.pypipez	Pipe.pipe           )r   c                     y)z"Return string when given encoding.Nr   r   s           r   r   z	Pipe.pipe!   r   r   c                     y)z6Return bytes or string depending on encoding argument.Nr   r   s           r   r   z	Pipe.pipe,   r   r   Fc          	      2    | j                  |||||||      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   s           r   r   z	Pipe.pipe7   s1    b   *2+4-8',(.*2 ! 4 	4r   r   r   )supported_number
ignore_argc          	      2    | j                  |||||||      S )Nr   )_pipe_futurer   s           r   r   zPipe._pipe_legacyp   s0       *2+4-8',(.*2 ! 4 	4r   r   c          	         | j                  ||||||d      \  }}	|j                  t        |              |xt        j                  |      t        j                  | j
                        u r | j                  |d|i|	S 	  | j                  |d| j
                  i|	}
|
j                  |      S  | j                  |d| j
                  i|	S # t        j                  $ rb}|j                  ^ }}}||j                  | j
                        }||j                  | j
                        } |j                  |||dd }~ww xY w)NT)r   r   r   r   r   r   verifyr   input_encoding)outputstderr)_get_pipe_parametersappenditercodecslookupr   _pipe_lines_string_pipe_linesdecoder   CalledProcessErrorargs	__class__)r   r   r   r   r   r   r   r   r1   kwargsrawer&   r'   s                 r   r"   zPipe._pipe_future   sJ    008>:B;D=H7<8< 1 >f 	DJ}}X&&--*FF.t..RxR6RR
,&d&&UT]]UfU zz(++tNdmmNvNN 00 G()%vv%#]]4==9F%#]]4==9F!akk4vFFGs   C E!AD>>E).....)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   @__,/.1/2:=; -0!;__S);s+; ,; !,,tS$7	;
 ; __S); ; ',; ; __,/.1/2:=1 -01__S)1s+1 ,1 !,,tS$7	1
 1 __S)1 1  #1 1 __,/.1/2:=E -0E__S)Es+E ,E !,,tS$7	E
 E __S)E s+E 17UCZ0HE E -1.2/3:> 74 -1.274__S)74s+74 ,74 !,,tS$7	74
 74 __S)74 s+74 8>||E3J7O74r &V%%qVL486:7;BF#(4 596:4#__S14%s34 !' 44 #),,tS$"?	4
 !4 $__S14  &s34 @F||ESVJ?W4 M4  O6:7;BF#(486: O6??3#7  O%s3 O & 4 O #),,tS$"? O !	 O
 $__S1 O  &s3 O @F||ESVJ?W Or   )r9   r+   loggingr:    r   r   r   r   r   __all__	getLoggerr6   logEncodingBaser	   r   r   r   <module>rJ      s]    5        ( g!NO8dii NOr   