o
    qoi                     @   s   d dl Z d dlmZ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efd	d
ZdedefddZG dd dZG dd dZG dd dZdS )    N)AnyOptional)version)deprecation_warning)GlobalHydra)	Singleton)_UNSPECIFIED_returnc                   C   s   t tjv rttjt  S d S N)r   r   
_instancescopydeepcopy r   r   Q/home/ubuntu/.local/lib/python3.10/site-packages/hydra/experimental/initialize.pyget_gh_backup   s   
r   
_gh_backupc                 C   s"   | d u r
t jt= d S | t jt< d S r
   )r   r   r   )r   r   r   r   restore_gh_from_backup   s   r   c                	   @   st   e Zd Zeddfdee dee deddfddZd	ed
eddfddZ	dedededdfddZ
defddZdS )
initializeN   config_pathjob_namecaller_stack_depthr	   c                 C   sD   ddl m} d}tdrt|t|d ||||d d| _d S )Nr   )r   zQhydra.experimental.initialize() is no longer experimental. Use hydra.initialize()1.2messager   )r   r   r   )hydrar   r   base_at_leastImportErrorr   delegate)selfr   r   r   real_initializer   r   r   r   __init__   s   

zinitialize.__init__argskwargsc                 O      | j j|i | d S r
   r   	__enter__r   r"   r#   r   r   r   r&   3      zinitialize.__enter__exc_typeexc_valexc_tbc                 C      | j ||| d S r
   r   __exit__r   r)   r*   r+   r   r   r   r.   6      zinitialize.__exit__c                 C      dS )Nzhydra.experimental.initialize()r   r   r   r   r   __repr__9      zinitialize.__repr__)__name__
__module____qualname__r   r   strintr!   r   r&   r.   r3   r   r   r   r   r      s     
r   c                   @   f   e Zd ZdZddededdfddZd	ed
eddfddZdedededdfddZdefddZ	dS )initialize_config_modulea7  
    Initializes Hydra and add the config_module to the config search path.
    The config module must be importable (an __init__.py must exist at its top level)
    :param config_module: absolute module name, for example "foo.bar.conf".
    :param job_name: the value for hydra.job.name (default is 'app')
    appconfig_moduler   r	   Nc                 C   >   ddl m} d}tdrt|t|d |||d| _d S )Nr   )r;   znhydra.experimental.initialize_config_module() is no longer experimental. Use hydra.initialize_config_module().r   r   )r=   r   )r   r;   r   r   r   r   r   )r   r=   r   real_initialize_config_moduler   r   r   r   r!   E      

z!initialize_config_module.__init__r"   r#   c                 O   r$   r
   r%   r'   r   r   r   r&   V   r(   z"initialize_config_module.__enter__r)   r*   r+   c                 C   r,   r
   r-   r/   r   r   r   r.   Y   r0   z!initialize_config_module.__exit__c                 C   r1   )Nz-hydra.experimental.initialize_config_module()r   r2   r   r   r   r3   \   r4   z!initialize_config_module.__repr__r<   
r5   r6   r7   __doc__r8   r!   r   r&   r.   r3   r   r   r   r   r;   =   s    r;   c                   @   r:   )initialize_config_diraV  
    Initializes Hydra and add an absolute config dir to the to the config search path.
    The config_dir is always a path on the file system and is must be an absolute path.
    Relative paths will result in an error.
    :param config_dir: absolute file system path
    :param job_name: the value for hydra.job.name (default is 'app')
    r<   
config_dirr   r	   Nc                 C   r>   )Nr   )rD   zhhydra.experimental.initialize_config_dir() is no longer experimental. Use hydra.initialize_config_dir().r   r   )rE   r   )r   rD   r   r   r   r   r   )r   rE   r   real_initialize_config_dirr   r   r   r   r!   i   r@   zinitialize_config_dir.__init__r"   r#   c                 O   r$   r
   r%   r'   r   r   r   r&   z   r(   zinitialize_config_dir.__enter__r)   r*   r+   c                 C   r,   r
   r-   r/   r   r   r   r.   }   r0   zinitialize_config_dir.__exit__c                 C   r1   )Nz*hydra.experimental.initialize_config_dir()r   r2   r   r   r   r3      r4   zinitialize_config_dir.__repr__rA   rB   r   r   r   r   rD   `   s    rD   )r   typingr   r   r   r   #hydra._internal.deprecation_warningr   hydra.core.global_hydrar   hydra.core.singletonr   hydra.initializer   r   r   r   r;   rD   r   r   r   r   <module>   s   ##