
    Ng4                        U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlZddlmZmZmZmZmZmZ ddl m!Z!m"Z" 	 d dl#Z#n# e$$ r dZ#Y nw xY w	 d dl%Z%n# e$$ r dZ%Y nw xY w e&d          Z'ed         e(d	<   e)e*e+e,e-e'fZ.eee         d
f         e(d<    ej/        d          Z0 ej/        d          Z1g dZ2 G d d          Z3 e3d          Z4ee(d<    G d dej5                  Z6dee6         fdZ7de,de+fdZ8defdZ9de,de&fdZ:dede+fdZ;dedee+ef         fdZ<dndedeee)e,f                  de+fd Z=dee         d!e,dee         fd"Z>ded#edeee,ef                  fd$Z?deded%         fd&Z@dnded'ee+         dee,ef         fd(ZAdeded)         fd*ZB	 dnded'ee+         dee,ef         fd+ZCdede+fd,ZDdede+fd-ZEdede+fd.ZFdede+fd/ZGde&de+fd0ZHd1edee         fd2ZIdede+fd3ZJdedee,         fd4ZK	 dnded'ee+         dee,ef         fd5ZL G d6 d7e          ZMd8ede+fd9ZNd8ede+fd:ZO	 dod8ed=e+d>e+de+fd?ZP	 dpd8ed@e+deMfdAZQdpdBed@e+de+fdCZRd8e,d@e+de+fdDZSd8ede+fdEZTdFe,de+fdGZUdFe,de+fdHZVdede+fdIZWdede+fdJZXdede+fdKZYdede+fdLZZdede+fdMZ[dede+fdNZ\dede+fdOZ]dede+fdPZ^dede+fdQZ_dReee                  defdSZ`dRee         deed
f         fdTZadRedeeef         fdUZbdede+fdVZcdede+fdWZddede+fdXZed8edefdYZfdndededeee                  fdZZgd[ehd\ehddfd]Zi	 dnd^eded8ed_e,d\ehd`eddfdaZjdpdbedce+de,fddZkdndeedfeee,e+f                  defdgZldede+fdhZmdede+fdiZndede+fdjZode,dee,         fdkZpe	dndledee         fdm            ZqdS )q    N)contextmanager)Enum)dedent)	AnyDictIteratorListOptionalTupleTypeUnionget_type_hints   )ConfigIndexErrorConfigTypeErrorConfigValueErrorGrammarParseErrorOmegaConfBaseExceptionValidationError)SIMPLE_INTERPOLATION_PATTERNparseNoneType.BUILTIN_VALUE_TYPESz(\.)*[^.[]*z\.([^.[]*)|\[(.*?)\])yYyesYesYESnNnoNoNOtrueTrueTRUEfalseFalseFALSEonOnONoffOffOFFc                   &    e Zd ZdefdZdefdZdS )Markerdescc                     || _         d S Nr2   )selfr2   s     L/var/www/html/ai-engine/env/lib/python3.11/site-packages/omegaconf/_utils.py__init__zMarker.__init__e   s    			    returnc                     | j         S r4   r5   )r6   s    r7   __repr__zMarker.__repr__h   s
    yr9   N)__name__
__module____qualname__strr8   r<    r9   r7   r1   r1   d   sJ        S    #      r9   r1   _DEFAULT_MARKER_c                   J    e Zd ZdZedej        dedej        fd            Z	dS )OmegaConfDumperFdumperdatar:   c                     t          |          pt          |          pt          |          }|                     t          j        j        j        ||rdnd           S )N')style)yaml_is_boolis_intis_floatrepresent_scalaryamlresolverBaseResolverDEFAULT_SCALAR_TAG)rE   rF   with_quotess      r7   str_representerzOmegaConfDumper.str_representers   s\    "4((JF4LLJHTNN&&M&9%/334 ' 
 
 	
r9   N)
r=   r>   r?   str_representer_addedstaticmethodrN   Dumperr@   
ScalarNoderS   rA   r9   r7   rD   rD   p   sQ        !
 
3 
4? 
 
 
 \
 
 
r9   rD   r:   c                      t           j        s6t                               t          t           j                   dt           _        t           S )NT)rD   rT   add_representerr@   rS   rA   r9   r7   get_omega_conf_dumperrZ   }   s4    0 5''_-LMMM04-r9   bc                     | t           v S r4   )YAML_BOOL_TYPES)r[   s    r7   rJ   rJ      s    r9   c                      G d dt           j                  } | }|                    dt          j        dt          j                  t          d                     d |j                                        D             |_        |	                    dd            |	                    d	d
            |	                    dd            |S )Nc                   8     e Zd Zddej        dedef fdZ xZS )(get_yaml_loader.<locals>.OmegaConfLoaderFnodedeepr:   c                 n   t                      }|j        D ]|\  }}|j        t          j        j        j        k    r%|j        |v r4t          j                            d|j	        d|j         |j	                  |
                    |j                   }t                                          ||          S )Nzwhile constructing a mappingzfound duplicate key )rb   )setvaluetagrN   rO   rP   rQ   constructorConstructorError
start_markaddsuperconstruct_mapping)r6   ra   rb   keyskey_node
value_node	__class__s         r7   rl   z:get_yaml_loader.<locals>.OmegaConfLoader.construct_mapping   s    55D(,
 
) 
)$*<4=#=#PPP>T))*;;6?x~?? +	   ((((77,,T,===r9   F)	r=   r>   r?   rN   Nodeboolr   rl   __classcell__)rp   s   @r7   OmegaConfLoaderr`      sY        	> 	>$) 	>4 	>C 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>r9   ru   ztag:yaml.org,2002:floata  ^(?:
         [-+]?[0-9]+(?:_[0-9]+)*\.[0-9_]*(?:[eE][-+]?[0-9]+)?
        |[-+]?[0-9]+(?:_[0-9]+)*(?:[eE][-+]?[0-9]+)
        |\.[0-9]+(?:_[0-9]+)*(?:[eE][-+][0-9]+)?
        |[-+]?[0-9]+(?:_[0-9]+)*(?::[0-5]?[0-9])+\.[0-9_]*
        |[-+]?\.(?:inf|Inf|INF)
        |\.(?:nan|NaN|NAN))$z-+0123456789.c                 .    i | ]\  }}|d  |D             S )c                 (    g | ]\  }}|d k    ||fS )ztag:yaml.org,2002:timestamprA   ).0rf   regexps      r7   
