o
    qoiG                     @   s  U d dl Z d dlmZmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ eG d
d dZeG dd dZeG dd deZeddG dd deZe dZe	e ed< eddG dd deZeG dd dZ dS )    N)	dataclassfield)dedent)ListOptionalPatternUnion)AnyNode
DictConfig	OmegaConf)InterpolationResolutionError)version)deprecation_warning)ConfigCompositionExceptionc                   @   s   e Zd ZU dZee ed< dZee ed< dZee ed< dZ	e
ed< edddZe
ed< edddZee ed	< d
efddZdS )ResultDefaultNconfig_pathparentpackageFis_selfdefaultcompareprimaryoverride_keyreturnc           	      C   s   g }d}|D ]}t | |}|d ur|| d| d qg }ddg}|D ]}t | |}|r6|| d q%d||  }t| j d| d	S )
N)r   r   r   z=""r   r   =True,())getattrappendjointype__name__)	selfattrs
attr_namesattrvalueflags
flag_namesflagret r.   N/home/ubuntu/.local/lib/python3.10/site-packages/hydra/core/default_element.py__repr__   s    

zResultDefault.__repr__)r$   
__module____qualname__r   r   str__annotations__r   r   r   boolr   r   r   r0   r.   r.   r.   r/   r      s   
 r   c                   @   s\  e Zd ZU dZee ed< eddddZee ed< eddddZ	ee ed< edddZ
ee ed< edddZeed	< d
efddZdee dee d
dfddZd
efddZd
efddZd
efddZd
efddZdFded
efddZd
efddZd
ee fddZd
ee fdd Zd
ee fd!d"Zd
ee fd#d$Zd
efd%d&Zd
efd'd(Zdee d
dfd)d*Zd
ee fd+d,ZdFded
ee fd-d.Zdee dee d/ee d
efd0d1Zd
efd2d3Z d
efd4d5Z!d
efd6d7Z"d8e#d
dfd9d:Z$d8e#d;ee d
efd<d=Z%d
efd>d?Z&d
efd@dAZ'd
efdBdCZ(d
efdDdEZ)dS )GInputDefaultNr   Fr   r   reprparent_base_dirparent_packager   package_headerr   r   c                 C      t  NNotImplementedErrorr%   r.   r.   r/   r   4      zInputDefault.is_selfc                 C   s~   | j d u s| j |ksJ | jd u s| j|ksJ || _|| _ | jd ur;d| jv r=| j}|d|  }d| | _d S d S d S )N_group_	_global_.)r:   r9   r   replaceget_default_package)r%   r9   r:   pkgresolvedr.   r.   r/   update_parent7   s   

zInputDefault.update_parentc                 C   r<   r=   r>   r@   r.   r.   r/   is_optionalE   rA   zInputDefault.is_optionalc                 C   r<   r=   r>   r@   r.   r.   r/   get_group_pathH   rA   zInputDefault.get_group_pathc                 C   r<   r=   r>   r@   r.   r.   r/   get_config_pathK   rA   zInputDefault.get_config_pathc                 C   s   |   ddS )N/.)rJ   rD   r@   r.   r.   r/   rE   N   s   z InputDefault.get_default_packageTdefault_to_package_headerc                 C   r<   )zz
        :param default_to_package_header: if package is not present, fallback to package header
        :return:
        r>   r%   rN   r.   r.   r/   get_final_packageQ      zInputDefault.get_final_packagec                 C   r<   r=   r>   r@   r.   r.   r/   _relative_group_pathX   rA   z!InputDefault._relative_group_pathc                 C   r<   r=   r>   r@   r.   r.   r/   get_name[   rA   zInputDefault.get_namec                 C   r<   r=   r>   r@   r.   r.   r/   _get_attributes^   rA   zInputDefault._get_attributesc                 C   r<   r=   r>   r@   r.   r.   r/   
_get_flagsa   rA   zInputDefault._get_flagsc                 C   $   | j d }|d u st|tsJ |S )Nr:   __dict__
isinstancer3   r%   r-   r.   r.   r/   _get_parent_packaged      
z InputDefault._get_parent_packagec                 C      dS NFr.   r@   r.   r.   r/   
is_virtuali      zInputDefault.is_virtualc                 C   s   d| j v rt| j d S dS )NdeletedF)rX   r5   r@   r.   r.   r/   
is_deletedl   s   
zInputDefault.is_deletedc              	   C   s   | j d d u s	J |d u rd S tds9d|v sd|v r3|  }d}ttd| d| d| d	d
 |dkr9d S |dkrN|dsN|dkrId}nd| }tds[|d|  }|| j d< d S )Nr;   1.2rB   _name_zGhttps://hydra.cc/docs/1.2/upgrades/1.0_to_1.1/changes_to_package_headerz                        In 'z=': Usage of deprecated keyword in package header '# @package z'.
                        See z for more informationmessage_global_rC    )	rX   r   base_at_leastrK   r   r   
