
    ُkh4                        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#	 d dl%Z% 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jj                        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<dld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@dlded'ee+   dee,ef   fd(ZAdeded)   fd*ZB	 dld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	 dld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	 dmd8ed;e+d<e+de+fd=ZP	 dnd8ed>e+deMfd?ZQdnd@ed>e+de+fdAZRd8e,d>e+de+fdBZSd8ede+fdCZTdDe,de+fdEZUdDe,de+fdFZVdede+fdGZWdede+fdHZXdede+fdIZYdede+fdJZZdede+fdKZ[dede+fdLZ\dede+fdMZ]dede+fdNZ^dede+fdOZ_dPeee      defdQZ`dPee   deed
f   fdRZadPedeeef   fdSZbdede+fdTZcdede+fdUZddede+fdVZed8edefdWZfdldededeee      fdXZgdYehdZehddfd[Zi	 dld\eded8ed]e,dZehd^eddfd_Zjdnd`edae+de,fdbZkdldceddeee,e+f      defdeZldede+fdfZmdede+fdgZndede+fdhZode,dee,   fdiZpe	dldjedee   fdk       Zqy# e$$ r dZ#Y w xY w# e$$ r dZ%Y w xY w)o    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y)Markerdescc                     || _         y Nr2   )selfr2   s     L/var/www/teggl/fontify/venv/lib/python3.12/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    yyr9   N)__name__
__module____qualname__strr8   r<    r9   r7   r1   r1   d   s    S # r9   r1   _DEFAULT_MARKER_c                   V    e Zd ZdZedej                  dedej                  fd       Z	y)OmegaConfDumperFdumperdatar:   c                     t        |      xs t        |      xs t        |      }| j                  t        j
                  j                  j                  ||rd      S 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   se    "4(JF4LJHTN&&MM&&99%3 ' 
 	
 ,0 ' 
 	
r9   N)
r=   r>   r?   str_representer_addedstaticmethodrN   Dumperr@   
ScalarNoderS   rA   r9   r7   rD   rD   p   s7    !
 
3 
4?? 
 
r9   rD   r:   c                      t         j                  s3t         j                  t        t         j                         dt         _        t         S )NT)rD   rT   add_representerr@   rS   rA   r9   r7   get_omega_conf_dumperrZ   }   s/    00''_-L-LM04-r9   bc                     | t         v S r4   )YAML_BOOL_TYPES)r[   s    r7   rJ   rJ      s    r9   c                      G d dt         j                        } | }|j                  dt        j                  dt        j
                        t        d             |j                  j                         D ci c]"  \  }}||D cg c]  \  }}|dk7  r||f c}}$ c}}}}|_        |j                  dd        |j                  d	d
        |j                  dd        |S c c}}w c c}}}}w )Nc                   B     e Zd Zddej                  dedef fdZ xZS )(get_yaml_loader.<locals>.OmegaConfLoadernodedeepr:   c                    t               }|j                  D ]  \  }}|j                  t        j                  j
                  j                  k7  r8|j                  |v rCt        j                  j                  d|j                  d|j                   |j                        |j                  |j                          t        | 1  ||      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    5D(,

 
)$*<<4==#=#=#P#PP>>T)**;;6.x~~.>? ++	  (
) 7,T,==r9   F)	r=   r>   r?   rN   Nodeboolr   rl   __classcell__)rp   s   @r7   OmegaConfLoaderr`      s&    	>$)) 	>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.ztag:yaml.org,2002:timestampz2tag:yaml.org,2002:python/object/apply:pathlib.Pathc                 D    t        j                  | j                  |       S r4   )pathlibPathconstruct_sequenceloaderra   s     r7   <lambda>z!get_yaml_loader.<locals>.<lambda>   s    W\\6+D+DT+JK r9   z7tag:yaml.org,2002:python/object/apply:pathlib.PosixPathc                 D    t        j                  | j                  |       S r4   )rw   	PosixPathry   rz   s     r7   r|   z!get_yaml_loader.<locals>.<lambda>   s    W..0I0I$0OP r9   z9tag:yaml.org,2002:python/object/apply:pathlib.WindowsPathc                 D    t        j                  | j                  |       S r4   )rw   WindowsPathry   rz   s     r7   r|   z!get_yaml_loader.<locals>.<lambda>   s    W00&2K2KD2QR r9   )
rN   
SafeLoaderadd_implicit_resolverrecompileXlistyaml_implicit_resolversitemsadd_constructor)ru   r{   key	resolversrf   regexps         r7   get_yaml_loaderr      s   >$// >  F
  !


! DD		
 	_( %<<BBD& & C 	(
V33 &M
 	
&F" <K AP CR
 M+
&s   9C,
C&C,
&C,
pathc                     ddl m} | j                  d      \  }}} ||      }	 t        ||      }|S # t        $ r t        d| d|       w xY w)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      si    '!%!5KJ

