o
    „o™i%	  ã                   @   sF   d dl Z d dlZd dlmZ d dlmZ e  e¡ZG dd„ deƒZ	dS )é    N)Úoverride)ÚClusterEnvironmentc                   @   sÜ   e Zd ZdZeedefdd„ƒƒZeedefdd„ƒƒZ	eede
fdd„ƒƒZeedefd	d
„ƒƒZede
fdd„ƒZede
ddfdd„ƒZede
fdd„ƒZede
ddfdd„ƒZede
fdd„ƒZede
fdd„ƒZdS )ÚKubeflowEnvironmenta`  Environment for distributed training using the `PyTorchJob`_ operator from `Kubeflow`_.

    This environment, unlike others, does not get auto-detected and needs to be passed to the Fabric/Trainer
    constructor manually.

    .. _PyTorchJob: https://www.kubeflow.org/docs/components/training/pytorch/
    .. _Kubeflow: https://www.kubeflow.org

    Úreturnc                 C   ó   dS )NT© ©Úselfr   r   úb/home/ubuntu/.local/lib/python3.10/site-packages/lightning/fabric/plugins/environments/kubeflow.pyÚcreates_processes_externally$   s   z0KubeflowEnvironment.creates_processes_externallyc                 C   s
   t jd S )NÚMASTER_ADDR)ÚosÚenvironr   r   r   r
   Úmain_address)   s   
z KubeflowEnvironment.main_addressc                 C   ó   t tjd ƒS )NÚMASTER_PORT©Úintr   r   r   r   r   r
   Ú	main_port.   s   zKubeflowEnvironment.main_portc                   C   s   t dƒ‚)Nz9The Kubeflow environment can't be detected automatically.)ÚNotImplementedErrorr   r   r   r
   Údetect3   s   zKubeflowEnvironment.detectc                 C   r   )NÚ
WORLD_SIZEr   r   r   r   r
   Ú
world_size8   ó   zKubeflowEnvironment.world_sizeÚsizeNc                 C   ó   t  d¡ d S )Nz^KubeflowEnvironment.set_world_size was called, but setting world size is not allowed. Ignored.©ÚlogÚdebug)r	   r   r   r   r
   Úset_world_size<   r   z"KubeflowEnvironment.set_world_sizec                 C   r   )NÚRANKr   r   r   r   r
   Úglobal_rank@   r   zKubeflowEnvironment.global_rankÚrankc                 C   r   )Nz`KubeflowEnvironment.set_global_rank was called, but setting global rank is not allowed. Ignored.r   )r	   r"   r   r   r
   Úset_global_rankD   r   z#KubeflowEnvironment.set_global_rankc                 C   r   )Nr   r   r   r   r   r
   Ú
local_rankH   s   zKubeflowEnvironment.local_rankc                 C   s   |   ¡ S )N)r!   r   r   r   r
   Ú	node_rankL   s   zKubeflowEnvironment.node_rank)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   Úboolr   Ústrr   r   r   Ústaticmethodr   r   r   r!   r#   r$   r%   r   r   r   r
   r      s4    
r   )
Úloggingr   Útyping_extensionsr   Ú9lightning.fabric.plugins.environments.cluster_environmentr   Ú	getLoggerr&   r   r   r   r   r   r
   Ú<module>   s   
