o
    ni                     @   sr   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ G dd dZdS )	    N)AnyOptional)env)core)
filesystem)generate_idc                	   @   s   e Zd ZdZdZe Z	d dedee	 ddfdd	Z
efd
e	de	dedefddZd!ddZd"d!ddZd"d!ddZd#ddZedd Zei fddZedee	 fddZed#ddZdS )$Settingsz<Global W&B settings stored under $WANDB_CONFIG_DIR/settings.defaultTNload_settingsroot_dirreturnc                 C   sr   t  | _t  | _|| _|r5t  }|d ur| j|g tj	t
| jr7| jt | jg d S d S d S N)r   	_settings_global_settings_local_settingsr   _global_pathreadospathisdirr   	wandb_dir_local_path)selfr
   r   global_path r   P/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/old/settings.py__init__   s   

zSettings.__init__sectionkeyfallbackc                 C   s`   z| j ||W S  tjy/   z
| j||W  Y S  tjy.   |tjur-| Y  Y S  w w r   )r   getconfigparserNoOptionErrorr   r   _UNSET)r   r   r   r   r   r   r   r    #   s   
zSettings.getc              	   C   s   t j|}tjddd|d)}t j|j}t|d}|| W d    n1 s,w   Y  W d    n1 s;w   Y  z	t 	|| W d S  t
yY   t || Y d S w )Nzw+z.tmpF)suffixdeletedir)r   r   dirnametempfileNamedTemporaryFileabspathnameopenwritereplaceAttributeErrorrename)r   settingssettings_path
target_dirfpr   fr   r   r   _persist_settings2   s    zSettings._persist_settingsFc                    sV    fdd}|rt  }|dur|j|| dS dS |jt j| dS )z*Persist settings to disk if persist = Truec                    sB   |  st| tj |  t |r| | d S d S r   )has_sectionr   _safe_add_sectionDEFAULT_SECTIONsetstrr6   r1   r2   persistr   r   r   valuer   r   write_settingC   s   
z#Settings.set.<locals>.write_settingNr   r   r   r   r   r   )r   r   r   r?   globallyr=   r@   r   r   r>   r   r:   @   s   zSettings.setc                    sT    fdd}|rt  }|d ur|j|| d S d S |jt j| d S )Nc                    s$   |    |r| | d S d S r   )remove_optionr6   r<   r   r   r   r   r   clear_settingU   s   z%Settings.clear.<locals>.clear_settingrA   )r   r   r   rB   r=   rE   r   r   rD   r   clearT   s   zSettings.clearc                 C   s   |d ur|nt j}d|i}z8|| j v r'| j|D ]}| j||||< q|| j v r@| j|D ]}| j||||< q4W |S W |S  tjyU   t	
d Y |S w )Nr   zUnable to parse settings file)r   r9   r   sectionsoptionsr    r   r!   InterpolationSyntaxErrorr   termwarn)r   r   resultoptionr   r   r   itemsc   s"   zSettings.itemsc                 C   s   |  |s| | d S d S r   )r7   add_section)r1   r   r   r   r   r8   t   s   
zSettings._safe_add_sectionc                 C   s@   t  }t|tj |  D ]\}}|tj|t| q|S r   )r!   ConfigParserr   r8   r9   rM   r:   r;   )default_settingsr1   r   r?   r   r   r   r   y   s
   zSettings._settingsc                  C   s   dt fdd} dtfdd}zFtjtjddd}| |sCtjt dd}| |s@| }tjt |dd}| | n|}n|}tj	t
j|}tj|d	W S  ty^   Y d S w )
Nr   c                 S   s>   zt j| dd t | t jrW dS W dS  ty   Y dS w )NT)exist_okF)r   makedirsaccessW_OKOSError)r   r   r   r   try_create_dir   s   z-Settings._global_path.<locals>.try_create_dirc                	   S   s(   zt  W S  ttfy   t  Y S w r   )getpassgetuserImportErrorKeyErrorr   r   r   r   r   get_username   s
   

z+Settings._global_path.<locals>.get_username~z.configwandbr1   )boolr;   r   r   join
expanduserr(   
gettempdirenvironr    r   
CONFIG_DIR	Exception)rV   r[   home_config_dirtemp_config_dirusername
config_dirr   r   r   r      s*   	

zSettings._global_pathc                 C   s$   t t|  tjt| dS )Nr1   )r   mkdir_exists_okr   r   r   r   r_   )r   r   r   r   r      s   zSettings._local_path)TN)r   N)FFr   )__name__
__module____qualname____doc__r9   objectr#   r^   r   r;   r   r   r    r6   r:   rF   rM   staticmethodr8   r   r   r   r   r   r   r   r      s2    



(r   )r!   rW   r   r(   typingr   r   r]   r   	wandb.oldr   wandb.sdk.libr   wandb.sdk.lib.runidr   r   r   r   r   r   <module>   s    