startswithrD   rE   )r%   r;   pathurlr.   r.   r/   set_package_headerr   s:   


zInputDefault.set_package_headerc                 C   rV   )Nr;   rW   rZ   r.   r.   r/   get_package_header   r\   zInputDefault.get_package_headerc                 C   sB   | j d d u r|r| j d }n| j d }|d u st|tsJ |S )Nr   r;   rW   )r%   rN   r-   r.   r.   r/   get_package   s
   
zInputDefault.get_packagenamec                 C   s   |d usJ |d u r|   dd}t|tr&tds&d|v r&|d|}|dkr-|}n|dkr4|}n| d| }|d}|dkrF|S ||td d d  S )	NrL   rM   rc   rd   rh   rg      )rR   rD   rY   r3   r   ri   rfindlen)r%   r:   r   rp   r-   lgir.   r.   r/   _get_final_package   s    


zInputDefault._get_final_packagec           
      C   s   g }|   }|D ]#}t| |}|d ur+t|trd| d}n|}|| d|  qg }|  }|D ]}t| |}|rE|| d q4d| }	t|dkr\|	 dd| }	t| j	 d|	 dS )Nr   =r   r   r   r   r   )
rT   r    rY   r3   r!   rU   r"   rt   r#   r$   )
r%   r&   r'   r(   r)   svaluer*   r+   r,   r-   r.   r.   r/   r0      s*   


zInputDefault.__repr__c                 C   r<   r=   r>   r@   r.   r.   r/   is_interpolation   rA   zInputDefault.is_interpolationc                 C   r<   )zJ
        True if the name of the config is '???'
        :return:
        r>   r@   r.   r.   r/   
is_missing   rQ   zInputDefault.is_missingknown_choicesc                 C   r<   r=   r>   r%   r{   r.   r.   r/   resolve_interpolation   rA   z"InputDefault.resolve_interpolationvalc                 C   s   t d|i}|| z|d }t|tsJ |W S  tyK   dd | D }t|dkrAd|}d| d| }t	|d| d}t	|w )	N_dummy_c                 S   s"   g | ]}|d krt |tr|qS )defaults)rY   r3   ).0xr.   r.   r/   
<listcomp>   s
    z<InputDefault._resolve_interpolation_impl.<locals>.<listcomp>r   z, zError resolving interpolation 'z ', possible interpolation keys: ')
r   create_set_parentrY   r3   r   keysrt   r"   r   )r%   r{   r~   noder-   optionsoptions_strmsgr.   r.   r/   _resolve_interpolation_impl   s"   