$CPc:. L  PF:,.@NOOPs	   3 Atype_c                     t         j                  dk\  rt        | t        j                        ryt        | dd       t        u S )N)   
   T
__origin__)sysversion_info
isinstancetypes	UnionTyper   r   r   s    r7   is_union_annotationr      s5    
7"eU__-5,-66r9   c                    t        |       r[| 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   2   K   | ]  }|t         us|  y wr4   )r   ).0as     r7   	<genexpr>z$_resolve_optional.<locals>.<genexpr>   s     >qAX,=>s   Fr   r      N)r   __args__r   tuplelenr   r   )r   argsoptionals      r7   _resolve_optionalr      s    5!~~tH>D>>DHt9>T!W$$Y!^U4[((5|Syx  X~%<r9   objr   c                     ddl m}m} |t        | |      sJ | j	                  |      } t        | |      sJ | 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      sG    %
#y)))mmC c4   r9   modulec                    dd l }t        |d      r|j                  n|j                  }t	        |       |u rt         d| j                         S t        |       r7t        |       \  }}|t        |      }|t        |      }t        ||f   S t        |       r#t        |       }|t        |      }t        |   S t        |       r(t        |       }t!        fd|D              }t"        |   S | S )Nr   
ForwardRefr   r   c              3   8   K   | ]  }t        |         yw)r   N)_resolve_forward)r   itr   s     r7   r   z#_resolve_forward.<locals>.<genexpr>  s     J(F;;Js   )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      s    #*6<#@ffFXFXGE{gVHAe&;&;%<=>>e$-e4FB~%b8~%b8B<e$&u-B~%b88Ou%&u-CJcJJC:r9   parentc                    ddl m} t        | t              }|r| n
t        |       }t	        |      }|r0t        j                  d|j                   ddz   dz   t        d       |ry	|r_i }t        |      \  }}| j                         D ]:  \  }	}
t        |      \  }}t        || j                        }	  ||||	|
|
      ||	<   < |S y	# t        $ r#}t        d	|	|
|t!        |             Y d	}~gd	}~ww xY w)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s49H&x0Oh''((<=OP9: 	
 	!9(!C,99; 	KD%!2<!@K$UCNN;E+6" +!,"4(		 "! #  4uBCG s   3C	C4C//C4zattr.Attribute[Any]c                     t        | t              }|r| n
t        |       }t        j                  |      j	                         }|D cg c]"  }|j
                  j                  d      dus!|$ c}S c c}w Nomegaconf_ignoreT)r   r   attrfields_dictvaluesmetadataget)r   r   r   fieldsfs        r7   get_attr_class_fieldsr   =  s]    d#Gs49Hh'..0FP!0B!C4!OAPPPs   "A1*A1allow_objectsc                 >   ddl m}m} |d|ini }ddlm} i }t        | t              }|r| n
