U
    d                     @   s   d dl mZ d dlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ejeejeeje	ejeejeejeejeejeiZedddZedddZdS )    )Type)optim   )_FunctionalAdagrad)_FunctionalAdam)_FunctionalAdamW)_FunctionalSGD)_FunctionalAdadelta)_FunctionalRMSprop)_FunctionalRprop)_FunctionalAdamax)	optim_clsc                 O   sB   zt |  }W n$ tk
r0   td|  dY nX t|f||S )Nz
Optimizer z( does not have a functional counterpart!)functional_optim_mapKeyError
ValueError_create_functional_optim)r   argskwargsZfunctional_cls r   A/tmp/pip-unpacked-wheel-ua33x9lu/torch/distributed/optim/utils.pyas_functional_optim   s
    r   )functional_optim_clsc                 O   s   | g f||ddiS )NZ_allow_empty_param_listTr   )r   r   r   r   r   r   r   #   s    r   N)typingr   Ztorchr   Zfunctional_adagradr   Zfunctional_adamr   Zfunctional_adamwr   Zfunctional_sgdr   Zfunctional_adadeltar	   Zfunctional_rmspropr
   Zfunctional_rpropr   Zfunctional_adamaxr   ZAdagradZAdamZAdamWZSGDZAdadeltaZRMSpropZRpropZAdamaxr   r   r   r   r   r   r   <module>   s8           