o
    xi                     @  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.    )annotations)	dataclass)IntEnum)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   T/home/ubuntu/.local/lib/python3.10/site-packages/wandb/sdk/launch/wandb_reference.pyr      s    r   )zcreate-teamzfully-connectedregistrysettingssubscriptions)likesprojects)_viewc                   @  s   e Zd ZU dZded< dZded< dZded< dZded< dZded< dZ	ded	< dZ
ded
< dZded< d(ddZd(ddZd(ddZd(ddZd)ddZd)ddZd)ddZd)ddZd)d d!Zed*d$d%Zed+d&d'ZdS ),WandbReferenceNz
str | NonehostentityprojectpathzReferenceType | Noneref_typerun_idjob_namelateststr	job_aliasreturnboolc                 C  s
   | j d u S N)r   selfr   r   r   is_bare6   s   
zWandbReference.is_barec                 C     | j tjkS r#   )r   r   r   r$   r   r   r   is_job9      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_referenceB   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_scopedF   s   

z#WandbReference.job_reference_scopedc                 C  s   | j r
t | j  S dS )N )r   PREFIX_HTTPSr$   r   r   r   url_hostL   s   zWandbReference.url_hostc                 C     | j sJ |   d| j  S r.   )r   r4   r$   r   r   r   
url_entityO      
zWandbReference.url_entityc                 C  r5   r.   )r   r6   r$   r   r   r   url_projectS   r7   zWandbReference.url_projecturiWandbReference | Nonec                 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_HTTPr3   r   r   netlocr   r   splitlenRESERVED_NON_ENTITIESr   RESERVED_NON_PROJECTSr   r   r   r   r   r   r   RESERVED_JOB_PATHSr    )r9   refparsedpartsr   r   r   parseW   s<   


	$

zWandbReference.parsec                 C  s   t | }t|o| S r#   )r   rL   r"   r+   )r9   rI   r   r   r   is_uri_job_or_run   s   
z WandbReference.is_uri_job_or_run)r!   r"   )r!   r   )r9   r   r!   r:   )r9   r   r!   r"   )r	   r
   r   r   __annotations__r   r   r   r   r   r   r    r&   r(   r*   r+   r-   r1   r4   r6   r8   staticmethodrL   rM   r   r   r   r   r   #   s,   
 








(r   N)__doc__
__future__r   dataclassesr   enumr   urllib.parser   rB   r3   r   rF   rG   rH   r   r   r   r   r   <module>   s    