<listcomp>z.get_yaml_loader.<locals>.<dictcomp>.<listcomp>   s6     
 
 
V333 &M333r9   rA   )rx   key	resolverss      r7   
<dictcomp>z#get_yaml_loader.<locals>.<dictcomp>   sJ     & & & C 	 
 
(
 
 
& & &r9   z2tag:yaml.org,2002:python/object/apply:pathlib.Pathc                 D    t          j        |                     |           S r4   )pathlibPathconstruct_sequenceloaderra   s     r7   <lambda>z!get_yaml_loader.<locals>.<lambda>   s    W\6+D+DT+J+JK r9   z7tag:yaml.org,2002:python/object/apply:pathlib.PosixPathc                 D    t          j        |                     |           S r4   )r   	PosixPathr   r   s     r7   r   z!get_yaml_loader.<locals>.<lambda>   s    W.0I0I$0O0OP r9   z9tag:yaml.org,2002:python/object/apply:pathlib.WindowsPathc                 D    t          j        |                     |           S r4   )r   WindowsPathr   r   s     r7   r   z!get_yaml_loader.<locals>.<lambda>   s    W0&2K2KD2Q2QR r9   )
rN   
SafeLoaderadd_implicit_resolverrecompileXlistyaml_implicit_resolversitemsadd_constructor)ru   r   s     r7   get_yaml_loaderr      s   > > > > >$/ > > >  F
  !

! D		
 		
 	_  & & %<BBDD& & &F" <KK   APP   CRR  
 Mr9   pathc                     ddl m} |                     d          \  }}} ||          }	 t          ||          }n## t          $ r t          d| d|           w xY w|S )Nr   )import_module.zClass z is not in module )	importlibr   
rpartitiongetattrAttributeErrorImportError)r   r   module_path_
class_namemodklasss          r7   
_get_classr      s    ''''''!%!5!5KJ
-
$
$CPc:.. P P PN:NNNNOOOPLs	   =  Atype_c                     t           j        dk    rt          | t          j                  rdS t          | dd           t          u S )N)   
   T