z(InputDefault._resolve_interpolation_implc                 C   sB   |   }| jdd}|  }||kr|dkrd}| d| }|S )NFrN   rh   rg   @)rE   rP   rJ   )r%   default_pkg	final_pkgkeyr.   r.   r/   get_override_key   s   zInputDefault.get_override_keyc                 C   r<   r=   r>   r@   r.   r.   r/   get_relative_override_key  rA   z&InputDefault.get_relative_override_keyc                 C   r<   r=   r>   r@   r.   r.   r/   is_override  rA   zInputDefault.is_overridec                 C   r<   r=   r>   r@   r.   r.   r/   is_external_append  rA   zInputDefault.is_external_appendT)*r$   r1   r2   r   r   r3   r4   r   r9   r:   r;   r   r5   r   rH   rI   rJ   rK   rE   rP   rR   rS   r   rT   rU   r[   r_   rb   rm   rn   ro   rv   r0   ry   rz   r
   r}   r   r   r   r   r   r.   r.   r.   r/   r6   ,   sj   
 
#
 

r6   c                   @   s   e Zd ZdefddZdefddZdefddZdefdd	Zdefd
dZ	d$dedefddZ
defddZdefddZdefddZdee fddZdee fddZdefddZdeddfddZdefd d!Zdefd"d#ZdS )%VirtualRootr   c                 C   r]   )NTr.   r@   r.   r.   r/   r_     r`   zVirtualRoot.is_virtualc                 C   r]   r^   r.   r@   r.   r.   r/   r     r`   zVirtualRoot.is_selfc                 C   r<   r=   r>   r@   r.   r.   r/   rI     rA   zVirtualRoot.is_optionalc                 C   r<   r=   r>   r@   r.   r.   r/   rJ     rA   zVirtualRoot.get_group_pathc                 C   r]   )Nz<root>r.   r@   r.   r.   r/   rK      r`   zVirtualRoot.get_config_pathTrN   c                 C   r<   r=   r>   rO   r.   r.   r/   rP   #  rA   zVirtualRoot.get_final_packagec                 C   r<   r=   r>   r@   r.   r.   r/   rR   &  rA   z VirtualRoot._relative_group_pathc                 C   r<   r=   r>   r@   r.   r.   r/   rS   )  rA   zVirtualRoot.get_namec                 C   r]   r^   r.   r@   r.   r.   r/   rz   ,  r`   zVirtualRoot.is_missingc                 C   r<   r=   r>   r@   r.   r.   r/   rT   /  rA   zVirtualRoot._get_attributesc                 C   r<   r=   r>   r@   r.   r.   r/   rU   2  rA   zVirtualRoot._get_flagsc                 C   r]   )NzVirtualRoot()r.   r@   r.   r.   r/   r0   5  r`   zVirtualRoot.__repr__r{   Nc                 C   r<   r=   r>   r|   r.   r.   r/   r}   8  rA   z!VirtualRoot.resolve_interpolationc                 C   r]   r^   r.   r@   r.   r.   r/   r   ;  r`   zVirtualRoot.is_overridec                 C   r]   r^   r.   r@   r.   r.   r/   r   >  r`   zVirtualRoot.is_external_appendr   )r$   r1   r2   r5   r_   r   rI   r3   rJ   rK   rP   rR   rS   rz   r   rT   rU   r0   r
   r}   r   r   r.   r.   r.   r/   r     s     r   F)r8   c                   @   s  e Zd ZU dZee ed< dZeed< dZ	ee ed< d(ddZ
defd	d
ZdefddZdefddZdee fddZdefddZd)dedefddZdefddZdee fddZdee fddZdefddZdeddfd d!Zdefd"d#Zdefd$d%Zdefd&d'ZdS )*ConfigDefaultNrk   Foptionalra   r   c                 C   s2   |   r| jd urtd| jdkrd| _d S d S )Nz_self_@PACKAGE is not supported_here_rh   )r   r   
ValueErrorr@   r.   r.   r/   __post_init__H  s
   

zConfigDefault.__post_init__c                 C   
   | j dkS N_self_)rk   r@   r.   r.   r/   r   N     
