o
    nic                     @   s   d Z ddl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 ddlmZmZ d	d
lmZmZmZ d	dlmZ erBddlmZ eeZG dd dZdS )zWriter thread.    N)TYPE_CHECKINGCallableOptional)wandb_internal_pb2)wandb_telemetry_pb2   )InterfaceQueue)
proto_util	telemetry   )context	datastoreflow_control)SettingsStatic)Queuec                   @   st  e Zd ZU eed< ded< ded< ded< eed< ejed< ee	j
 ed	< eej ed
< ed ed< eed< ejed< eed< eed< dedddddddedejfddZdDddZdEdd ZdDd!d"ZdDd#d$ZdDd%d&Zdddefd'd(Zd)eddfd*d+Zd,ed-eddfd.d/ZdEd0d1ZdEd2d3ZdEd4d5ZdEd6d7ZdEd8d9ZdEd:d;ZdFd>d?Z dDd@dAZ!dDdBdCZ"dS )GWriteManager	_settingszQueue[pb.Record]	_record_qzQueue[pb.Result]	_result_q	_sender_q
_interface_context_keeper_ds_flow_controlzpb.StatusReportRequest_status_report_record_num_telemetry_obj_telemetry_overflow_use_flow_controlsettingsrecord_qresult_qsender_q	interfacecontext_keeperc                 C   sd   || _ || _|| _|| _|| _|| _d | _d | _d | _d| _	t
 | _d| _| j jp-| j j | _d S )Nr   F)r   r   r   r   r   r   r   r   r   r   tpbTelemetryRecordr   r   x_flow_control_disabled_offliner   )selfr   r    r!   r"   r#   r$    r*   W/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/internal/writer.py__init__(   s   	

zWriteManager.__init__returnNc                 C   s>   t  | _| j| jj tj| j| j| j	| j
| jd| _d S )N)r   write_recordforward_recordpause_markerrecover_records)r   	DataStorer   open_for_writer   	sync_filer   FlowControl_write_record_forward_record_pause_marker_recover_recordsr   r)   r*   r*   r+   openE   s   
zWriteManager.openrecord	pb.Recordc                 C   s   | j | | j| d S N)r   add_from_recordr   putr)   r<   r*   r*   r+   r7   P   s   zWriteManager._forward_recordc                 C   s$   t  }| jj|d}| | d S )N)sender_mark)pbSenderMarkRequestr   _make_requestr7   )r)   rB   r<   r*   r*   r+   
_send_markT   s   zWriteManager._send_markc                 C   sp   | j rd S d| _ tj| jd}d|j_W d    n1 sw   Y  tj| jd}| jj	|d}| 
| d S )NT)obj)r
   )telemetry_record)r   r
   r   r   featureflow_control_overflowrC   TelemetryRecordRequestr   rE   r7   )r)   telrH   r<   r*   r*   r+   _maybe_send_telemetryY   s   
z"WriteManager._maybe_send_telemetryc                 C   s   |    |   d S r>   )rM   rF   r:   r*   r*   r+   r8   c   s   zWriteManager._pause_markerc                 C   sX   | j sJ |  jd7  _t|| j | j |}|d usJ |\}}}t|| |S )Nr   )r   r   r	   _assign_record_numwrite_assign_end_offset)r)   r<   ret_start_offset
end_offset_flush_offsetr*   r*   r+   r6   g   s   

zWriteManager._write_recordoffsetc                 C   s   | j r| j | d S d S r>   )r   ensure_flushed)r)   rU   r*   r*   r+   _ensure_flusheds   s   zWriteManager._ensure_flushedstartendc                 C   s4   t j||d}| jj|d}| | | | d S )N)start_offsetfinal_offset)sender_read)rC   SenderReadRequestr   rE   rW   r7   )r)   rX   rY   r\   r<   r*   r*   r+   r9   w   s   
zWriteManager._recover_recordsc                 C   sb   | j s|   | jsJ |jjs| | | jr | j| d S | jj	r(|jj
r/| | d S d S r>   )r   r;   r   controllocalr6   r   flowr   r(   always_sendr7   rA   r*   r*   r+   _write   s   

zWriteManager._writec                 C   s4   | d}|s	J d| }t| || j}|| d S )Nrecord_typewrite_)
WhichOneofgetattrrb   )r)   r<   rc   
writer_strwrite_handlerr*   r*   r+   rO      s   
zWriteManager.writec                 C   sB   |j d}|s
J d| }t| |d }|r||S | | d S )Nrequest_typewrite_request_)requestre   rf   rb   )r)   r<   ri   write_request_strwrite_request_handlerr*   r*   r+   write_request   s   zWriteManager.write_requestc                 C   sV   t |}| jr$|jjj| jj | jj}| j|jj_	| j| |jj_
| | d S r>   )r	   _result_from_recordr   responserun_status_response	sync_timeCopyFrom
record_numr   sync_items_totalsync_items_pending_respond_result)r)   r<   resultsend_record_numr*   r*   r+   write_request_run_status   s   

z%WriteManager.write_request_run_statusc                 C   s   |j j| _| | d S r>   )rk   status_reportr   rb   rA   r*   r*   r+   write_request_status_report   s   
z(WriteManager.write_request_status_reportc                 C   s   |j jj}| j| d S r>   )rk   cancelcancel_slotr   )r)   r<   	cancel_idr*   r*   r+   write_request_cancel   s   
z!WriteManager.write_request_cancelrx   	pb.Resultc                 C   s   | j | d S r>   )r   r@   )r)   rx   r*   r*   r+   rw      s   zWriteManager._respond_resultc                 C   s(   | j r| j   | jr| j  d S d S r>   )r   flushr   closer:   r*   r*   r+   finish   s
   
zWriteManager.finishc                 C   s   d S r>   r*   r:   r*   r*   r+   debounce   s   zWriteManager.debounce)r-   N)r<   r=   r-   N)rx   r   r-   N)#__name__
__module____qualname__r   __annotations__r   r   ContextKeeperr   r   r2   r   r5   intr%   r&   boolr,   r;   r7   rF   rM   r8   r6   rW   r9   rb   rO   rn   rz   r|   r   rw   r   r   r*   r*   r*   r+   r      sX   
 









	

	



	
r   )__doc__loggingtypingr   r   r   wandb.protor   rC   r   r%   interface.interface_queuer   libr	   r
    r   r   r   settings_staticr   queuer   	getLoggerr   loggerr   r*   r*   r*   r+   <module>   s    