__origin__)sysversion_info
isinstancetypes	UnionTyper   r   r   s    r7   is_union_annotationr      s@    
7""eU_-- 	45,--66r9   c                 R   t          |           ro| j        }t          |v rd}t          d |D                       }nd}t	          |          dk    r
||d         fS t	          |          dk    r|t
          |         fS J | t          u r	dt          fS | dt          fv r	dt          fS d| fS )zGCheck whether `type_` is equivalent to `typing.Optional[T]` for some T.Tc              3   ,   K   | ]}|t           u|V  d S r4   )r   )rx   as     r7   	<genexpr>z$_resolve_optional.<locals>.<genexpr>   s,      >>qAX,=,=,=,=,=,=>>r9   Fr   r      N)r   __args__r   tuplelenr   r   )r   argsoptionals      r7   _resolve_optionalr      s    5!! ~tH>>D>>>>>DDHt99>>T!W$$YY!^^U4[((L||Syx   X~%<r9   objr{   c                     ddl m}m} |'t          | |          sJ |                     |          } t          | |          sJ |                                 S )z:Check `obj` metadata to see if the given node is optional.r   	Containerrr   )baser   rr   r   	_get_node_is_optional)r   r{   r   rr   s       r7   r   r      sn    %%%%%%%%
#y)))))mmC  c4     r9   modulec                 T   dd l }t          |d          r|j        n|j        }t	          |           |u rt           d| j                   S t          |           rGt          |           \  }}|t          |          }|t          |          }t          ||f         S t          |           r/t          |           }|t          |          }t          |         S t          |           r7t          |           }t!          fd|D                       }t"          |         S | S )Nr   
ForwardRefr   r   c              3   :   K   | ]}t          |           V  dS )r   N)_resolve_forward)rx   itr   s     r7   r   z#_resolve_forward.<locals>.<genexpr>  s1      JJ(F;;;JJJJJJr9   )typinghasattrr   _ForwardReftyper   __forward_arg__is_dict_annotationget_dict_key_value_typesr   r   is_list_annotationget_list_element_typer	   is_tuple_annotationget_tuple_item_typesr   r   )r   r   r   forwardktvtetitss    `      r7   r   r      sC   MMM#*6<#@#@XffFXGE{{gV==e&;==>>>e$$ 	 -e44FB~%b888~%b888B<e$$ 	&u--B~%b8888Ou%% 	&u--CJJJJcJJJJJC:r9   parentc                 ,   ddl m} t          | t                    }|r| nt          |           }t	          |          }|r+t          j        d|j         ddz   dz   t          d           |rd	S |ri }t          |          \  }}| 
                                D ]x\  }	}
t          |          \  }}t          || j                  }	  ||||	|
|
          ||	<   A# t          $ r+}t          d	|	|
|t!          |                     Y d	}~qd	}~ww xY w|S d	S )zWCheck if obj is an instance of a subclass of Dict. If so, extract the Dict keys/values.r   )_maybe_wrapzClass `z` subclasses `Dict`.z? Subclassing `Dict` in Structured Config classes is deprecated,z) see github.com/omry/omegaconf/issues/663	   )
stacklevelNref_typeis_optionalr{   re   r   ra   r{   re   causemsg)omegaconf.omegaconfr   r   r   is_dict_subclasswarningswarnr=   UserWarningr   r   r   r   r>   r   format_and_raiser@   )r   r   r   is_typeobj_typesubclasses_dictdict_subclass_datakey_typeelement_typenamere   r   r   exs                 r7   extract_dict_subclass_datar     s   //////d##G,ss499H&x00O 
=h'===OP9: 	
 	
 	
 	
  t	 !9(!C!C,99;; 	 	KD%!2<!@!@K$UCN;;E+6;" +!, , ,"4(( #    4uBCGG         "!ts   C
D$!D

Dzattr.Attribute[Any]c                     t          | t                    }|r| nt          |           }t          j        |                                          }d |D             S )Nc                 J    g | ] }|j                             d           du|!S omegaconf_ignoreTmetadatagetrx   fs     r7   rz   z)get_attr_class_fields.<locals>.<listcomp>A  1    PPP!0B!C!C4!O!OA!O!O!Or9   )r   r   attrfields_dictvalues)r   r   r   fieldss       r7   get_attr_class_fieldsr   =  sU    d##G,ss499Hh''..00FPPvPPPPr9   allow_objectsc                    ddl m}m} |d|ini }ddlm} i }t          | t                    }|r| nt          |           }|                    i |          }	||	j        _	        t          |          }
t          |           D ]3}|j        }t          |
|                   \  }}t          || j                  }|st!          | |          }n|j        }|t$          j        k    r|}t)          |          rRt+          |          sCt-          d| dt/          |                     }t1          d d ||t3          |                     	  ||||||		          ||<   n?# t4          t6          f$ r+}t1          |	|||t3          |                     Y d }~nd }~ww xY w||                             d            5t;          | |	
          }||                    |           |S )Nr   )	OmegaConfr   r   )MISSINGflags(Unions of containers are not supported:
: r   r   r   r   )r   r  r   	omegaconfr  r   r   create	_metadataobject_typer   r   r   r   r   r>   r   defaultr   NOTHINGr   is_supported_union_annotationr   type_strr   r@   r   r   _set_parentr   update)r   r   r  r   r  r  dr   r   dummy_parentresolved_hintsattribr   r   r   re   er   r   s                      r7   get_attr_datar  D  sb   ::::::::0=0I_m,,rE!!!!!!
Ad##G,ss499H##Be#44L)1L&#H--N',, " "{.~d/CDDU 77 	 C&&EENE$$u%% 	T.KE.R.R 	T UDUUHUOOUU A $DQCPQFFSSSS	!k'#  AdGG  !23 	 	 	!t5B        	 	
$D!!!!3LQQQ%	#$$$Hs   EF,!FFzdataclasses.Field[Any]c                 B    t          j        |           }d |D             S )Nc                 J    g | ] }|j                             d           du|!S r   r   r   s     r7   rz   z(get_dataclass_fields.<locals>.<listcomp>w  r   r9   )dataclassesr   r   r   s     r7   get_dataclass_fieldsr  u  s&    $$FPPvPPPPr9   c                 $   ddl m}m}m} |d|ini }i }t	          | t
                    }t          |           }|                    i |          }	||	j        _	        t          |          }
