
    IЦi                     b   S SK Jr  S SKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJr  SS
KJr  SSKJr  \R(                  \\R*                  \	\R,                  \\R.                  \\R0                  \\R2                  \\R4                  \\R6                  \0rS rS\4S jrS\4S jrg)    )Type)optim   )_FunctionalAdadelta)_FunctionalAdagrad)_FunctionalAdam)_FunctionalAdamax)_FunctionalAdamW)_FunctionalRMSprop)_FunctionalRprop)_FunctionalSGDc                 ,    U [         ;  a
  U[         U '   gg)a  
Interface to insert a new functional optimizer to functional_optim_map
``fn_optim_key`` and ``fn_optimizer`` are user defined. The optimizer and key
need not be of :class:`torch.optim.Optimizer` (e.g. for custom optimizers)
Example::
    >>> # import the new functional optimizer
    >>> # xdoctest: +SKIP
    >>> from xyz import fn_optimizer
    >>> from torch.distributed.optim.utils import register_functional_optim
    >>> fn_optim_key = "XYZ_optim"
    >>> register_functional_optim(fn_optim_key, fn_optimizer)
N)functional_optim_map)keyr   s     \/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/distributed/optim/utils.pyregister_functional_optimr       s     &&$)S! '    	optim_clsc                 x     [         U    n[        U/UQ70 UD6$ ! [         a  n[        SU  S35      UeS nAff = f)Nz
Optimizer z( does not have a functional counterpart!)r   KeyError
ValueError_create_functional_optim)r   argskwargsfunctional_clses        r   as_functional_optimr   1   sW    -i8 $NDTDVDD  #OP
	s   	 
949functional_optim_clsc                 "    U " / /UQ70 UDSS0D6$ )N_allow_empty_param_listT )r   r   r   s      r   r   r   <   s.    
	  !%	 r   N) typingr   torchr   functional_adadeltar   functional_adagradr   functional_adamr   functional_adamaxr	   functional_adamwr
   functional_rmspropr   functional_rpropr   functional_sgdr   AdagradAdamAdamWSGDAdadeltaRMSpropRpropAdamaxr   r   r   r   r!   r   r   <module>r4      s      4 2 , 0 . 2 . * 
MM%	JJ	KK!	II~	NN'	MM%	KK!	LL#	 *"E4 E4 r   