
    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gZ	 ej                  e      Z G d	 dej                  ej                        Zy)
z Save DOT source lines to a file.    N   )	_defaults)_tools)baseencodingSavec                       e Zd ZU dZdZej                  eef   e	d<   e
j                  Z eej                        Zdddej                  ej$                  ef   dej                  ej$                  edf   ddf fdZ fd	Zedefd
       Z ej.                  dd      	 	 ddddej                  ej$                  edf   dej                  ej$                  edf   dej0                  e   defd       Z xZS )r	   zSave DOT source lines to file. 	directoryN)r   filenamereturnc                    t        |   di | |%| j                  j                   d| j                   }t        j                  |      | _        	 |t        j                  |      | _        y y )N. )	super__init__	__class____name___default_extensionosfspathr   r   )selfr   r   kwargsr   s       6/tmp/pip-target-z3e9_cxr/lib/python/graphviz/saving.pyr   zSave.__init__   sk     	"6"..112!D4K4K3LMH		(+C YYy1DN !    c                     d|vsJ d| j                   v r| j                  |d<   t        |   dd| j                  i|S )z3Return the kwargs to create a copy of the instance.r   r   r   )__dict__r   r   _copy_kwargsr   )r   r   r   s     r   r   zSave._copy_kwargs)   sG    &((($--'"&..F;w#ET]]EfEEr   c                 j    t         j                  j                  | j                  | j                        S )z/The target path for saving the DOT source file.)r   pathjoinr   r   )r   s    r   filepathzSave.filepath0   s!     ww||DNNDMM::r   r   r   )supported_number
ignore_argF)skip_existingr&   c                d   ||| _         ||| _        | j                  }|r!t        j                  j                  |      r|S | j                  |       t        j                  d|       t        |d| j                        5 }| D ]  }|j                  |        	 ddd       |S # 1 sw Y   |S xY w)a  Save the DOT source to file. Ensure the file ends with a newline.

        Args:
            filename: Filename for saving the source (defaults to ``name`` + ``'.gv'``)
            directory: (Sub)directory for source saving and rendering.
            skip_existing: Skip write if file exists (default: ``False``).

        Returns:
            The (possibly relative) path of the saved source file.
        Nzwrite lines to %rwr   )r   r   r#   r   r!   exists_mkdirslogdebugopenr   write)r   r   r   r&   r#   fdulines          r   savez	Save.save5   s     $DM &DN==RWW^^H5OX		%x0(C$--8 	 B   	  		  s   B%%B/)NN)r   
__module____qualname____doc__r   typingUnionstrbytes__annotations__r   DEFAULT_SOURCE_EXTENSIONr   staticmethodr   mkdirsr*   r   PathLiker   r   propertyr#   deprecate_positional_argsOptionalboolr1   __classcell__)r   s   @r   r	   r	      s&   (*,Iv||CJ',";;6==)G DH2!<<S(892"LLc4)?@2 #2F ;# ; ; &V%%qVLDH?C49V\\"++sD*@A R[[#t%;<"OOD1>A Mr   )r4   loggingr   r5   r   r   r   r   r   __all__	getLoggerr   r+   EncodingBaser	   r   r   r   <module>rH      sP    &  	     (g!B8dii Br   