t          |           D ]l}|j        }t          |
|j                           \  }}t          || j                  }|j        t"          j        k    }|j        t"          j        k    }|st'          | |          }n#|r|j        }n|r|                                }n|}t)          |          rRt+          |          sCt-          d| dt/          |                     }t1          d d ||t3          |                     	  ||||||	          ||<   n?# t4          t6          f$ r+}t1          |	|||t3          |                     Y d }~nd }~ww xY w||                             d            nt;          | |		          }||                    |           |S )
Nr   )r  r  r   r   r  r  r  r   r   r  )r   r  r  r   r   r   get_type_ofr
  r  r  r   r  r   r   r   r>   r  r  default_factoryr   r   r  r   r  r   r@   r   r   r  r   r  )r   r   r  r  r   r  r  r   r   r  r  fieldr   r   r   has_defaulthas_default_factoryre   r  r   r   s                        r7   get_dataclass_datar$  z  s    DCCCCCCCCC0=0I_m,,rE
Ad##G3H##Be#44L)1L&#H--N%c** "" ""z.~ej/IJJU 77m{'::#3{7JJ 	 C&&EE  $  --//u%% 	T.KE.R.R 	T UDUUHUOOUU A $DQCPQFFSSSS	!k'#  AdGG  !23 	 	 	!t5B        	 	
$D!!!!3LQQQ%	#$$$Hs   8FG!GGc                 h    ddl m} t          t          | |          rdS t          j        |           S Nr   rr   F)omegaconf.baserr   r  r   is_dataclassr   rr   s     r7   r)  r)    s?    ######jd33u#C(((r9   c                 h    ddl m} t          t          | |          rdS t          j        |           S r&  )r(  rr   r   r   hasr*  s     r7   is_attr_classr-    s:    ######|z#t,,|u8C==r9   c                 >    t          |           pt          |           S r4   )r-  r)  r   s    r7   is_structured_configr0    s    2c!2!22r9   c                     | j         j        S r4   )__dataclass_params__frozenr   s    r7   is_dataclass_frozenr4    s    %,,r9   c                 6    | j         t          j        j        k    S r4   )__setattr__r   _make_frozen_setattrsr   s    r7   is_attr_frozenr9    s     
 ;;;r9   class_or_objectc                     | }t          |t                    st          |           }t          |t                    sJ |S r4   )r   r   )r:  r   s     r7   r  r    sA    EeT"" &_%%eT"""""Lr9   c                     t          |           }t          |          rt          |          S t          |          rt	          |          S dS )NF)r  r)  r4  r-  r9  )r   r   s     r7   is_structured_config_frozenr=    sP    EE *"5)))U %e$$$5r9   c                     t          |           rt          |           }nCt          |           rt          |           }n$t	          dt          |           j                   d |D             S )NUnsupported type: c                 *    g | ]}|j         	|j        S rA   )initr   r   s     r7   rz   z:get_structured_config_init_field_names.<locals>.<listcomp>  s!    ---qaf-AF---r9   )r)  r  r-  r   
ValueErrorr   r=   r  s     r7   &get_structured_config_init_field_namesrC    sv    C D%c**	s		 D&s++Bd3ii.@BBCCC--F----r9   c                     t          |           rt          | |          S t          |           rt          | |          S t	          dt          |           j                   )N)r   r?  )r)  r$  r-  r  rB  r   r=   )r   r   s     r7   get_structured_config_datarE    sl     C D!#]CCCC	s		 DS>>>>Bd3ii.@BBCCCr9   c                       e Zd ZdZdZdZdS )	ValueKindr   r   r   N)r=   r>   r?   VALUEMANDATORY_MISSINGINTERPOLATIONrA   r9   r7   rG  rG    s        EMMMr9   rG  re   c                 t    ddl m} t          | |          r|                                 } t	          |           S )Nr   r'  )r	  rr   r   _value_is_missing_literal)re   rr   s     r7   _is_missing_valuerN    sA    % u%%%r9   c                 8    t          | t                    o| dk    S )Nz???)r   r@   re   s    r7   rM  rM    s    eS!!4eun4r9   FTresolvethrow_on_resolution_failurec                     ddl m} t          | |          s| d u S |r.|                     |          } |s| dS t          | |          sJ |                                 S )Nr   r'  )rR  F)r	  rr   r   _maybe_dereference_node_is_none)re   rQ  rR  rr   s       r7   rU  rU  	  s     eT"" } '--(C . 
 
 + 	u}5%&&&&&>>r9   strict_interpolation_validationc                     t          |           rt          j        S t          | |          rt          j        S t          j        S )aA  
    Determine the kind of a value
    Examples:
    VALUE: "10", "20", True
    MANDATORY_MISSING: "???"
    INTERPOLATION: "${foo.bar}", "${foo.${bar}}", "${foo:bar}", "[${foo}, ${bar}]",
                   "ftp://${host}/path", "${foo:${bar}, [true], {'baz': ${baz}}}"

    :param value: Input to classify.
    :param strict_interpolation_validation: If `True`, then when `value` is a string
        containing "${", it is parsed to validate the interpolation syntax. If `False`,
        this parsing step is skipped: this is more efficient, but will not detect errors.
    )rN  rG  rI  _is_interpolationrJ  rH  re   rV  s     r7   get_value_kindrZ    sA    "  +** ?@@ '&&?r9   vc                     ddl m} t          | |          r|                                 } t          | t                    rt          | |          rdS dS )Nr   r'  TF)r	  rr   r   rL  r@   _is_interpolation_string)r[  rV  rr   s      r7   rX  rX  7  si    !T HHJJ!S 6	*   t5r9   c                 \    d| v r'|r#t          j        |           t          |            dS dS )Nz${TF)r   matchr   rY  s     r7   r]  r]  D  s;     u}}* 	+1%88@et5r9   c                 n    t          |           p&t          |           t          j        t          j        fv S )z4Special values are None, MISSING, and interpolation.)rU  rZ  rG  rI  rJ  rP  s    r7   _is_specialra  U  s5    E?? nU33#8  r9   stc                 H    	 t          |            dS # t          $ r Y dS w xY wNTF)floatrB  rb  s    r7   rL   rL   ]  s9    b			t   uu    
!!c                 H    	 t          |            dS # t          $ r Y dS w xY wrd  )intrB  rf  s    r7   rK   rK   e  s9    Bt   uurg  c                 :    t          | t          t          f          S r4   )r   r   r   r/  s    r7   is_primitive_listrk  m  s    cD%=)))r9   c                 2    t          |           }|t          u S r4   )r  dict)r   ts     r7   is_primitive_dictro  q  s    CA9r9   c                 &   | t           t          fv rdS t          | dd           }t          j        dk     r4t          | d          o| j        t          k    }|t          u p
| t          u p|S t          | d          o| j        t           k    }|t           u p|S )NTr   r      r   __base__)rm  r   r   r   r   r   rs  )r   origin
typed_dicts      r7   r   r   v  s    ttUL$//F )##UJ//JENd4J
~<$<*<UJ//JENd4J
~++r9   c                     | t           t          fv rdS t          | dd           }t          j        dk     r|t          u p| t          u S |t           u S NTr   rq  )r   r	   r   r   r   r   rt  s     r7   r   r     sR    ttUL$//F
)##~.$.~r9   c                     | t           t          fv rdS t          | dd           }t          j        dk     r|t          u p| t          u S |t           u S rw  )r   r   r   r   r   rx  s     r7   r   r     sR    tUL$//F
)##0%5.0r9   c                 d    t          |           sdS | j        }t          d |D                       S )zLCurrently only primitive types are supported in Unions, e.g. Union[int, str]Fc              3   4   K   | ]}t          |          V  d S r4   )is_primitive_type_annotation)rx   args     r7   r   z0is_supported_union_annotation.<locals>.<genexpr>  s+      AAS+C00AAAAAAr9   )r   r   all)r   r   s     r7   r  r    s;    s## u<DAADAAAAAAr9   c                 ^    | d uo)t          | t                    ot          | t                    S r4   )r   r   
issubclassr   r   s    r7   r   r     s+    TE4!8!8TZt=T=TTr9   c                 \    t          |           pt          |           pt          |           S r4   )ro  r   r   r/  s    r7   is_dictr    s-    S!!U%7%<%<U@PQT@U@UUr9   c                 >    t          |           pt          |           S r4   )rk  ro  r/  s    r7   is_primitive_containerr    s    S!!;%6s%;%;;r9   r   c                 n    t          | dd           }| t          ur||d         r	|d         }nt          }|S )Nr   r   )r   r	   r   )r   r   r   s      r7   r   r     sB    8Z..Dt 0T!W 0Awr9   c                 p    t          | dd           }|dv r	t          df}t          |t                    sJ |S )Nr   )NrA   .)r   r   r   r   )r   r   s     r7   r   r     sB    8Z..DzSzdE"""""Kr9   c                 $   t          | dd           }|=t          | dd           }|*t          |          dk    rt          |d         dd           }| | t          k    rt          }t          }n!||d         }|d         }nt          }t          }||fS )Nr   __orig_bases__r   r   )r   r   r   r   )r   r   basesr   r   s        r7   r   r     s    8Z..D|"2D99Ua58Z66D 8t++AwH7LLHL\!!r9   c                     t          |           \  }} | t          u p;t          |           p,t          |           pt	          |           pt          |           S r4   )r   r   r|  r0  is_container_annotationr  )r   r   s     r7   is_valid_value_annotationr    sc     ''HAu 	0'..	0&&	0 #5))	0 )//r9   c                 R    ddl m} | d u p| t          u pt          | |j                  S )Nr   )DictKeyType)r	  r  r   r  r   )r   r  s     r7   _valid_dict_key_annotation_typer    s9    %%%%%%D=SESLSJuk>R,S,SSr9   c                 t    t          |           } t          | t          t          j        f          p| t
          v S r4   )r  r  r   r   r   r   r   s    r7   r|  r|    s1    EedGL122Re?R6RRr9   c                    ddl m}m} ddlm} t          | |          r|                                 S t          | |          r7|                                 }|t          |          st          |          r|S nUt          | |          rE|                                 }|t          |          st          |          r|S t          |          S | S )Nr   )r   	UnionNode)	ValueNode)
