o
    -wi:G                     @   s   d Z ddlZddlmZ ddlmZmZm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 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)AnyOptionalcast)wandb_internal_pb2)wandb_telemetry_pb2)MailboxMailboxHandle)json_dumps_saferjson_friendly   )InterfaceBasewandbc                C       sD  e Zd Zddee ddf 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dfddZdejddfddZd ejdeej fd!d"Zd#edejfd$d%Z 																																dd&eej! d'eej" d(eej# d)eej$ d*eej% d+eej& d,eej' d-eej( d.eej) deej d/eej* d0eej+ d1eej, d2eej- d3eej. d4eej/ d5eej0 d6eej1 d7eej2 d8eej3 d9eej4 d:eej5 d;eej6 d<eej7 d=eej8 d	eej	 d>eej9 d?eej: d@eej; dAeej< d eej dBeej= dej>fBdCdDZ?																					ddEeej@ dFeejA dGeejB dHeejC deej dIeej dJeejD dKeejE deej dLeejF dMeejG dNeejH dOeejI dPeejJ dQeejK dReej dSeej dTeejL dUeej dVeej deej dej>f,dWdXZMeNddYej>dZeeO ddfd[d\ZPdd_d`ZQdd]eRddfdbdcZSdOejIddfdddeZTddfdgZUddhdiZVd'ej"ddfdjdkZWd(ej#ddfdldmZXdEej@ddfdndoZYdpejAddfdqdrZZdHejCddfdsdtZ[dNejHddfdudvZ\d#eddfdwdxZ]dAej<ddfdydzZ^dGejBddfd{d|Z_dTejLde`fd}d~Zad2ej-deej fddZbd3ej.deej fddZcd4ej/deej fddZddejEddfddZedejFddfddZfd)ej$deej fddZgdejDddfddZhd8ej3ddfddZideej fddZjdefddZkdYej>deej fddZldEej@deej fddZmd<ej7deej fddZnd0ej+deej fddZod&ej!deej fddZpd@ej;deej fddZqdejDdeej fddZrdd Zsd.ej)deej fddZtdBej=deej fddZud*ej%deej fddZvd6ej1deej fddZwd,ej'deej fddZxdej&deej fddZyd/ej*deej fddZzd9ej4deej fddZ{  Z|S )InterfaceSharedNmailboxreturnc                    s   t    || _d S N)super__init___mailboxselfr   	__class__ a/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/wandb/sdk/interface/interface_shared.pyr      s   

zInterfaceShared.__init__outdatac                 C   "   t  }|j| | | d S r   )pbRecordoutputCopyFrom_publishr   r   recr   r   r   _publish_output      zInterfaceShared._publish_outputcancelc                 C      | j |d}| | d S )N)r'   _make_requestr"   )r   r'   r$   r   r   r   _publish_cancel      zInterfaceShared._publish_cancelc                 C   r   r   )r   r   
output_rawr!   r"   r#   r   r   r   _publish_output_raw#   r&   z#InterfaceShared._publish_output_rawtbrecordc                 C   r(   )N)r/   _make_recordr"   )r   r/   r$   r   r   r   _publish_tbdata(   r,   zInterfaceShared._publish_tbdatapartial_historyc                 C   r(   )N)r3   r)   )r   r3   r$   r   r   r   _publish_partial_history,      z(InterfaceShared._publish_partial_historyhistoryc                 C   r(   )N)r6   r0   )r   r6   r$   r   r   r   _publish_history2   r,   z InterfaceShared._publish_historypreempt_recc                 C   r(   )N)
preemptingr0   )r   r8   r$   r   r   r   _publish_preempting6   r,   z#InterfaceShared._publish_preemptingtelemc                 C   r(   )N)	telemetryr0   )r   r;   r$   r   r   r   _publish_telemetry:   r,   z"InterfaceShared._publish_telemetryenvironmentc                 C   r(   )N)r>   r0   )r   r>   r$   r   r   r   _publish_environment>   r,   z$InterfaceShared._publish_environment	job_inputc                 C      | j |d}| |S )N)r@   r*   _deliver_record)r   r@   recordr   r   r   _publish_job_inputB      
z"InterfaceShared._publish_job_input
stats_dictc                 C   sV   t  }t jjj|_|j  | D ]\}}|j	 }||_
tt|d |_q|S )Nr   )r   StatsRecord	StatsTypeSYSTEM
stats_type	timestampGetCurrentTimeitemsitemaddkeyr
   r   
value_json)r   rG   statskvrO   r   r   r   _make_statsH   s   