t        |       }|j                  i |      }	||	j                  _	        t        |      }
t        |       D ]  }|j                  }t        |
|         \  }}t        || j                        }|st!        | |      }n!|j"                  }|t$        j&                  k(  r|}t)        |      r>t+        |      s3t-        d| dt/        |             }t1        d d ||t3        |             	  ||||||		      ||<   ||   j9                  d         t;        | |	
      }||j=                  |       |S # t4        t6        f$ r#}t1        |	|||t3        |             Y d }~ed }~ww xY w)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  s   :0=0I_m,rE!
Ad#Gs49H##Be#4L)1L&#H-N', "{{.~d/CDU 7C&ENNE$u%.KE.R ;D6HUOCTUA $DQCPQFS	!'#AdG 	
$D!9": 4LQ%	#$H  !23 	!t5B 	s   "E**F9FFzdataclasses.Field[Any]c                     t        j                  |       }|D cg c]"  }|j                  j                  d      dus!|$ c}S c c}w r   )dataclassesr   r   r   r   r   r   s      r7   get_dataclass_fieldsr  u  s;    $FP!0B!C4!OAPPPs
   "AAc                    ddl m}m}m} |d|ini }i }t	        | t
              }t        |       }|j                  i |      }	||	j                  _	        t        |      }
t        |       D ]  }|j                  }t        |
|j                           \  }}t        || j                        }|j                   t"        j                  k7  }|j$                  t"        j                  k7  }|st'        | |      }n$|r|j                   }n|r|j%                         }n|}t)        |      r>t+        |      s3t-        d| dt/        |             }t1        d d ||t3        |             	  ||||||	      ||<   ||   j9                  d         t;        | |		      }||j=                  |       |S # t4        t6        f$ r#}t1        |	|||t3        |             Y d }~fd }~ww xY w)
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C0=0I_m,rE
Ad#G3H##Be#4L)1L&#H-N%c* ""zz.~ejj/IJU 7mm{':'::#33{7J7JJC&E$--/u%.KE.R ;D6HUOCTUA $DQCPQFS	!'#AdG 	
$D!E""F 4LQ%	#$H  !23 	!t5B 	s   "F++G:GGc                 ^    ddl m} t        t        | |      ryt        j                  |       S Nr   rr   F)omegaconf.baserr   r  r   is_dataclassr   rr   s     r7   r   r     s(    #jd3##C((r9   c                 ^    ddl m} t        t        | |      ryt        j                  |       S r  )r  rr   r   r   hasr!  s     r7   is_attr_classr$    s$    #|z#t,88C=r9   c                 2    t        |       xs t        |       S r4   )r$  r   r   s    r7   is_structured_configr'    s    2c!22r9   c                 .    | j                   j                  S r4   )__dataclass_params__frozenr   s    r7   is_dataclass_frozenr+    s    %%,,,r9   c                 P    | j                   t        j                  j                  k(  S r4   )__setattr__r   _make_frozen_setattrsr   s    r7   is_attr_frozenr0    s     

 ; ;;;r9   class_or_objectc                 d    | }t        |t              st        |       }t        |t              sJ |S r4   )r   r   )r1  r   s     r7   r  r    s0    EeT"_%eT"""Lr9   c                 r    t        |       }t        |      rt        |      S t        |      rt	        |      S y)NF)r  r   r+  r$  r0  )r   r   s     r7   is_structured_config_frozenr4    s5    EE"5))Ue$$r9   c                     t        |       rt        |       }n8t        |       rt        |       }n!t	        dt        |       j                         |D cg c]  }|j                  s|j                   c}S c c}w )NUnsupported type: )	r   r  r$  r   
