o
    ni
                     @   s2   d Z ddlZddlZddlmZ G dd dZdS )z0port_file: write/read file containing port info.    N)Optionalc                   @   s   e Zd ZU ee ed< eed< dZdZddee ddfdd	Z	d
e
ddfddZd
e
ddfddZedee fddZedefddZdS )PortFile
_sock_port_validzsock=EOFN	sock_portreturnc                 C   s   || _ d| _d S )NF)r   r   )selfr    r
   Y/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/service/port_file.py__init__   s   
zPortFile.__init__fnamec           	      C   s   t j|\}}tj||ddd}zF|j}|0 g }| jr(|| j | j  || j	 d
|}||}|t|ks@J W d    n1 sJw   Y  t || W d S  tyd   t |  w )NwF)prefixdirmodedelete
)ospathsplittempfileNamedTemporaryFilenamer   append
SOCK_TOKEN	EOF_TOKENjoinwritelenrename	Exceptionunlink)	r	   r   dnamebnameftmp_filenamedataport_strwrittenr
   r
   r   r      s$   


zPortFile.writec                 C   s   t |7}| }|d | jkr	 W d    d S |D ]}|| jr/t|t| jd  | _qd| _W d    d S 1 s>w   Y  d S )NT)	open	readlinesr   
startswithr   intr   r   r   )r	   r   r%   lineslnr
   r
   r   read%   s   
"zPortFile.readc                 C      | j S N)r   r	   r
   r
   r   r   /      zPortFile.sock_portc                 C   r2   r3   )r   r4   r
   r
   r   is_valid3   r5   zPortFile.is_validr3   )__name__
__module____qualname__r   r.   __annotations__boolr   r   r   strr   r1   propertyr   r6   r
   r
   r
   r   r      s   
 
r   )__doc__r   r   typingr   r   r
   r
   r
   r   <module>   s
    