zInterfaceShared._make_statsget_summarypauseresumestatusstop_statusinternal_messagesnetwork_statusoperation_stats	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_finish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)(r   RequestrW   r!   rX   rY   rZ   r[   r\   r]   
operationsr_   r3   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   r'   rn   ro   rp   rq   rm   rr   r@   rs   	Exceptionr1   controllocalflow_control)#r   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r3   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   r'   ro   rp   rq   rr   r@   rs   ru   rD   r   r   r   r*   R   s   #zInterfaceShared._make_requestrunconfigfilessummaryrS   exitartifactalertfinalmetricheaderfooterru   r<   r9   use_artifactr    r-   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 |r|j| |S td)NzInvalid record)r   r   r|   r!   r}   r   r6   r~   rS   r   r   r/   r   r   r   r   ru   r<   r   r9   r   r    r-   r>   rx   )r   r|   r}   r~   r   r6   rS   r   r   r/   r   r   r   r   r   ru   r<   r9   r   r    r-   r>   rD   r   r   r   r1      s   +)'%#!	zInterfaceShared._make_recordrD   rz   c                 C   s   t r   )NotImplementedError)r   rD   rz   r   r   r   r"     s   zInterfaceShared._publishstatepb.DeferRequest.DeferState.Vc                 C   s*   t j|d}| j|d}| j|dd d S )N)r   )rf   T)rz   )r   DeferRequestr*   r"   )r   r   rf   r$   r   r   r   _publish_defer
  s   zInterfaceShared._publish_deferr   c                 C   s   |  td| d S )Nr   )r   r   )r   r   r   r   r   publish_defer  s   zInterfaceShared.publish_deferc                 C   r(   )N)r   r0   )r   r   r$   r   r   r   _publish_header  r,   zInterfaceShared._publish_headerc                 C   "   t  }| j|d}| | d S )N)r   )r   FooterRecordr1   r"   )r   r   r$   r   r   r   publish_footer  r&   zInterfaceShared.publish_footerc                 C   r   )N)r   )r   FinalRecordr1   r"   )r   r   r$   r   r   r   publish_final  r&   zInterfaceShared.publish_finalc                 C   r(   )N)rX   r)   )r   rX   r$   r   r   r   _publish_pause   r,   zInterfaceShared._publish_pausec                 C   r(   )N)rY   r)   )r   rY   r$   r   r   r   _publish_resume$  r,   zInterfaceShared._publish_resumec                 C   r(   N)r|   r0   )r   r|   r$   r   r   r   _publish_run(  r,   zInterfaceShared._publish_runcfgc                 C   r(   )N)r}   r0   )r   r   r$   r   r   r   _publish_config,  r,   zInterfaceShared._publish_configc                 C   r(   )N)r   r0   )r   r   r$   r   r   r   _publish_summary0  r,   z InterfaceShared._publish_summaryc                 C   r(   )N)r   r0   )r   r   r$   r   r   r   _publish_metric4  r,   zInterfaceShared._publish_metricc                 C   s$   |  |}| j|d}| | d S )N)rS   )rV   r1   r"   )r   rG   rS   r$   r   r   r   publish_stats8  s   
zInterfaceShared.publish_statsc                 C   r(   )N)rr   r)   )r   rr   r$   r   r   r   _publish_python_packages=  r5   z(InterfaceShared._publish_python_packagesc                 C   r(   )N)r~   r0   )r   r~   r$   r   r   r   _publish_filesC  r,   zInterfaceShared._publish_filesc                 C   r(   )N)r   r0   )r   r   r$   r   r   r   _publish_use_artifactG  r,   z%InterfaceShared._publish_use_artifactc                 C   rA   )N)rc   rB   )r   rc   r$   r   r   r   _deliver_artifactK     
z!InterfaceShared._deliver_artifactc                 C   rA   )N)rd   rB   )r   rd   r$   r   r   r   _deliver_download_artifactR  rF   z*InterfaceShared._deliver_download_artifactc                 C   rA   )N)re   rB   )r   re   r$   r   r   r   _deliver_link_artifactX  rF   z&InterfaceShared._deliver_link_artifactproto_artifactc                 C   r(   )N)r   r0   )r   r   r$   r   r   r   _publish_artifact^  r,   z!InterfaceShared._publish_artifactproto_alertc                 C   r(   )N)r   r0   )r   r   r$   r   r   r   _publish_alertb  r,   zInterfaceShared._publish_alertc                 C   rA   )N)rZ   rB   )r   rZ   reqr   r   r   _deliver_statusf  r   zInterfaceShared._deliver_status	exit_datac                 C   r(   N)r   r0   )r   r   r$   r   r   r   _publish_exitm  r,   zInterfaceShared._publish_exitc                 C   r(   )N)ri   r)   )r   ri   rD   r   r   r   _publish_keepaliveq  r,   z"InterfaceShared._publish_keepalivec                 C   s&   t jt  d}| j|d}| |S )N)shutdownrt   )r   rv   ShutdownRequestr1   rC   )r   ru   rD   r   r   r   _deliver_shutdownu  s   
z!InterfaceShared._deliver_shutdownc                 C   s   | j }|sJ |S r   )r   r   r   r   r   _get_mailboxz  s   zInterfaceShared._get_mailboxc                 C   s*   |   }||}| | |dd S )Nc                 S   s   | j S r   )result_communicate)respr   r   r   <lambda>  s    z1InterfaceShared._deliver_record.<locals>.<lambda>)r   require_responser"   map)r   rD   r   handler   r   r   rC     s   

