o
    qo™i:  ã                   @   s<   d dl mZ d dlmZmZ d dlmZ G dd„ deƒZdS )é    )Údeepcopy)ÚAnyÚDict)ÚBaseContainerc                       s‚   e Zd ZU i Zeed f ed< dededef‡ fdd„Zdedededefdd	„Z	e
defd
d„ƒZe
deddfdd„ƒZ‡  ZS )Ú	SingletonÚ
_instancesÚargsÚkwargsÚreturnc                    s0   | | j vrtt| ƒj|i |¤Ž| j | < | j |  S ©N)r   Úsuperr   Ú__call__©Úclsr   r	   ©Ú	__class__© úH/home/ubuntu/.local/lib/python3.10/site-packages/hydra/core/singleton.pyr      s   

zSingleton.__call__r   c                 O   s   | |i |¤ŽS r   r   r   r   r   r   Úinstance   s   zSingleton.instancec                  C   s2   t tjƒ} ddlm} |  |d ¡ | t tjƒdœS )Nr   ©ÚPlugins)Ú	instancesÚomegaconf_resolvers)r   r   r   Úhydra.core.pluginsr   Úpopr   Ú
_resolvers)r   r   r   r   r   Ú	get_state   s   
þzSingleton.get_stateÚstateNc                 C   s0   | d t _ddlm} | ¡  t| d ƒt_d S )Nr   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   Ú	set_state    s   
zSingleton.set_state)Ú__name__Ú
__module__Ú__qualname__r   r   ÚtypeÚ__annotations__r   r   r   Ústaticmethodr   r   Ú__classcell__r   r   r   r   r      s   
 r   N)	Úcopyr   Útypingr   r   Úomegaconf.basecontainerr   r"   r   r   r   r   r   Ú<module>   s   