U
    ©Ê¹jd  ã                   @   s¦   d dl Z d dlmZmZmZ d dlmZ d dlmZm	Z	m
Z
 ddddgZe	eeeedf ZG d	d„ deeƒZeG d
d„ dƒƒZG dd„ deeƒZeG dd„ dƒƒZdS )é    N)ÚasdictÚ	dataclassÚfield)ÚEnum)ÚDictÚUnionÚOptionalÚEventSourceÚEventÚ	NodeStateÚ	RdzvEventc                   @   s   e Zd ZdZdZdZdS )r	   z3
    Known identifiers of the event producers.
    ÚAGENTÚWORKERN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/distributed/elastic/events/api.pyr	      s   c                   @   sz   e Zd ZU dZeed< eed< dZeed< e	e
d�Zeeef ed< dd	„ Zeeed f d d
œdd„ƒZedœdd„ZdS )r
   a|  
    The class represents the generic event that occurs during the torchelastic
    job execution. The event can be any kind of meaningful action.

    Args:
        name: event name.
        source: the event producer, e.g. agent or worker
        timestamp: timestamp in milliseconds when event occurred.
        metadata: additional data that is associated with the event.
    ÚnameÚsourcer   Ú	timestamp)Údefault_factoryÚmetadatac                 C   s   |   ¡ S ©N©Ú	serialize©Úselfr   r   r   Ú__str__.   s    zEvent.__str__©ÚdataÚreturnc                 C   s<   t | tƒr| S t | tƒr"t | ¡}t|d  |d< tf |ŽS )Nr   )Ú
isinstancer
   ÚstrÚjsonÚloadsr	   ©r!   Z	data_dictr   r   r   Údeserialize1   s    


zEvent.deserialize©r"   c                 C   s   t  t| ƒ¡S r   ©r%   Údumpsr   r   r   r   r   r   :   s    zEvent.serializeN)r   r   r   r   r$   Ú__annotations__r	   r   Úintr   Údictr   r   ÚEventMetadataValuer   Ústaticmethodr   r(   r   r   r   r   r   r
      s   
c                   @   s    e Zd ZdZdZdZdZdZdS )r   z6
    The states that a node can be in rendezvous.
    ÚINITÚRUNNINGÚ	SUCCEEDEDÚFAILEDN)r   r   r   r   r1   r2   r3   r4   r   r   r   r   r   >   s
   c                   @   s¬   e Zd ZU dZeed< eed< eed< eed< eed< eed< dZeed	< d
Z	e
e ed< d
Ze
e ed< dZeed< dd„ Zeeed f d dœdd„ƒZedœdd„Zd
S )r   aŒ  
    Dataclass to represent any rendezvous event.

    Args:
        name: Event name. (E.g. Current action being performed)
        run_id: The run id of the rendezvous
        message: The message describing the event
        hostname: Hostname of the node
        pid: The process id of the node
        node_state: The state of the node (INIT, RUNNING, SUCCEEDED, FAILED)
        master_endpoint: The master endpoint for the rendezvous store, if known
        rank: The rank of the node, if known
        local_id: The local_id of the node, if defined in dynamic_rendezvous.py
        error_trace: Error stack trace, if this is an error event.
    r   Zrun_idÚmessageÚhostnameÚpidÚ
node_stateÚ Úmaster_endpointNÚrankÚlocal_idÚerror_tracec                 C   s   |   ¡ S r   r   r   r   r   r   r   f   s    zRdzvEvent.__str__r    c                 C   s<   t | tƒr| S t | tƒr"t | ¡}t|d  |d< tf |ŽS )Nr8   )r#   r   r$   r%   r&   r   r'   r   r   r   r(   i   s    


zRdzvEvent.deserializer)   c                 C   s   t  t| ƒ¡S r   r*   r   r   r   r   r   r   s    zRdzvEvent.serialize)r   r   r   r   r$   r,   r-   r   r:   r;   r   r<   r=   r   r0   r   r(   r   r   r   r   r   r   I   s   
)r%   Údataclassesr   r   r   Úenumr   Útypingr   r   r   Ú__all__r$   r-   ÚfloatÚboolr/   r	   r
   r   r   r   r   r   r   Ú<module>	   s   	!