r   r   r  nodesr  r   rL  rM  rX  
_get_value)re   r   r  r  boxeds        r7   r  r    s    ********      %## %||~~	E9	%	% 	%=/66=:KE:R:R=L 	E9	%	% %=/66=:KE:R:R=Le$$$ Lr9   c                 "   ddl m}m} t          | |          r||                     |          } n|t          d          t          | |          r8| j        j        }|                                 r|t          urt          |         S |S t          S )Nr   r   z1Key must only be provided when obj is a container)r	  r   rr   r   r   rB  r  r   r   r   r
   )r   r{   r   rr   r   s        r7   get_type_hintr    s    ))))))))#y!! R?--$$C?PQQQ#t =) 	(#"5"5H%%O
r9   r   r   c                    dt           j        v rt           j        d         nd }t          j                    d u}|r|dk     p|dk    }|r|| _        nd | _        |                     t          j                    d                   )NOC_CAUSE01r   )osenvironr   gettrace	__cause__with_tracebackexc_info)r   r   env_var	debuggingfull_backtraces        r7   _raiser    s     )3bj(@(@bj$$dGd*I63$6KGsNN 


CLNN1-
.
..r9   ra   r   type_overridec                    ddl m} ddlm} t	          |t
                    r t	          |t                    rQ|j        rJ|}|6 |t          |                    }t          j
        |j                  |_        t          ||           d }	d }