zConfigDefault.is_selfc                 C      | j S r=   r   r@   r.   r.   r/   rI   Q  rA   zConfigDefault.is_optionalc                 C   s   | j d usJ | jd usJ | jdr| jdd  }d}n| j}d}|d}|dkr/d}n|d| }|sN| j dkr>|S |dkrF| j  S | j  d| S |S )NrL   rr   TFrq   rh   r   )r9   rk   rj   rs   )r%   rk   absoluteidxgroupr.   r.   r/   rJ   T  s$   

zConfigDefault.get_group_pathc                 C   s:   | j d usJ | j d}|dkr| j S | j |d d  S )NrL   rq   rr   )rk   rs   )r%   r   r.   r.   r/   rS   p  s
   zConfigDefault.get_namec                 C   sl   | j d usJ | jd usJ | jdr| jdd  }d}n| j}d}|s4| j dkr,|S | j  d| S |S NrL   rr   TFrh   )r9   rk   rj   )r%   rk   r   r.   r.   r/   rK   x  s   
zConfigDefault.get_config_pathTrN   c                 C   s   |  | j| ||  S r=   )rv   r:   ro   rS   rO   r.   r.   r/   rP     s
   zConfigDefault.get_final_packagec                 C   sR   | j d usJ | j dr| j dd  }n| j }|d}|dkr#dS |d| S )NrL   rr   rq   rh   r   )rk   rj   rs   )r%   rk   r   r.   r.   r/   rR     s   
z"ConfigDefault._relative_group_pathc                 C      g dS )N)rk   r   ra   r.   r@   r.   r.   r/   rT        zConfigDefault._get_attributesc                 C   s   dgS )Nr   r.   r@   r.   r.   r/   rU     rA   zConfigDefault._get_flagsc                 C   s   |   }t|}| S r=   )rK   r	   _is_interpolation)r%   rk   r   r.   r.   r/   ry     s   zConfigDefault.is_interpolationr{   c                 C   s   |   }| ||| _d S r=   )rK   r   rk   )r%   r{   rk   r.   r.   r/   r}     s   z#ConfigDefault.resolve_interpolationc                 C   s   |   dkS )N???)rS   r@   r.   r.   r/   rz        zConfigDefault.is_missingc                 C   r]   r^   r.   r@   r.   r.   r/   r     r`   zConfigDefault.is_overridec                 C   r]   r^   r.   r@   r.   r.   r/   r     r`   z ConfigDefault.is_external_appendr   Nr   )r$   r1   r2   rk   r   r3   r4   r   r5   ra   r   r   rI   rJ   rS   rK   rP   rR   r   rT   rU   ry   r
   r}   rz   r   r   r.   r.   r.   r/   r   B  s&   
 
r   z\${defaults\.\d\._legacy_interpolation_patternc                   @   s  e Zd ZU dZee ed< dZeeee	e f  ed< dZ
eed< dZeed< dZee ed< eddddZeed	< eddddZeed
< d5ddZdefddZdefddZdefddZdefddZdefddZdefddZdefddZdee fddZde	e fddZd6d!edefd"d#Zdefd$d%Zde	e fd&d'Zde	e fd(d)Zdefd*d+Zd,e ddfd-d.Z!defd/d0Z"defd1d2Z#defd3d4Z$dS )7GroupDefaultNr   r)   Fr   overridera   r7   config_name_overriddenexternal_appendr   c                 C   s0   | j d ur
| j dksJ | jdkrd| _d S d S )Nrh   r   )r   r   r@   r.   r.   r/   r     s   

