o
    ooi
                     @   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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d	Z fd
dZedefddZejddd		ddddejejedf dejejedf deje defddZ  ZS )r   zSave DOT source lines to file. 	directoryN)r
   filenamereturnc                   sX   t  jdi | |d u r| jj d| j }t|| _	 |d ur*t|| _d S d S )N. )	super__init__	__class____name___default_extensionosfspathr   r
   )selfr   r
   kwargsr   r   C/home/ubuntu/.local/lib/python3.10/site-packages/graphviz/saving.pyr      s   zSave.__init__c                    s8   d|vsJ d| j v r| j|d< t jdd| ji|S )z3Return the kwargs to create a copy of the instance.r
   r   Nr   )__dict__r
   r   _copy_kwargsr   )r   r   r   r   r   r   )   s   

zSave._copy_kwargsc                 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.filepathr   r   )supported_number
ignore_argF)skip_existingr!   c                C   s   |dur|| _ |dur|| _| j}|rtj|r|S | | td| t	|d| j
d}| D ]}|| q1W d   |S 1 sDw   Y  |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   fduliner   r   r   save5   s"   

z	Save.save)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boolr+   __classcell__r   r   r   r   r      s8   
 
)r.   loggingr   r/   r	   r   r   r   r   __all__	getLoggerr   r%   EncodingBaser   r   r   r   r   <module>   s    
