o
    „o™i  ã                
   @   s†  d Z ddlZddlZddlmZ ddlmZmZmZm	Z	 ddl
m  mZ ddl
mZmZmZmZmZmZ ddlmZ ddlmZ e e¡e_dee fd	d
„Zes©edƒZedƒZe	deeef deeee f fdd„ƒZe	deeef dedeeef fdd„ƒZddeeef dee deeee f fdd„Ze ejdeƒ p¤dƒej_!nejZe edeƒ p³dƒe_!G dd„ de"ƒZ#e#e_$dS )zFUtilities that can be used for calling functions on a particular rank.é    N)Úwraps)ÚCallableÚOptionalÚTypeVarÚoverload)ÚWarningCacheÚrank_prefixed_messageÚrank_zero_debugÚrank_zero_deprecationÚrank_zero_infoÚrank_zero_warn)Ú	ParamSpec)Ú_UTILITIES_GREATER_EQUAL_0_10Úreturnc                  C   s2   d} | D ]}t j |¡}|d urt|ƒ  S qd S )N)ÚRANKÚ
LOCAL_RANKÚSLURM_PROCIDÚJSM_NAMESPACE_RANK)ÚosÚenvironÚgetÚint)Ú	rank_keysÚkeyÚrank© r   úX/home/ubuntu/.local/lib/python3.10/site-packages/lightning/fabric/utilities/rank_zero.pyÚ	_get_rank'   s   ÿr   ÚTÚPÚfnc                 C   ó   dS ©zRank zero only.Nr   )r    r   r   r   Úrank_zero_only7   ó    r#   Údefaultc                 C   r!   r"   r   )r    r%   r   r   r   r#   ;   r$   c                    s0   t ˆƒdtjdtjdtt f‡ ‡fdd„ƒ}|S )NÚargsÚkwargsr   c                     s6   t tdd ƒ}|d u rtdƒ‚|dkrˆ| i |¤ŽS ˆ S )Nr   z4The `rank_zero_only.rank` needs to be set before user   )Úgetattrr#   ÚRuntimeError)r&   r'   r   ©r%   r    r   r   Ú
wrapped_fn@   s   z"rank_zero_only.<locals>.wrapped_fn)r   r   r&   r'   r   r   )r    r%   r+   r   r*   r   r#   ?   s   &r   c                   @   s   e Zd ZdZdS )ÚLightningDeprecationWarningz)Deprecation warnings raised by Lightning.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r,   S   s    r,   )N)%r0   Úloggingr   Ú	functoolsr   Útypingr   r   r   r   Ú"lightning_utilities.core.rank_zeroÚcoreÚ	rank_zeroÚrank_zero_moduler   r   r	   r
   r   r   Útyping_extensionsr   Ú"lightning.fabric.utilities.importsr   Ú	getLoggerr-   Úlogr   r   r   r   r#   r(   r   ÚDeprecationWarningr,   Úrank_zero_deprecation_categoryr   r   r   r   Ú<module>   s0    ((0
