o
    ni                     @   sn   d Z ddlmZ ddlmZ ddlmZ ddlmZ dZ	dZ
G dd	 d	eZd
ZdZdZeG dd dZdS )zSSupport for parsing W&B URLs (which might be user provided) into constituent parts.    )	dataclass)IntEnum)Optional)urlparsezhttp://zhttps://c                   @   s   e Zd ZdZdZdS )ReferenceType      N)__name__
__module____qualname__RUNJOB r   r   ^/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/launch/wandb_reference.pyr      s    r   )zcreate-teamzfully-connectedregistrysettingssubscriptions)likesprojects)_viewc                   @   s8  e Zd ZU dZee ed< dZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed< dZee ed< d	Zeed
< defddZdefddZdefddZdefddZdefddZdefddZdefddZdefddZdefddZededed  fdd Zededefd!d"ZdS )#WandbReferenceNhostentityprojectpathref_typerun_idjob_namelatest	job_aliasreturnc                 C   s
   | j d u S N)r   selfr   r   r   is_bare5   s   
zWandbReference.is_barec                 C      | j tjkS r!   )r   r   r   r"   r   r   r   is_job8      zWandbReference.is_jobc                 C   r%   r!   )r   r   r   r"   r   r   r   is_run;   r'   zWandbReference.is_runc                 C   s   |   p|  S r!   )r&   r(   r"   r   r   r   is_job_or_run>   s   zWandbReference.is_job_or_runc                 C   s   |   sJ | j d| j S )N:)r&   r   r   r"   r   r   r   job_referenceA   s   zWandbReference.job_referencec                 C   s4   | j sJ | js
J |  }| j  d| j d| S N/)r   r   r+   )r#   unscopedr   r   r   job_reference_scopedE   s   

z#WandbReference.job_reference_scopedc                 C   s   | j r
t | j  S dS )N )r   PREFIX_HTTPSr"   r   r   r   url_hostK   s   zWandbReference.url_hostc                 C      | j sJ |   d| j  S r,   )r   r2   r"   r   r   r   
url_entityN      
zWandbReference.url_entityc                 C   r3   r,   )r   r4   r"   r   r   r   url_projectR   r5   zWandbReference.url_projecturic                 C   s>  |  ds|  ts|  tsdS t }t| }|jr|j|_|j ds'|S |jdd |_|jd}t	|dkr|d t
vrd|_|d |_t	|dkr|d tvr|d |_t	|dkrq|d dkrqtj|_|d |_|S t	|dkr|d d	kr|d d
krtj|_|d |_t	|dkr|d tvr|d |_|S )z'Attempt to parse a string as a W&B URL.r-   Nr   r      r   runs   	artifactsjob   )
startswithPREFIX_HTTPr1   r   r   netlocr   r   splitlenRESERVED_NON_ENTITIESr   RESERVED_NON_PROJECTSr   r   r   r   r   r   r   RESERVED_JOB_PATHSr   )r7   refparsedpartsr   r   r   parseV   sD   




zWandbReference.parsec                 C   s   t | }|r| rdS dS )NTF)r   rI   r)   )r7   rF   r   r   r   is_uri_job_or_run   s   
z WandbReference.is_uri_job_or_run)r	   r
   r   r   r   str__annotations__r   r   r   r   r   r   r   r   boolr$   r&   r(   r)   r+   r/   r2   r4   r6   staticmethodrI   rJ   r   r   r   r   r   "   s,   
 .r   N)__doc__dataclassesr   enumr   typingr   urllib.parser   r?   r1   r   rC   rD   rE   r   r   r   r   r   <module>   s    