| ||nd}d }d }d }n|+|                                 s|                     |d          }
	 |                     |          }n2# t           $ r%}dt#          |          j         d	| d
}Y d }~nd }~ww xY w|                    |           }t)          |          }	t+          |           }t)          |          }t-          j        |                              ||	|||t)          t#          |          d          t#          |          j                   }|d t2          fvrt5          d          }nt5          d          }t-          j        |          }|                    ||	||          }|t#          |          n|}|t8          k    rt:          }n|t<          k    rt>          } ||           }tA          |t                    rMd|_        ||_!        | |_"        |
|_#        ||_$        ||_%        ||_&        ||_'        |	|_(        ||_)        ||_*        t          ||           d S )Nr   r  r'   F)validate_access)r{   z<unresolvable due to r  >Tinclude_module_name)REF_TYPEOBJECT_TYPEKEYFULL_KEYrH  
VALUE_TYPEKEY_TYPEz            $MSG
                full_key: $FULL_KEY
                reference_type=$REF_TYPE
                object_type=$OBJECT_TYPEz]            $MSG
                full_key: $FULL_KEY
                object_type=$OBJECT_TYPE)template)r  r  MSGr  )+r	  r  r(  rr   r   AssertionErrorr   _initializedr@   copydeepcopy__dict__r  rU  r   _get_full_key	Exceptionr   r=   get_typer  r  stringTemplatesafe_substituter   r   
substitute	TypeErrorr   
IndexErrorr   r  r   parent_node
child_noder{   full_keyre   r  object_type_strr   ref_type_str)ra   r{   re   r   r   r  r  rr   r   r  r  r  r  r   r  excr  smessageexception_types                       r7   r   r      s)    $###########%(( %/00 U5G $s5zz**B-77BKr5 &*O "&J|/33r?4==???UCCJ	L))c)22HH 	L 	L 	L LtCyy/AKKSKKKHHHHHH	L
  ((..";// &&))
/#


.
.#DKKTBBBII&( /  C c{"",
 
 ,
 
 	***All?h   G %2$9T%[[[}N""(	:	%	%)	7	%	%B."899 '"$,&
2us   
C! !
D+DDrn  r  c                 :   t          |           \  }} | t          u rt          | j                  S | t          u rdS | du rdS t          | d          rt          | j                  }nt          | dd           t          | j                  }nat          | dd           t          | j	                  }n;t          |           }|
                    d          r|t          d          d          }t          | dd           }|/d	                    fd
