o
    ;iD                     @   s   U d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ eG dd	 d	Zdaee ed
< defddZde	dedefddZeeZdS )    N)	dataclass)Optional)synchronize_api)_Client)InvalidError)api_pb2c                   @   s6   e Zd ZU eed< eed< ee ed< ee ed< dS )ClusterInforank
cluster_idcontainer_ipscontainer_ipv4_ipsN)__name__
__module____qualname__int__annotations__strlist r   r   N/home/ubuntu/.local/lib/python3.10/site-packages/modal/_clustered_functions.pyr      s
   
 r   cluster_inforeturnc                   C   s   t d u rtdt S )NznCluster info not initialized. Please ensure that you are calling get_cluster_info() from a clustered function.)r   r   r   r   r   r   get_cluster_info   s
   r   clienttask_id
world_sizec                    s   dd }t  }| }| | tjd< tjd dv r'dtjd< dtjd	< ntjd d
kr9dtjd< dtjd	< n
dtjd< dtjd	< |dkrc| jtj||dI d H }t|j	|j
|j|jdad S tdd|gg dad S )Nc                   S   s   t ddt jd d d S )z4Returns the ipv6 address assigned to this container.zi6pn.modal.localNr      )socketgetaddrinfoAF_INET6r   r   r   r   get_i6pn$   s   z0_initialize_clustered_function.<locals>.get_i6pnNCCL_HOSTIDMODAL_CLOUD_PROVIDER)CLOUD_PROVIDER_GCPCLOUD_PROVIDER_OCI4NCCL_SOCKET_NTHREADS1NCCL_NSOCKS_PERTHREADCLOUD_PROVIDER_AWS28   )r   container_ip)r	   r
   r   r   r    )r   gethostnameosenvironstubTaskClusterHellor   TaskClusterHelloRequestr   cluster_rankr
   r   r   r   )r   r   r   r    hostnamer-   respr   r   r   _initialize_clustered_function!   s@   






r8   )r0   r   dataclassesr   typingr   modal._utils.async_utilsr   modal.clientr   modal.exceptionr   modal_protor   r   r   r   r   r   r   r8   initialize_clustered_functionr   r   r   r   <module>   s   
	3