o
    niP                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlZddlmZ ddlmZ ddlmZmZ d	d
lmZmZ ddlmZ ddlmZ ddlmZ edZG dd deZdS )zInterfaceShared - Derived from InterfaceBase - shared with InterfaceQueue and InterfaceSock.

See interface.py for how interface classes relate to each other.

    N)abstractmethod)BaseProcess)AnyOptionalcast)wandb_internal_pb2)wandb_telemetry_pb2)json_dumps_saferjson_friendly   )MailboxMailboxHandle   )InterfaceBase)MessageFuture)MessageRouterwandbc                C       s  e Zd ZU ee ed< eed< ee ed< ee ed< e	ed< eed< 			ddee d	ed
ee
 ddf fddZedddZedefddZede	fddZdddZdddZdejddfddZdejddfddZdejddfddZd ejddfd!d"Zd#ejddfd$d%Zd&ejddfd'd(Zd)ej ddfd*d+Z!d,e"j#ddfd-d.Z$d/ej%de&fd0d1Z'd2e(dej)fd3d4Z*dd5ee+ dej,fd6d7Z-																																dd8eej, d9eej. d:eej/ d;eej0 d<eej1 d=eej2 d>eej3 d?eej4 d@eej5 d#eej dAeej6 dBeej7 dCeej8 dDeej9 dEeej: dFeej; dGeej< dHeej= dIeej> dJeej? dKeej@ dLeejA dMeejB dNeejC dOeejD deej dPeejE dQeejF dReejG dSeejH d/eej% dTeejI dejJfBdUdVZK																				ddWeejL dXeejM dYeejN dZeejO d&eej d[eej) d\eejP d]eejQ d eej d^eejR d_eejS d`eejT daeejU dbeejV dceejW ddee"j# deeej  dfeejX dgeej dheej dejJf*didjZYeddkejJdlee ddfdmdnZZ	ddpejJdqee[ dlee deej\ fdrdsZ]	ddpejJdlee de^fdtduZ_	vdd5ee+ dqee[ dej`fdwdxZadd{d|Zbddye[ddfd~dZcdaejUddfddZddddZedddZfdd5ee+ ddfddZgd:ej/ddfddZhd;ej0ddfddZidWejLddfddZjdejMddfddZkdZejOddfddZld`ejTddfddZmd2e(ddfddZndSejHddfddZodYejNddfddZpdfejXde
fddZqdDej9de
fddZrdEej:de&fddZsdFej;de&fddZtdejQddfddZudejRddfddZvd<ej1de&fddZwdejPddfddZxdJej?ddfddZydddZzdefddZ{dkejJde&fddZ|dWejLde&fddZ}dNejCde&fddZ~dBej7de&fddZd9ej.de&fddZdRejGde&fddZdejPde&fddZd@ej5de&fddÄZdTejIde&fddńZd=ej2de&fddǄZdHej=de&fddɄZd?ej4de&fdd˄Zdej3de&fdd΄ZdAej6de&fddЄZdKej@de&fdd҄Zdde[defddքZdڇ fdd؄Z  ZS )InterfaceSharedprocess_process_check_router_mailbox_transport_success_timestamp_transport_failedNTprocess_checkmailboxreturnc                    s>   t    t | _d| _|| _d | _|| _|| _	| 
  d S )NF)super__init__time	monotonicr   r   _processr   r   r   _init_router)selfr   r   r   	__class__ b/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/interface/interface_shared.pyr   "   s   

zInterfaceShared.__init__c                 C      t NNotImplementedErrorr#   r&   r&   r'   r"   1      zInterfaceShared._init_routerc                 C      | j S r)   r   r,   r&   r&   r'   transport_failed5      z InterfaceShared.transport_failedc                 C   r.   r)   )r   r,   r&   r&   r'   transport_success_timestamp9   r1   z+InterfaceShared.transport_success_timestampc                 C   s
   d| _ d S )NTr/   r,   r&   r&   r'   _transport_mark_failed=   s   