zInterfaceShared._deliver_recordc                 C   rA   r   r1   rC   )r   r|   rD   r   r   r   _deliver_run  s   
zInterfaceShared._deliver_runc                 C   rA   )N)rm   rB   )r   rm   rD   r   r   r   _deliver_finish_sync  r   z$InterfaceShared._deliver_finish_syncc                 C   rA   )N)ra   rB   )r   ra   rD   r   r   r   _deliver_run_start  r   z"InterfaceShared._deliver_run_startc                 C   rA   )N)rW   rB   )r   rW   rD   r   r   r   _deliver_get_summary  r   z$InterfaceShared._deliver_get_summaryc                 C   rA   )N)rq   rB   )r   rq   rD   r   r   r   _deliver_get_system_metrics  rF   z+InterfaceShared._deliver_get_system_metricsc                 C   rA   r   r   )r   r   rD   r   r   r   _deliver_exit  r   zInterfaceShared._deliver_exitc                 C   s   | j t d}| |S )N)r^   )r*   r   OperationStatsRequestrC   )r   rD   r   r   r   deliver_operation_stats  s   
z'InterfaceShared.deliver_operation_statsc                 C   rA   )N)r_   rB   )r   r_   rD   r   r   r   _deliver_poll_exit  r   z"InterfaceShared._deliver_poll_exitc                 C   rA   )N)rs   rB   )r   rs   rD   r   r   r   _deliver_finish_without_exit  rF   z,InterfaceShared._deliver_finish_without_exitc                 C   rA   )N)r[   rB   )r   r[   rD   r   r   r   _deliver_stop_status  r   z$InterfaceShared._deliver_stop_statusc                 C   rA   )N)rg   rB   )r   rg   rD   r   r   r   _deliver_attach  r   zInterfaceShared._deliver_attachc                 C   rA   )N)r]   rB   )r   r]   rD   r   r   r   _deliver_network_status  rF   z'InterfaceShared._deliver_network_statusinternal_messagec                 C   rA   )N)r\   rB   )r   r   rD   r   r   r   _deliver_internal_messages  rF   z*InterfaceShared._deliver_internal_messagesc                 C   rA   )N)r`   rB   )r   r`   rD   r   r   r    _deliver_request_sampled_history  rF   z0InterfaceShared._deliver_request_sampled_historyc                 C   rA   )N)rj   rB   )r   rj   rD   r   r   r   _deliver_request_run_status  rF   z+InterfaceShared._deliver_request_run_statusr   ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNNNNNNNNN)r   r   r   N)r   )r   N)}__name__
__module____qualname__r   r   r   r   OutputRecordr%   CancelRequestr+   OutputRawRecordr.   TBRecordr2   PartialHistoryRequestr4   HistoryRecordr7   RunPreemptingRecordr:   tpbTelemetryRecordr=   EnvironmentRecordr?   JobInputRequestr	   ResultrE   dictrH   rV   GetSummaryRequestPauseRequestResumeRequestStatusRequestStopStatusRequestInternalMessagesRequestNetworkStatusRequestr   PollExitRequestSampledHistoryRequestRunStartRequestCheckVersionRequestLogArtifactRequestDownloadArtifactRequestLinkArtifactRequestr   AttachRequestServerInfoRequestKeepaliveRequestRunStatusRequestSenderMarkRequestSenderReadRequestSyncFinishRequestStatusReportRequestSummaryRecordRequestTelemetryRecordRequestGetSystemMetricsRequestPythonPackagesRequestRunFinishWithoutExitRequestr   r*   	RunRecordConfigRecordFilesRecordSummaryRecordRunExitRecordArtifactRecordAlertRecordr   MetricRecordHeaderRecordr   rv   UseArtifactRecordr1   r   boolr"   r   intr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   r   r   r      sZ   

	
 !"
o	

G 



















r   )__doc__loggingabcr   typingr   r   r   wandb.protor   r   r   r   wandb.sdk.mailboxr   r	   
wandb.utilr
   r   	interfacer   	getLoggerloggerr   r   r   r   r   <module>   s    
