a
    Ad
                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlZd dlm	Z	 d dl
mZ eddgZdd	 Zd
d ZdddZdd Zdd Zdd ZdS )    N)
namedtuple)Path)PngImagePlugin)shared	Savedfilenamec                 C   sT   t | dr(| jd tj|hB | jd< t | drP| jtjtj|hB | _d S )Ntemp_file_setsr   	temp_dirs)hasattrr   ospathabspathr	   dirnamegradiofilename r   :/var/www/html/stable-diffusion-webui/modules/ui_tempdir.pyregister_tmp_file   s    

r   c                    sH   t | dr"t fdd| jD S t | drDt fdd| jD S dS )Nr   c                 3   s   | ]} |v V  qd S Nr   ).0Zfilesetr   r   r   	<genexpr>       z!check_tmp_file.<locals>.<genexpr>r	   c                 3   s(   | ] }t | t   jv V  qd S r   )r   resolveparents)r   temp_dirr   r   r   r      r   F)r
   anyr   r	   r   r   r   r   check_tmp_file   s
    

r   pngc                 C   s   t |dd }|rNtj|rNttj| |}tjjsJ|dtj	| 7 }|S tjj
dkrdtjj
}ntj|dd d}t }|j D ],\}}	t|trt|	tr|||	 d}qtjdd|d}
|j|
|r|nd d	 |
jS )
Nalready_saved_as? Texist_okF.png)deletesuffixdir)pnginfo)getattrr   r   isfiler   r   demooptssave_images_add_numbergetmtimer   makedirsr   PngInfoinfoitems
isinstancestradd_texttempfileNamedTemporaryFilesaver   )self	pil_imager(   formatr    r   Zuse_metadatametadatakeyvaluefile_objr   r   r   save_pil_to_file"   s&    
rA   c                   C   s   t tjj_dS )z>override save to file function so that it also writes PNG infoN)rA   r   
componentsIOComponentpil_to_temp_filer   r   r   r   install_ui_tempdir_override>   s    rE   c                   C   sJ   t jjdkst jd u rd S tjt jjdd tt jtjt jjd d S )Nr"   Tr#   x)	r   r-   r   r,   r   r0   r   r   joinr   r   r   r   on_tmpdir_changedC   s    rH   c                  C   sz   t jj} | dkstj| s d S tj| ddD ]F\}}}|D ]6}tj|\}}|dkrZq<tj||}t	| q<q.d S )Nr"   F)topdownr%   )
r   r-   r   r   r   isdirwalksplitextrG   remove)r   root_filesr   	extensionr   r   r   r   cleanup_tmpdrL   s    rR   )Nr   )r   r7   collectionsr   pathlibr   gradio.componentsr   PILr   modulesr   r   r   r   rA   rE   rH   rR   r   r   r   r   <module>   s   

	