+
    –°³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   &&Ú^/home/luca/screen-checking/.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   2   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!   2   sW   € ðÜ-¨iÕ8ˆô $ NÐD°TÒD¸VÑ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Ý .Ý *ð 
‡M�MÐ%Ø	‡J�J�Ø	‡K�KÐ!Ø	‡I�Iˆ~Ø	‡N�NÐ'Ø	‡M�MÐ%Ø	‡K�KÐ!Ø	‡L�LÐ#ð	Ð ò*õ&E÷r   