| j        D                       }| d| d}n|}r_t          | d          rH| j        dk    r=| j        dk    r2| j        
                    d          st          | j                  dz   }nd}||z   }|rd| dS |S )Nr   .z...r=   _namer   ztyping.r   z, c                 2    g | ]}t          |           S )r  )r  )rx   rn  r  s     r7   rz   ztype_str.<locals>.<listcomp>  s'    VVVaXa-@AAAVVVr9   []r>   builtinsr   z
omegaconf.r   r  z	Optional[)r   r   r@   r=   r   r   r   r  r  r   
startswithr   joinr   r>   )rn  r  r   r   r   retmodule_prefixs    `     r7   r  r    s   &q))NKH}}1:CxxuCxxuq* 	*1:	GT	"	"	.17||	L$	'	'	3%%1vv??9%% 	*I(()D1j$''DyyVVVV1:VVV
 
  
"A|$$	
**((L++L99 )  --3MMMc! !3!!!!
r9   targetr  c                 2   ddl m} t          |           r6t          | t          t
          f          sJ |                    | |          } nKt          |           r|                    | |          } n$|	                    |           st          d          | S )Nr   r  r  z|Invalid input. Supports one of [dict,list,DictConfig,ListConfig,dataclass,dataclass instance,attr class,attr class instance])r	  r  r  r   r   rm  r
  r0  
structured	is_configrB  )r  r  r  s      r7   _ensure_containerr    s    ######f%% 	
&4,/////!!&!66	f	%	% 
%%fE%::  (( 
n
 
 	

 Mr9   c                 B    t          |           ot          |           duS )z
    Checks if a type is a generic list, for example:
    list returns False
    typing.List returns False
    typing.List[T] returns True

    :param type_: variable type
    :return: bool
    N)r   r   r   s    r7   is_generic_listr    s%     e$$Q)>u)E)ET)QQr9   c                 `    t          |           ot          t          |                     dk    S )z
    Checks if a type is a generic dict, for example:
    list returns False
    typing.List returns False
    typing.List[T] returns True

    :param type_: variable type
    :return: bool
    r   )r   r   r   r   s    r7   is_generic_dictr    s.     e$$Q-Ee-L-L)M)MPQ)QQr9   c                 >    t          |           pt          |           S r4   )r   r   r   s    r7   r  r    s    e$$A(:5(A(AAr9   c                    t                               |           }|J |                                d         }| d|                             d          }|t	          |           k    r|S | |         dk    r|d         s|                                 t                              | |d                   }|d |D             z  }|S )a&  
    Split a full key path into its individual components.

    This is similar to `key.split(".")` but also works with the getitem syntax:
        "a.b"       -> ["a", "b"]
        "a[b]"      -> ["a", "b"]
        ".a.b[c].d" -> ["", "a", "b", "c", "d"]
        "[a].b"     -> ["a", "b"]
    Nr   r   r   r  c                      g | ]\  }}|r|n|S rA   rA   )rx   dot_keybracket_keys      r7   rz   zsplit_key.<locals>.<listcomp>  s&    VVV7Kw'2ww{VVVr9   )KEY_PATH_HEADr_  spansplitr   popKEY_PATH_OTHERfindall)r{   first
