+
    &j                     T   ^ RI Ht ^RIHt ^RIHt ^RIHt ^RIH	t	 ^RI
Ht ^RIHt ^RIHt ^R	IHt ]P$                  ]]P&                  ]]P(                  ]]P*                  ]]P,                  ]]P.                  ]]P0                  ]]P2                  ]	/tR
 tR R ltR R ltR# )    )optim)_FunctionalAdadelta)_FunctionalAdagrad)_FunctionalAdam)_FunctionalAdamax)_FunctionalAdamW)_FunctionalRMSprop)_FunctionalRprop)_FunctionalSGDc                2    V \         9  d   V\         V &   R# R# )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   &&u/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/torch/distributed/optim/utils.pyregister_functional_optimr      s     &&$)S! '    c                $    V ^8  d   QhR\         /# )   	optim_clstype)formats   "r   __annotate__r   0   s     E E4 Er   c                      \         V ,          p\        T.TO5/ TB #   \         d   p\        R T  R24      ThRp?ii ; i)z
Optimizer z( does not have a functional counterpart!N)r   KeyError
ValueError_create_functional_optim)r   argskwargsfunctional_clses   &*,  r   as_functional_optimr!   0   sW    -i8 $NDTDVDD  #KL
	s    >9>c                $    V ^8  d   QhR\         /# )r   functional_optim_clsr   )r   s   "r   r   r   ;   s      4 r   c                 "    V ! . .VO5/ VBR R/B # )_allow_empty_param_listT )r#   r   r   s   &*,r   r   r   ;   s.    
	  !%	 r   N)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>r8      s     4 2 , 0 . 2 . * 
MM%	JJ	KK!	II~	NN'	MM%	KK!	LL#	 *"Er   