z&InterfaceShared._transport_mark_failedc                 C   s   t  | _d S r)   )r   r    r   r,   r&   r&   r'   _transport_mark_success@   s   z'InterfaceShared._transport_mark_successoutdatac                 C   "   t  }|j| | | d S r)   )pbRecordoutputCopyFrom_publishr#   r5   recr&   r&   r'   _publish_outputC      zInterfaceShared._publish_outputcancelc                 C      | j |d}| | d S )N)r@   _make_requestr;   )r#   r@   r=   r&   r&   r'   _publish_cancelH      zInterfaceShared._publish_cancelc                 C   r6   r)   )r7   r8   
output_rawr:   r;   r<   r&   r&   r'   _publish_output_rawL   r?   z#InterfaceShared._publish_output_rawtbrecordc                 C   rA   )N)rH   _make_recordr;   )r#   rH   r=   r&   r&   r'   _publish_tbdataQ   rE   zInterfaceShared._publish_tbdatapartial_historyc                 C   rA   )N)rL   rB   )r#   rL   r=   r&   r&   r'   _publish_partial_historyU      z(InterfaceShared._publish_partial_historyhistoryc                 C   rA   )N)rO   rI   )r#   rO   r=   r&   r&   r'   _publish_history[   rE   z InterfaceShared._publish_historypreempt_recc                 C   rA   )N)
preemptingrI   )r#   rQ   r=   r&   r&   r'   _publish_preempting_   rE   z#InterfaceShared._publish_preemptingtelemc                 C   rA   )N)	telemetryrI   )r#   rT   r=   r&   r&   r'   _publish_telemetryc   rE   z"InterfaceShared._publish_telemetry	job_inputc                 C      | j |d}| |S )N)rW   rC   _deliver_record)r#   rW   recordr&   r&   r'   _publish_job_inputg      
z"InterfaceShared._publish_job_input
stats_dictc                 C   sV   t  }t jjj|_|j  | D ]\}}|j	 }||_
tt|d |_q|S )Nr   )r7   StatsRecord	StatsTypeSYSTEM
stats_type	timestampGetCurrentTimeitemsitemaddkeyr	   r
   
value_json)r#   r^   statskvrf   r&   r&   r'   _make_statsk   s   

zInterfaceShared._make_statsapi_keyc                 C   s   t  }|r	||_|S r)   )r7   LoginRequestrn   )r#   rn   loginr&   r&   r'   _make_loginu   s   zInterfaceShared._make_loginrp   get_summarypauseresumestatusstop_statusinternal_messagesnetwork_status	poll_exitsampled_history	run_startcheck_versionlog_artifactdownload_artifactlink_artifactdeferattachserver_info	keepalive
run_statussender_marksender_readsyncstatus_reportsummary_recordtelemetry_recordget_system_metricspython_packagesrun_finish_without_exitc!           #      C   s  t  }!|r|!j| n#|r|!j| n|r"|!j| n|r,|!j| n|r5|!j| n|r>|!j| n|rG|!j	| n|rP|!j
| n|	rY|!j|	 n|
rb|!j|
 n|rk|!j| n|rt|!j| n|r}|!j| n|r|!j| n|r|!j| n|r|!j| n|r|!j| n|r|!j| n|r|!j| n~|r|!j| nu|r|!j| nl|r|!j| nc|r|!j| nZ|r|!j| nQ|r|!j| nH|r|!j| n?|r|!j| n6|r|!j| n,|r|!j| n"|r|!j | n|r#|!j!| n| r-|!j"|  nt#d| j$|!d}"d|"j%_&|rBd|"j%_'|"S )NzInvalid requestrequestT)(r7   Requestrp   r:   rr   rs   rt   ru   rv   rw   rx   ry   rL   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r@   r   r   r   r   r   r   rW   r   	ExceptionrJ   controllocalflow_control)#r#   rp   rr   rs   rt   ru   rv   rw   rx   ry   rL   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r@   r   r   r   r   rW   r   r   r[   r&   r&   r'   rC   {   s   #zInterfaceShared._make_requestrunconfigfilessummaryrj   exitartifactalertfinalmetricheaderfooterr   rU   rR   use_artifactr9   rF   c                 C   s  t  }|r|j| |S |r|j| |S |r"|j| |S |r,|j| |S |r6|j| |S |r@|j| |S |rJ|j	| |S |rT|j
| |S |	r^|j|	 |S |
rh|j|
 |S |rr|j| |S |r||j| |S |r|j| |S |r|j| |S |r|j| |S |r|j| |S |r|j| |S |r|j| |S |r|j| |S |r|j| |S td)NzInvalid record)r7   r8   r   r:   r   r   rO   r   rj   r   r   rH   r   r   r   r   r   rU   r   rR   r   r9   rF   r   )r#   r   r   r   r   rO   rj   r   r   rH   r   r   r   r   r   r   rU   rR   r   r9   rF   r[   r&   r&   r'   rJ      s|   )'%#!	zInterfaceShared._make_recordr[   r   c                 C   r(   r)   r*   )r#   r[   r   r&   r&   r'   r;   ,  r-   zInterfaceShared._publish   r=   timeoutc                 C   s   | j ||dj|dS )Nr   r   )_communicate_asyncget)r#   r=   r   r   r&   r&   r'   _communicate0  s   zInterfaceShared._communicatec                 C   s<   | j sJ | jr| jr| j std| j j||d}|S )Nz&The wandb backend process has shutdownr   )r   r   r!   is_aliver   send_and_receive)r#   r=   r   futurer&   r&   r'   r   5  s
   
