o
    ci                     @   s   d dl Z d dlZd dlZd dlmZ d dl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 eeZedd	eG d
d deZdee defddZG dd deZdS )    N)	dataclass)Listget_address_and_port)WorkerGroup)BackendBackendConfig)	PublicAPIbeta)	stabilityc                   @   s   e Zd Zedd ZdS )TensorflowConfigc                 C   s   t S )N)_TensorflowBackend)self r   O/home/ubuntu/.local/lib/python3.10/site-packages/ray/train/tensorflow/config.pybackend_cls   s   zTensorflowConfig.backend_clsN)__name__
__module____qualname__propertyr   r   r   r   r   r      s    r   worker_addressesindexc                 C   s(   d| id|dd}t |tjd< dS )zSet up distributed Tensorflow training information.

    This function should be called on each worker.

    Args:
        worker_addresses: Addresses of all the workers.
        index: Index (i.e. world rank) of the current worker.
    worker)typer   )clustertask	TF_CONFIGN)jsondumpsosenviron)r   r   	tf_configr   r   r   _setup_tensorflow_environment   s   
r"   c                   @   s   e Zd ZdedefddZdS )r   worker_groupbackend_configc              	   C   sN   dd }| |}g }tt|D ]}||j|t||d qt| d S )Nc                  S   s   t  \} }|  d| S )N:r   )addressportr   r   r   get_url+   s   
z,_TensorflowBackend.on_start.<locals>.get_url)r   r   )executerangelenappendexecute_single_asyncr"   rayget)r   r#   r$   r(   urlssetup_futuresir   r   r   on_start)   s   
z_TensorflowBackend.on_startN)r   r   r   r   r   r3   r   r   r   r   r   (   s    r   )r   loggingr   dataclassesr   typingr   r.   ray.train._internal.utilsr    ray.train._internal.worker_groupr   ray.train.backendr   r   ray.utilr	   	getLoggerr   loggerr   strintr"   r   r   r   r   r   <module>   s     