ValueErrorr   r=   initr   r  s      r7   &get_structured_config_init_field_namesr9    sb    C%c*	s	&s+-d3i.@.@-ABCC"-qaffAFF---s   A7&A7c                     t        |       rt        | |      S t        |       rt        | |      S t	        dt        |       j                         )N)r   r6  )r   r  r$  r  r7  r   r=   )r   r   s     r7   get_structured_config_datar;    sL     C!#]CC	s	S>>-d3i.@.@-ABCCr9   c                       e Zd ZdZdZdZy)	ValueKindr   r   r   N)r=   r>   r?   VALUEMANDATORY_MISSINGINTERPOLATIONrA   r9   r7   r=  r=    s    EMr9   r=  re   c                 \    ddl m} t        | |      r| j                         } t	        |       S )Nr   r  )r  rr   r   _value_is_missing_literal)re   rr   s     r7   _is_missing_valuerD    s%    %u%%r9   c                 0    t        | t              xr | dk(  S )Nz???)r   r@   re   s    r7   rC  rC    s    eS!4eun4r9   resolvethrow_on_resolution_failurec                     ddl m} t        | |      s| d u S |r%| j                  |      } |s| yt        | |      sJ | j	                         S )Nr   r  )rH  F)r  rr   r   _maybe_dereference_node_is_none)re   rG  rH  rr   s       r7   rK  rK  	  s_     eT"}--(C . 
 +u}%&&&>>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.
    )rD  r=  r?  _is_interpolationr@  r>  re   rL  s     r7   get_value_kindrP    s9    " *** ?@&&&??r9   vc                     ddl m} t        | |      r| j                         } t        | t              rt        | |      ryy)Nr   r  TF)r  rr   r   rB  r@   _is_interpolation_string)rQ  rL  rr   s      r7   rN  rN  7  s:    !THHJ!S6	* r9   c                 R    d| v r#|r t        j                  |       t        |        yy)Nz${TF)r   matchr   rO  s     r7   rS  rS  D  s,     u}*+11%8@er9   c                 r    t        |       xs+ t        |       t        j                  t        j                  fv S )z4Special values are None, MISSING, and interpolation.)rK  rP  r=  r?  r@  rF  s    r7   _is_specialrW  U  s6    E? nU3##8  r9   stc                 :    	 t        |        y# t        $ r Y yw xY wNTF)floatr7  rX  s    r7   rL   rL   ]  s#    b	     	c                 :    	 t        |        y# t        $ r Y yw xY wrZ  )intr7  r\  s    r7   rK   rK   e  s#    B r]  c                 .    t        | t        t        f      S r4   )r   r   r   r&  s    r7   is_primitive_listra  m  s    cD%=))r9   c                 (    t        |       }|t        u S r4   )r  dict)r   ts     r7   is_primitive_dictre  q  s    CA9r9   c                 (   | t         t        fv ryt        | dd       }t        j                  dk  r7t        | d      xr | j                  t        k(  }|t        u xs | t        u xs |S t        | d      xr | j                  t         k(  }|t         u xs |S )NTr   r      r   __base__)rc  r   r   r   r   r   ri  )r   origin