z"InterfaceShared._communicate_async   c                 C   sP   |  |}| j|d}| j||d}|d u rtd||jj}|s&J |S )Nrp   r   z2Couldn't communicate with backend after {} seconds)rq   rC   r   r   Errorformatresponselogin_response)r#   rn   r   rp   r=   resultr   r&   r&   r'   communicate_login>  s   
z!InterfaceShared.communicate_loginstatepb.DeferRequest.DeferState.Vc                 C   s*   t j|d}| j|d}| j|dd d S )N)r   )r   Tr   )r7   DeferRequestrC   r;   )r#   r   r   r=   r&   r&   r'   _publish_deferM  s   zInterfaceShared._publish_deferr   c                 C   s   |  td| d S )Nr   )r   r   )r#   r   r&   r&   r'   publish_deferR  s   zInterfaceShared.publish_deferc                 C   rA   )N)r   rI   )r#   r   r=   r&   r&   r'   _publish_headerU  rE   zInterfaceShared._publish_headerc                 C   "   t  }| j|d}| | d S )N)r   )r7   FooterRecordrJ   r;   )r#   r   r=   r&   r&   r'   publish_footerY  r?   zInterfaceShared.publish_footerc                 C   r   )N)r   )r7   FinalRecordrJ   r;   )r#   r   r=   r&   r&   r'   publish_final^  r?   zInterfaceShared.publish_finalc                 C   $   |  |}| j|d}| | d S )Nr   )rq   rC   r;   )r#   rn   rp   r=   r&   r&   r'   publish_loginc     
zInterfaceShared.publish_loginc                 C   rA   )N)rs   rB   )r#   rs   r=   r&   r&   r'   _publish_pauseh  rE   zInterfaceShared._publish_pausec                 C   rA   )N)rt   rB   )r#   rt   r=   r&   r&   r'   _publish_resumel  rE   zInterfaceShared._publish_resumec                 C   rA   N)r   rI   )r#   r   r=   r&   r&   r'   _publish_runp  rE   zInterfaceShared._publish_runcfgc                 C   rA   )N)r   rI   )r#   r   r=   r&   r&   r'   _publish_configt  rE   zInterfaceShared._publish_configc                 C   rA   )N)r   rI   )r#   r   r=   r&   r&   r'   _publish_summaryx  rE   z InterfaceShared._publish_summaryc                 C   rA   )N)r   rI   )r#   r   r=   r&   r&   r'   _publish_metric|  rE   zInterfaceShared._publish_metricc                 C   r   )N)rj   )rm   rJ   r;   )r#   r^   rj   r=   r&   r&   r'   publish_stats  r   zInterfaceShared.publish_statsc                 C   rA   )N)r   rB   )r#   r   r=   r&   r&   r'   _publish_python_packages  rN   z(InterfaceShared._publish_python_packagesc                 C   rA   )N)r   rI   )r#   r   r=   r&   r&   r'   _publish_files  rE   zInterfaceShared._publish_filesc                 C   rA   )N)r   rI   )r#   r   r=   r&   r&   r'   _publish_use_artifact  rE   z%InterfaceShared._publish_use_artifactc                 C   rX   )N)r}   )rC   r   )r#   r}   r=   r&   r&   r'   _communicate_artifact  r]   z%InterfaceShared._communicate_artifactc                 C   rX   )N)r~   rY   )r#   r~   r=   r&   r&   r'   _deliver_download_artifact     
z*InterfaceShared._deliver_download_artifactc                 C   rX   )N)r   rY   )r#   r   r=   r&   r&   r'   _deliver_link_artifact  r   z&InterfaceShared._deliver_link_artifactproto_artifactc                 C   rA   )N)r   rI   )r#   r   r=   r&   r&   r'   _publish_artifact  rE   z!InterfaceShared._publish_artifactproto_alertc                 C   rA   )N)r   rI   )r#   r   r=   r&   r&   r'   _publish_alert  rE   zInterfaceShared._publish_alertc                 C   rX   )N)ru   rY   )r#   ru   reqr&   r&   r'   _deliver_status  s   
zInterfaceShared._deliver_status	exit_datac                 C   rA   N)r   rI   )r#   r   r=   r&   r&   r'   _publish_exit  rE   zInterfaceShared._publish_exitc                 C   rA   )N)r   rB   )r#   r   r[   r&   r&   r'   _publish_keepalive  rE   z"InterfaceShared._publish_keepalivec                 C   s*   t jt  d}| j|d}| |}d S )N)shutdownr   )r7   r   ShutdownRequestrJ   r   )r#   r   r[   _r&   r&   r'   _communicate_shutdown  s   z%InterfaceShared._communicate_shutdownc                 C   s   | j }|sJ |S r)   )r   )r#   r   r&   r&   r'   _get_mailbox  s   zInterfaceShared._get_mailboxc                 C   s   |   }|j|| d}|S )N)	interface)r   rZ   )r#   r[   r   handler&   r&   r'   rZ     s   zInterfaceShared._deliver_recordc                 C   rX   r   rJ   rZ   )r#   r   r[   r&   r&   r'   _deliver_run  r]   zInterfaceShared._deliver_runc                 C   rX   )N)r   rY   )r#   r   r[   r&   r&   r'   _deliver_sync  r]   zInterfaceShared._deliver_syncc                 C   rX   )N)r{   rY   )r#   r{   r[   r&   r&   r'   _deliver_run_start  r]   z"InterfaceShared._deliver_run_startc                 C   rX   )N)rr   rY   )r#   rr   r[   r&   r&   r'   _deliver_get_summary  r]   z$InterfaceShared._deliver_get_summaryc                 C   rX   )N)r   rY   )r#   r   r[   r&   r&   r'   _deliver_get_system_metrics  r   z+InterfaceShared._deliver_get_system_metricsc                 C   rX   r   r   )r#   r   r[   r&   r&   r'   _deliver_exit  r]   zInterfaceShared._deliver_exitc                 C   rX   )N)ry   rY   )r#   ry   r[   r&   r&   r'   _deliver_poll_exit  r]   z"InterfaceShared._deliver_poll_exitc                 C   rX   )N)r   rY   )r#   r   r[   r&   r&   r'   _deliver_finish_without_exit  r   z,InterfaceShared._deliver_finish_without_exitc                 C   rX   )N)rv   rY   )r#   rv   r[   r&   r&   r'   _deliver_stop_status  r]   z$InterfaceShared._deliver_stop_statusc                 C   rX   )N)r   rY   )r#   r   r[   r&   r&   r'   _deliver_attach  r]   zInterfaceShared._deliver_attachc                 C   rX   )N)rx   rY   )r#   rx   r[   r&   r&   r'   _deliver_network_status  r   z'InterfaceShared._deliver_network_statusinternal_messagec                 C   rX   )N)rw   rY   )r#   r   r[   r&   r&   r'   _deliver_internal_messages  r   z*InterfaceShared._deliver_internal_messagesc                 C   rX   )N)rz   rY   )r#   rz   r[   r&   r&   r'    _deliver_request_sampled_history  r   z0InterfaceShared._deliver_request_sampled_historyc                 C   rX   )N)r   rY   )r#   r   r[   r&   r&   r'   _deliver_request_run_status  r   z+InterfaceShared._deliver_request_run_status   keepalive_intervalc                 C   s^   | j rdS t }|| j| k rdS z|   W n ty'   |   Y | j S w |   | j S )NTF)r   r   r    r   publish_keepaliver   r3   r4   )r#   r   nowr&   r&   r'   _transport_keepalive_failed  s   
z+InterfaceShared._transport_keepalive_failedc                    s"   t    | jr| j  d S d S r)   )r   joinr   r,   r$   r&   r'   r     s   
zInterfaceShared.join)NTN)r   Nr)   ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNNNNNNNN)r   N)Nr   )r   r   r   N)r   )r   )__name__
__module____qualname__r   r   __annotations__boolr   r   floatr   r   r   r"   propertyr0   r2   r3   r4   r7   OutputRecordr>   CancelRequestrD   OutputRawRecordrG   TBRecordrK   PartialHistoryRequestrM   HistoryRecordrP   RunPreemptingRecordrS   tpbTelemetryRecordrV   JobInputRequestr   r\   dictr_   rm   strro   rq   GetSummaryRequestPauseRequestResumeRequestStatusRequestStopStatusRequestInternalMessagesRequestNetworkStatusRequestPollExitRequestSampledHistoryRequestRunStartRequestCheckVersionRequestLogArtifactRequestDownloadArtifactRequestLinkArtifactRequestr   AttachRequestServerInfoRequestKeepaliveRequestRunStatusRequestSenderMarkRequestSenderReadRequestSyncRequestStatusReportRequestSummaryRecordRequestTelemetryRecordRequestGetSystemMetricsRequestPythonPackagesRequestRunFinishWithoutExitRequestr8   rC   	RunRecordConfigRecordFilesRecordSummaryRecordRunExitRecordArtifactRecordAlertRecordr   MetricRecordHeaderRecordr   r   UseArtifactRecordrJ   r;   intResultr   r   r   LoginResponser   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r&   r&   r$   r'   r      sv  
 



	
 !"
o	

D 

















r   ) __doc__loggingr   abcr   multiprocessing.processr   typingr   r   r   r   wandb.protor   r7   r   r  
wandb.utilr	   r
   lib.mailboxr   r   r   r   message_futurer   routerr   	getLoggerloggerr   r&   r&   r&   r'   <module>   s     
