o
    ci                  
   @   s*  d dl mZ d dlmZmZ d dlmZm	Z	m
Z
mZ dZdZejejjejejjiZe	jejje	jejje	jejje	jejje	jejjiZe	jejje	jejje	jejje	jejje	jejjiZdee dee fddZd	edej fd
dZ!dedej"fddZ#de
defddZ$de
defddZ%dS )    )Optional)ExportTrainRunAttemptEventDataExportTrainRunEventData)ActorStatusEnumRunStatusEnumTrainRunInfoTrainWorkerInfo   msreturnc                 C   s   | d u rd S | d S )Ni@B  )r
   r   r   T/home/ubuntu/.local/lib/python3.10/site-packages/ray/train/_internal/state/export.py	_ms_to_ns(   s   r   	resourcesc                 C   s   t j| dS )z8Convert resources dictionary to protobuf TrainResources.r   )ProtoTrainRunAttemptTrainResourcesr   r   r   r   _to_proto_resources/   s   r   workerc                 C   sJ   t j| j| j| jt| jt| j| j	| j
| jt| j t| jd
}|S )z'Convert TrainWorker to protobuf format.)

world_rank
local_rank	node_rankactor_idnode_idnode_ippidgpu_idsstatusr   )r   TrainWorkerr   r   r   bytesfromhexr   r   r   r   r   _ACTOR_STATUS_MAPr   r   r   )r   proto_workerr   r   r   _to_proto_worker4   s   

r#   run_infoc                 C   sH   t tt| j| jt| jt| jt	| j
 | jt| jt| jd
}|S )z1Convert TrainRunInfo to TrainRun protobuf format.)
schema_versionray_train_versionidnamejob_idcontroller_actor_idr   status_detailstart_time_nsend_time_ns)ProtoTrainRunTRAIN_SCHEMA_VERSIONRAY_TRAIN_VERSIONr'   r(   r   r    r)   r*   _RUN_STATUS_MAP
run_statusr+   r   start_time_msend_time_ms)r$   	proto_runr   r   r   train_run_info_to_proto_runG   s   

r6   c                 C   sP   t tt| j| jt| j | jt| jt| j	dd | j
D dd | jD d
}|S )z8Convert TrainRunInfo to TrainRunAttempt protobuf format.c                 S      g | ]}t |qS r   )r   ).0rr   r   r   
<listcomp>e       z3train_run_info_to_proto_attempt.<locals>.<listcomp>c                 S   r7   r   )r#   )r8   r   r   r   r   r:   f   r;   )
r%   r&   run_id
attempt_idr   r+   r,   r-   r   workers)r   r/   r0   r'   _RUN_ATTEMPT_STATUS_MAPr2   r+   r   r3   r4   r   r>   )r$   proto_attemptr   r   r   train_run_info_to_proto_attemptY   s   rA   N)&typingr   )ray.core.generated.export_train_state_pb2r   r   r   r.    ray.train._internal.state.schemar   r   r   r   r/   r0   ALIVEActorStatusDEADr!   STARTEDRunAttemptStatusPENDINGRUNNINGFINISHEDERROREDABORTEDr?   	RunStatusINITIALIZINGr1   intr   dictr   r   r   r#   r6   rA   r   r   r   r   <module>   s2    







	



	