typed_dicts      r7   r   r   v  s    tUL$/F )#UJ/JENNd4J
~<$<*<UJ/JENNd4J
~++r9   c                     | t         t        fv ryt        | dd       }t        j                  dk  r|t        u xs | t        u S |t         u S NTr   rg  )r   r	   r   r   r   r   rj  s     r7   r   r     sJ    tUL$/F
)#~.$.~r9   c                     | t         t        fv ryt        | dd       }t        j                  dk  r|t        u xs | t        u S |t         u S rm  )r   r   r   r   r   rn  s     r7   r   r     sJ    UL$/F
)#0%5.0r9   c                 V    t        |       sy| j                  }t        d |D              S )zLCurrently only primitive types are supported in Unions, e.g. Union[int, str]Fc              3   2   K   | ]  }t        |        y wr4   )is_primitive_type_annotation)r   args     r7   r   z0is_supported_union_annotation.<locals>.<genexpr>  s     AS+C0As   )r   r   all)r   r   s     r7   r  r    s'    s#<<DADAAAr9   c                 R    | d uxr" t        | t              xr t        | t              S r4   )r   r   
issubclassr   r   s    r7   r   r     s%    TE4!8TZt=TTr9   c                 L    t        |       xs t        |       xs t        |       S r4   )re  r   r   r&  s    r7   is_dictrx    s$    S!U%7%<U@PQT@UUr9   c                 2    t        |       xs t        |       S r4   )ra  re  r&  s    r7   is_primitive_containerrz    s    S!;%6s%;;r9   r   c                 X    t        | dd       }| t        ur||d   r|d   }|S t        }|S )Nr   r   )r   r	   r   )r   r   r   s      r7   r   r     sA    8Z.Dt 0T!WAw  r9   c                 \    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     s6    8Z.DzSzdE"""Kr9   c                     t        | dd       }|-t        | dd       }|t        |      dkD  rt        |d   dd       }| 	| t        k(  rt        }t        }||fS ||d   }|d   }||fS 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Ua58Z6D 8t+ \!! AwH7L
 \!! HL\!!r9   c                     t        |       \  }} | t        u xs2 t        |       xs% t        |       xs t	        |       xs t        |       S r4   )r   r   rr  r'  is_container_annotationr  )r   r   s     r7   is_valid_value_annotationr    sT     'HAu 	0'.	0&	0 #5)	0 )/r9   c                 Z    ddl m} | d u xs  | t        u xs t        | |j                        S )Nr   )DictKeyType)r  r  r   rv  r   )r   r  s     r7   _valid_dict_key_annotation_typer    s*    %D=SESLSJuk>R>R,SSr9   c                 l    t        |       } t        | t        t        j                  f      xs | t
        v S r4   )r  rv  r   rw   rx   r   r   s    r7   rr  rr    s-    EedGLL12Re?R6RRr9   c                 L   ddl m}m} ddlm} t        | |      r| j                         S t        | |      r,| j                         }|t        |      st        |      r|S | S t        | |      r5| j                         }|t        |      st        |      r|S t        |      S | S )Nr   )r   	UnionNode)	ValueNode)
r   r   r  nodesr  r   rB  rC  rN  
_get_value)re   r   r  r  boxeds        r7   r  r    s    * %#||~	E9	%=/6:KE:RL L 
E9	%=/6:KE:RLe$$ Lr9   c                    ddl m}m} t        | |      r|| j	                  |      } n|t        d      t        | |      r9| j                  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   r7  r  r   r   r   r
   )r   r   r   rr   r   s        r7   get_type_hintr    st    )#y!?--$C?PQQ#t==))(#"5H%%O
r9   r   r   c                    dt         j                  v rt         j                  d   nd }t        j                         d u}|xr |dk(   xs |dk(  }|r|| _        nd | _        | j                  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    sv     )3bjj(@bjj$dGd*I63$6KGsNN


CLLN1-
..r9   ra   r   type_overridec                    ddl m} ddlm} t	        |t
              r t	        |t              rQ|j                  rE|}|5 |t        |            }t        j                  |j                        |_        t        ||       d }	d }
| ||nd}d }d }d }nj|#| j                         s| j                  |d      }
	 | j                  |      }|j'                  |       }t)        |      }	t+        |       }t)        |      }t-        j.                  |      j1                  ||	|||t)        t#        |      d      t#        |      j$                         }|d t2        fvrt5        d      }nt5        d      }t-        j.                  |      }|j7                  ||	||      }|t#        |      n|}|t8        k(  rt:        }n|t<        k(  rt>        } ||       }tA        |t              rMd|_        ||_!        | |_"        |
|_#        ||_$        ||_%        ||_&        ||_'        |	|_(        ||_)        ||_*        t        ||       y # t         $ r'}dt#        |      j$                   d	| d
}Y d }~d }~ww xY w)Nr   r   r   F)validate_access)r   z<unresolvable due to r   >Tinclude_module_name)REF_TYPEOBJECT_TYPEKEYFULL_KEYr>  
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  rK  r   _get_full_key	Exceptionr   r=   get_typer  r  stringTemplatesafe_substituter   r   
substitute	TypeErrorr   
IndexErrorr   rv  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      sl    $#%(%/0U5G5G$s5z*B--7BKr5 &*O "&J|/3r?4==?UCJ	L))c)2H  ((.";/ &)
//#

.
.#DKTBI&&' / C c{",
 ,
 	*All?h  G %2$9T%[}N"(	:	%)	7)	%B."89"$,&
2u{  	L /tCy/A/A.B"SEKH	Ls   8H< <	I,I''I,rd  r  c           	          t        |       \  }} | t        u rt        | j                        S | t        u ry| du ryt        | d      rt        | j                        }npt        | dd       t        | j                        }nMt        | dd       t        | j                        }n*t        |       }|j                  d      r|t        d      d  }t        | dd       }|=d	j                  | j                  D  cg c]  } t        | |
       c}       }| d| d}n|}|ret         d      rR| j                  dk7  rC| j                  dk7  r4| j                  j                  d      st        | j                        dz   }nd}||z   }|rd| dS |S c c} w )Nr   .z...r=   _namer   ztyping.r   z, r  []r>   builtinsr   z
omegaconf.r   r  z	Optional[)r   r   r@   r=   r   r   r   r  r  r   
startswithr   joinr   r>   )rd  r  r   r   r   retmodule_prefixs          r7   r  r    sz   &q)NKH}1::CxCxq*1::	GT	"	.177|	L$	'	3%1v??9%I()D1j$'DyyKL::VaXa-@AV
 avQA|$
*(LL++L9-3MMc!3%q!!
' Ws   4Ftargetr   c                     ddl m} t        |       r-t        | t        t
        f      sJ |j                  | |      } | S t        |       r|j                  | |      } | S |j                  |       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   rz  r   r   rc  r  r'  
structured	is_configr7  )r  r   r   s      r7   _ensure_containerr    s    #f%&4,///!!&!6 M 
f	%%%fE%: M   (n
 	

 Mr9   c                 6    t        |       xr 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)ET)QQr9   c                 J    t        |       xr t        t        |             dkD  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)MPQ)QQr9   c                 2    t        |       xs t        |       S r4   )r   r   r   s    r7   r  r    s    e$A(:5(AAr9   c                 T   t         j                  |       }|J |j                         d   }| d| j                  d      }|t	        |       k(  r|S | |   dk(  r|d   s|j                          t        j                  | |d       }||D cg c]  \  }}|r|n| c}}z  }|S c c}}w )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  )KEY_PATH_HEADrU  spansplitr   popKEY_PATH_OTHERfindall)r   first
first_stoptokensothersdot_keybracket_keys          r7   	split_keyr    s     $EaJ :$$S)F SX
:#fRj 	

 ##C
$45F
 vV7Kw'w{2VVFM Ws   B$enter_resultc              #      K   |  y wr4   rA   )r  s    r7   nullcontextr    s     
s   r4   )FTrq   )rr  r  rw   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__r_  r[  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$  r'  r+  r0  r  r4  r9  r;  r=  rD  rC  rK  rP  rN  rS  rW  rL   rK   ra  re  r   r   r   r  r   rx  rz  r   r   r   r  r  rr  r  r  r  r  r   r  r  r  r  r  r  r  rA   r9   r7   <module>r     s    	  	  
   %  
 
 
   @

 Dz$t* ! 		. U49c>*  

>*
 344  12 # 2

dkk 

tO4  C  D  6 6r	S 	T 	7s 7t 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.s .8D> .T#s(^ .bQc Qd+C&D Q /32	2%d^2	#s(^2j)c )d )s t 3c 3d 3-s -t -<$ <4 < c S T . .S	 . /3D	D%d^D	#s(^D &S &T &5s 5t 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UC UD UV V V< < <HT#Y$7 C 49 sCx "s "uS#X ".S T T3 T4 TS S S
c c *s  c0C (
/y 
/ 
/t 
/& c
c	c c 
	c
 c c 
cL* *$ *3 *Zc (4T	?*C s "
R3 
R4 
R
R3 
R4 
RB3 B4 B&3 &49 &V c Xc]  O  K  Ds$   'M  ,M.  M+*M+.M98M9