first_stoptokensotherss        r7   	split_keyr    s     $$EaJ :$$S))F SXX
:#fRj 	

 ##C
$455F
 VVvVVVVFMr9   enter_resultc              #      K   | V  d S r4   rA   )r  s    r7   nullcontextr    s      
r9   r4   )FTrq   )rr  r  r   r   r  r   r   r   
contextlibr   enumr   textwrapr   r   r   r   r   r	   r
   r   r   r   r   rN   errorsr   r   r   r   r   r   grammar_parserr   r   r  r   r   r   r   __annotations__ri  re  rs   r@   bytesr   r   r  r  r]   r1   rB   rV   rD   rZ   rJ   r   r   r   r   r   r   r   r   r  r  r$  r)  r-  r0  r4  r9  r  r=  rC  rE  rG  rN  rM  rU  rZ  rX  r]  ra  rL   rK   rk  ro  r   r   r   r  r   r  r  r   r   r   r  r  r|  r  r  r  r  r   r  r  r  r  r  r  r  rA   r9   r7   <module>r     s    				  				  



   % % % % % %            
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                 @ ? ? ? ? ? ? ?   KKKKKKK   DDD tDzz$t* ! ! ! 		. U49c>*    
>**
 344  4        122 # 2 2 2

 

 

 

 

dk 

 

 

tO4     C  D        6 6 6 6 6r	S 	T 	 	 	 	7s 7t 7 7 7 7S U49%5    2 c sCx 9 T    DI s tCy    6'C ' '$sCx.9Q ' ' ' 'TQs Qt,A'B Q Q Q Q. .s .8D> .T#s(^ . . . .bQc Qd+C&D Q Q Q Q /32 2	2%d^2	#s(^2 2 2 2j)c )d ) ) ) )s t    3c 3d 3 3 3 3-s -t - - - -<$ <4 < < < < c    S T    . .S	 . . . . /3D D	D%d^D	#s(^D D D D       &S &T & & & &5s 5t 5 5 5 5 LP DH	   * 9> 15   4
 
 
t 
PT 
 
 
 
C $ SW    "s t         s t    *3 *4 * * * *3 4    
,c ,d , , , ,c d    s t    Bs Bt B B B BUC UD U U U UV V V V V V< < < < < <HT#Y$7 C    49 sCx    "s "uS#X " " " ".S T    T3 T4 T T T TS S S S S S
c c    * s  c0C    (
/y 
/ 
/t 
/ 
/ 
/ 
/& c c
c	c c 
	c
 c c 
c c c cL* * *$ *3 * * * *Z c (4T	?*C s    "
R3 
R4 
R 
R 
R 
R
R3 
R4 
R 
R 
R 
RB3 B4 B B B B&3 &49 & & & &V  c Xc]      s$   'A, ,A65A6:A? ?B	B	