U
    d/e
                     @   sv   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
eZG d	d dejejZdS )
z Save DOT source lines to a file.    N   )	_defaults)_tools)baseencodingSavec                       s   e Zd ZU dZdZeed< ejZ	e
ejZddejejef ejejedf dd fddZ fd	d
ZeedddZejdddddejejedf ejejedf eje edddZ  ZS )r   zSave DOT source lines to file. 	directoryN)r
   )filenamer
   returnc                   sN   t  jf | |d kr*| jj d| j }t|| _|d k	rJt|| _d S )N.)	super__init__	__class____name___default_extensionosfspathr   r
   )selfr   r
   kwargsr    3/tmp/pip-unpacked-wheel-n8ok7rre/graphviz/saving.pyr      s    zSave.__init__c                    s8   d|kst d| jkr | j|d< t jf d| ji|S )z3Return the kwargs to create a copy of the instance.r
   r   )AssertionError__dict__r
   r   _copy_kwargsr   )r   r   r   r   r   r   )   s    

zSave._copy_kwargs)r   c                 C   s   t j| j| jS )z/The target path for saving the DOT source file.)r   pathjoinr
   r   )r   r   r   r   filepath0   s    zSave.filepath   )Zsupported_numberF)skip_existing)r   r
   r!   r   c             	   C   s   |dk	r|| _ |dk	r|| _| j}|r6tj|r6|S | | td| t	|d| j
d}| D ]}|| qbW 5 Q R X |S )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   fdZuliner   r   r   save5   s    
z	Save.save)NN)r   
__module____qualname____doc__r
   str__annotations__r   ZDEFAULT_SOURCE_EXTENSIONr   staticmethodr   Zmkdirsr$   typingUnionr   PathLiker   r   propertyr   Zdeprecate_positional_argsOptionalboolr*   __classcell__r   r   r   r   r      s.   


   )r-   loggingr   r1   r	   r   r   r   r   __all__	getLoggerr   r%   EncodingZBaser   r   r   r   r   <module>   s   