zGroupDefault.__post_init__c                 C   r   r   )r)   r@   r.   r.   r/   r     r   zGroupDefault.is_selfc                 C   r   r=   r   r@   r.   r.   r/   rI     rA   zGroupDefault.is_optionalc                 C   r   r=   )r   r@   r.   r.   r/   r     rA   zGroupDefault.is_overridec                 C   sh   | j d usJ | jd usJ | jdr| jdd  }d}n| j}d}| j dks*|r,|S | j  d| S r   )r9   r   rj   )r%   r   r   r.   r.   r/   rJ     s   zGroupDefault.get_group_pathc                 C   s&   |   }|dks
J | d|   S )Nrh   rL   )rJ   rS   )r%   
group_pathr.   r.   r/   rK     s   zGroupDefault.get_config_pathc                 C   s   | j d u p
t| j tS r=   r)   rY   r3   r@   r.   r.   r/   is_name  s   zGroupDefault.is_namec                 C   s   t | jtS r=   rY   r)   listr@   r.   r.   r/   
is_options  r   zGroupDefault.is_optionsc                 C   s    | j d u st| j tsJ | j S r=   r   r@   r.   r.   r/   rS     s   zGroupDefault.get_namec                 C   s   t | jtsJ | jS r=   r   r@   r.   r.   r/   get_options  s   zGroupDefault.get_optionsTrN   c                 C   s.   |   r|  nd }| |  | j|d|S )Nr   )r   rS   rv   r[   ro   )r%   rN   rp   r.   r.   r/   rP     s   
zGroupDefault.get_final_packagec                 C   s.   | j d usJ | j dr| j dd  S | j S )NrL   rr   )r   rj   r@   r.   r.   r/   rR     s   z!GroupDefault._relative_group_pathc                 C   r   )N)r   r)   r   ra   r.   r@   r.   r.   r/   rT   
  r   zGroupDefault._get_attributesc                 C   s   ddgS )Nr   r   r.   r@   r.   r.   r/   rU     r   zGroupDefault._get_flagsc                 C   s2   |   sdS |  }t|trt|}| S dS )z9
        True if config_name is an interpolation
        F)r   rS   rY   r3   r	   r   )r%   rp   r   r.   r.   r/   ry     s   
zGroupDefault.is_interpolationr{   c                 C   sn   |   }|d ur5tt|d ur,td|   d| d}tds(t|d nt	|| 
||| _d S d S )Nz
Defaults list element 'rw   z' is using a deprecated interpolation form.
See http://hydra.cc/docs/1.1/upgrades/1.0_to_1.1/defaults_list_interpolation for migration information.rc   re   )rS   rematchr   r   r   r   ri   r   r   r   r)   )r%   r{   rp   r   r.   r.   r/   r}     s"   
z"GroupDefault.resolve_interpolationc                 C   s   |   r
|  dkS dS )Nr   F)r   rS   r@   r.   r.   r/   rz   0  s   zGroupDefault.is_missingc                 C   sF   | j d usJ |  }| j }||  kr!| jd ur!| d| j }|S )Nr   )r   rE   ro   r   )r%   r   r   r.   r.   r/   r   6  s   z&GroupDefault.get_relative_override_keyc                 C   r   r=   )r   r@   r.   r.   r/   r   >  rA   zGroupDefault.is_external_appendr   r   )%r$   r1   r2   r   r   r3   r4   r)   r   r   r   r5   r   ra   r   r   r   r   r   rI   r   rJ   rK   r   r   rS   r   rP   rR   rT   rU   ry   r
   r}   rz   r   r   r.   r.   r.   r/   r     s6   
 
r   c                   @   s^   e Zd ZU eed< dZeeed ef   ed< e	ddddZ
ed  ed< dee fdd	ZdS )
DefaultsTreeNoder   NchildrenF)r   r8   r   r   r   c                 C   s   | j d u rd S | j jS r=   )r   r   r@   r.   r.   r/   parent_nodeM  s   
zDefaultsTreeNode.parent_node)r$   r1   r2   r6   r4   r   r   r   r   r   r   r   r.   r.   r.   r/   r   B  s   
 r   )!r   dataclassesr   r   textwrapr   typingr   r   r   r   	omegaconfr	   r
   r   omegaconf.errorsr   hydrar   #hydra._internal.deprecation_warningr   hydra.errorsr   r   r6   r   r   compiler   r3   r4   r   r   r.   r.   r.   r/   <module>   s0   
 f/t 