
    iGD                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
JrJrJrJr  S SKJrJrJrJrJrJr  S SKJrJrJrJr  S SKJrJrJr   " S	 S
\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S\5      r' " S S\5      r(g)    N)abstractmethod)Enum)Path)AnyDictOptionalTypeUnion)	ValueKind_is_interpolationget_type_ofget_value_kindis_primitive_containertype_str)BoxDictKeyTypeMetadataNode)ReadonlyConfigErrorUnsupportedValueTypeValidationErrorc                   n  ^  \ rS rSr% \\S'   S\\   S\S\4U 4S jjr	S\4S jr
SS\S
\\\\4      SS	4S jjrS\SS	4S jrS\S\4S jr\S\S\4S j5       rS\4S jrS\4S jrS\S\4S jrS\S\4S jrS\4S jrS\S\\\4   SS	4S jrS\4S jrS\4S jrS\\\\4      S\4S jrSrU =r $ )	ValueNode   _valparentvaluemetadatac                    > SSK Jn  [        TU ]  XS9  U" U 5         U R	                  U5        S S S 5        g ! , (       d  f       g = f)Nr   )
read_write)r   r   )	omegaconfr    super__init__
_set_value)selfr   r   r   r    	__class__s        N/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/omegaconf/nodes.pyr#   ValueNode.__init__   s6    (:OOE" s	   8
Areturnc                     U R                   $ Nr   r%   s    r'   _valueValueNode._value   s    yy    Nflagsc                    U R                  S5      (       a  [        S5      e[        U[        5      (       a3  [	        USS9[
        R                  [
        R                  4;   a  Xl        g U R                  U5      U l        g )Nreadonly)Cannot set value of read-only config nodeT)strict_interpolation_validation)
	_get_flagr   
isinstancestrr   r   INTERPOLATIONMANDATORY_MISSINGr   validate_and_convertr%   r   r1   s      r'   r$   ValueNode._set_value"   sm    >>*%%%&QRReS!!n4'
 ##''
'
 I11%8DIr0   c                     U R                   R                  n[        U[        5      (       a=  [        U5      ULa.  [	        U R                   R
                  5      n[        SU S35      eg g NzEValue '$VALUE' of type '$VALUE_TYPE' is incompatible with type hint '')	_metadataref_typer7   typer   	type_hintr   r%   r   rB   rD   s       r'   _strict_validate_typeValueNode._strict_validate_type0   sb    >>**h%%$u+X*E !9!9:I!WXaWbbcd  +F%r0   c                    UcG  U R                  5       (       a  g[        U R                  R                  5      n[	        SU SU S35      eU R                  S5      SL a  U R                  U5        U$ U R                  U5      $ )z
Validates input and converts to canonical form
:param value: input value
:return: converted value ("100" may be converted to 100 for example)
NzIncompatible value 'z' for field of type 'r@   convertF)_is_optionalr   rA   rB   r   r6   rF   _validate_and_convert_impl)r%   r   ref_type_strs      r'   r;   ValueNode.validate_and_convert8   s     =  ""#DNN$;$;<L!&ug-B<.PQR  >>)$-&&u-L22599r0   c                     g r+    r%   r   s     r'   rK   $ValueNode._validate_and_convert_implN   s    r0   c                 ,    [        U R                  5      $ r+   )r8   r   r-   s    r'   __str__ValueNode.__str__R   s    499~r0   c                 R    [        U S5      (       a  [        U R                  5      $ S$ )Nr   __INVALID__)hasattrreprr   r-   s    r'   __repr__ValueNode.__repr__U   s!    ")$"7"7tDIIJ]Jr0   otherc                 |    [        U[        5      (       a  U R                  UR                  :H  $ U R                  U:H  $ r+   )r7   AnyNoder   )r%   r[   s     r'   __eq__ValueNode.__eq__X   s1    eW%%99

**99%%r0   c                 H    U R                  U5      nU[        Ld   eU(       + $ r+   )r^   NotImplemented)r%   r[   xs      r'   __ne__ValueNode.__ne__^   s%    KK&&&ur0   c                 ,    [        U R                  5      $ r+   hashr   r-   s    r'   __hash__ValueNode.__hash__c       DIIr0   resmemoc                     [         R                  " U R                  US9UR                  S'   U R                  UR                  S'   U R
                  UR                  S'   g )N)rl   rA   r   _parent)copydeepcopyrA   __dict__r   rn   )r%   rk   rl   s      r'   _deepcopy_implValueNode._deepcopy_implf   sE    $(MM$..t$L[!#yyV #',,Yr0   c                 .    U R                   R                  $ r+   )rA   optionalr-   s    r'   rJ   ValueNode._is_optionaln   s    ~~&&&r0   c                 4    [        U R                  5       5      $ r+   )r   r.   r-   s    r'   r   ValueNode._is_interpolationq   s     //r0   keyc                     U R                  5       nUc7  U R                  R                  c  g[        U R                  R                  5      $ UR	                  U R                  R                  5      $ )N )_get_parentrA   ry   r8   _get_full_key)r%   ry   r   s      r'   r}   ValueNode._get_full_keyt   sX    !!#>~~!!)4>>--..''(:(:;;r0   r,   r+   )!__name__
__module____qualname____firstlineno__r   __annotations__r   r   r   r#   r.   r   r8   boolr$   rF   r;   r   rK   rS   rY   r^   rc   intrh   rr   rJ   r   r
   r   r}   __static_attributes____classcell__r&   s   @r'   r   r      sO   
I#x} #S #H # 9 9HT#t)_,E 9QU 93 4 :# :# :,     K# K&C &D &C D 
# /# /T#s(^ / /'d '04 0<%S0@*A!B <s < <r0   r   c                      ^  \ rS rSr    SS\S\S\\   S\\\\	4      4U 4S jjjr
S\S\4S jrS	\\\4   SS 4S
 jrSrU =r$ )r]      r   ry   r   r1   c                 B   > [         TU ]  UU[        [        S USUS9S9  g )NTrB   object_typery   ru   r1   r   r   r   )r"   r#   r   r   r%   r   ry   r   r1   r&   s        r'   r#   AnyNode.__init__   s0     	$C$e 	 	
r0   r)   c                     SSK Jn  U R                  S5      SLa1  U" U5      (       d$  [        U5      n[	        SUR
                   S35      eU$ )N   )is_primitive_type_annotationallow_objectsTzValue 'z#' is not a supported primitive type)_utilsr   r6   r   r   r   )r%   r   r   ts       r'   rK   "AnyNode._validate_and_convert_impl   sX    8 >>
:5AAE"A&!**%HI  r0   rl   c                 <    [        5       nU R                  X!5        U$ r+   )r]   rr   r%   rl   rk   s      r'   __deepcopy__AnyNode.__deepcopy__   s    iC&
r0   rO   )NNNN)r   r   r   r   r   r   r   r   r8   r   r#   rK   r   r   r   r   r   s   @r'   r]   r]      s      $+/

 
 	

 S$Y(
 
   c3h I  r0   r]   c                      ^  \ rS rSr     SS\S\S\\   S\S\\\	\4      4
U 4S jjjr
S\S\	4S	 jrS
\\\4   SS 4S jrSrU =r$ )
StringNode   r   ry   r   is_optionalr1   c                 J   > [         TU ]  UU[        UU[        [        US9S9  g Nry   ru   rB   r   r1   r   )r"   r#   r   r8   r%   r   ry   r   r   r1   r&   s         r'   r#   StringNode.__init__   4     	$ 	 
	
r0   r)   c                     SSK Jn  UR                  U5      (       d%  [        U5      (       d  [	        U[
        5      (       a  [        S5      e[        U5      $ )Nr   )	OmegaConfz0Cannot convert '$VALUE_TYPE' to string: '$VALUE')r!   r   	is_configr   r7   bytesr   r8   )r%   r   r   s      r'   rK   %StringNode._validate_and_convert_impl   sF    ' &&%e,,%''!"TUU5zr0   rl   c                 <    [        5       nU R                  X!5        U$ r+   )r   rr   r   s      r'   r   StringNode.__deepcopy__   s    lC&
r0   rO   NNNTNr   r   r   r   r   r   r   r   r   r8   r#   rK   r   r   r   r   r   s   @r'   r   r      s      $ +/

 
 	

 
 S$Y(
 
(	 	 	c3h L  r0   r   c                      ^  \ rS rSr     SS\S\S\\   S\S\\\	\4      4
U 4S jjjr
S\S	S4S
 jrS\S	\4S jrS\\\4   S	S 4S jrSrU =r$ )PathNode   Nr   ry   r   r   r1   c                 J   > [         TU ]  UU[        UU[        [        US9S9  g r   )r"   r#   r   r   r   s         r'   r#   PathNode.__init__   4     	$  	 
	
r0   r)   c                 D    [        U[        5      (       d  [        S5      eg )NzIValue '$VALUE' of type '$VALUE_TYPE' is not an instance of 'pathlib.Path')r7   r   r   rP   s     r'   rF   PathNode._strict_validate_type   s$    %&&![  'r0   c                 d    [        U[        [        45      (       d  [        S5      e[        U5      $ )NzCValue '$VALUE' of type '$VALUE_TYPE' could not be converted to Path)r7   r8   r   r   rP   s     r'   rK   #PathNode._validate_and_convert_impl   s/    %#t--!U  E{r0   rl   c                 <    [        5       nU R                  X!5        U$ r+   )r   rr   r   s      r'   r   PathNode.__deepcopy__   s    jC&
r0   rO   r   )r   r   r   r   r   r   r   r   r   r8   r#   rF   r   rK   r   r   r   r   r   s   @r'   r   r      s      $ +/

 
 	

 
 S$Y(
 
(3 4   c3h J  r0   r   c                      ^  \ rS rSr     SS\S\S\\   S\S\\\	\4      4
U 4S jjjr
S\S\4S	 jrS
\\\4   SS 4S jrSrU =r$ )IntegerNode   r   ry   r   r   r1   c                 J   > [         TU ]  UU[        UU[        [        US9S9  g r   )r"   r#   r   r   r   s         r'   r#   IntegerNode.__init__   r   r0   r)   c                      [        U5      [        [        4;   a  [        U5      nU$ [        5       e! [         a    [	        S5      ef = f)NzFValue '$VALUE' of type '$VALUE_TYPE' could not be converted to Integer)rC   r8   r   
ValueErrorr   )r%   r   vals      r'   rK   &IntegerNode._validate_and_convert_impl	  sP    	E{sCj(%j 
 !l" 	!X 	s   $2 
2 Arl   c                 <    [        5       nU R                  X!5        U$ r+   )r   rr   r   s      r'   r   IntegerNode.__deepcopy__      mC&
r0   rO   r   )r   r   r   r   r   r   r   r   r   r8   r#   r   rK   r   r   r   r   s   @r'   r   r      s      $ +/

 
 	

 
 S$Y(
 
(
 
 
c3h M  r0   r   c                      ^  \ rS rSr     SS\S\S\\   S\S\\\	\4      4
U 4S jjjr
S\S\4S	 jrS
\\\4   SS 4S jrSrU =r$ )	BytesNodei  r   ry   r   r   r1   c                 J   > [         TU ]  UU[        UU[        [        US9S9  g r   )r"   r#   r   r   r   s         r'   r#   BytesNode.__init__  4     	$! 	 
	
r0   r)   c                 F    [        U[        5      (       d  [        S5      eU$ )Nz;Value '$VALUE' of type '$VALUE_TYPE' is not of type 'bytes')r7   r   r   rP   s     r'   rK   $BytesNode._validate_and_convert_impl0  s&    %''!M  r0   rl   c                 <    [        5       nU R                  X!5        U$ r+   )r   rr   r   s      r'   r   BytesNode.__deepcopy__7      kC&
r0   rO   r   )r   r   r   r   r   r   r   r   r   r8   r#   r   rK   r   r   r   r   r   s   @r'   r   r     s      $ +/

 
 	

 
 S$Y(
 
(  c3h K  r0   r   c                      ^  \ rS rSr     SS\S\S\\   S\S\\\	\4      4
U 4S jjjr
S\S\4S	 jrS
\S\4S jrS\4S jrS\\\4   SS 4S jrSrU =r$ )	FloatNodei=  r   ry   r   r   r1   c                 J   > [         TU ]  UU[        UU[        [        US9S9  g r   )r"   r#   r   floatr   s         r'   r#   FloatNode.__init__>  r   r0   r)   c                      [        U5      [        [        [        4;   a  [        U5      $ [	        5       e! [         a    [        S5      ef = f)NzDValue '$VALUE' of type '$VALUE_TYPE' could not be converted to Float)rC   r   r8   r   r   r   rP   s     r'   rK   $FloatNode._validate_and_convert_implR  sK    	E{uc3//U|# l" 	!V 	s   (5 
5 Ar[   c                    [        U[        5      (       a  UR                  nOUnU R                  c  Uc  gU R                  c  Ub  gU R                  b  Uc  g[        U R                  [        5      (       a   [        R
                  " U R                  5      OSn[        U[        5      (       a  [        R
                  " U5      OSnU R                  U:H  =(       d    U=(       a    U$ )NTF)r7   r   r   r   mathisnan)r%   r[   	other_valnan1nan2s        r'   r^   FloatNode.__eq__]  s    eY''

II9999!299 U](2499e(D(Dtzz$))$%(29e(D(Dtzz)$%yyI%8$-48r0   c                 ,    [        U R                  5      $ r+   rf   r-   s    r'   rh   FloatNode.__hash__l  rj   r0   rl   c                 <    [        5       nU R                  X!5        U$ r+   )r   rr   r   s      r'   r   FloatNode.__deepcopy__o  r   r0   rO   r   )r   r   r   r   r   r   r   r   r   r8   r#   r   rK   r^   r   rh   r   r   r   r   s   @r'   r   r   =  s      $ +/

 
 	

 
 S$Y(
 
(	 	 	9C 9D 9# c3h K  r0   r   c                      ^  \ rS rSr     SS\S\S\\   S\S\\\	\4      4
U 4S jjjr
S\S\4S	 jrS
\\\4   SS 4S jrSrU =r$ )BooleanNodeiu  r   ry   r   r   r1   c                 J   > [         TU ]  UU[        UU[        [        US9S9  g r   )r"   r#   r   r   r   s         r'   r#   BooleanNode.__init__v  r   r0   r)   c                    [        U[        5      (       a  U$ [        U[        5      (       a  US:g  $ [        U[        5      (       a   U R	                  [        U5      5      $ [        S5      e! [
         ah  nUR                  5       S;   a   S nAgUR                  5       S;   a   S nAg[        S5      R                  [        R                  " 5       S   5      UeS nAff = f)Nr   )yesyontrueT)nonofffalseFz5Value '$VALUE' is not a valid bool (type $VALUE_TYPE)   )r7   r   r   r8   rK   r   lowerr   with_tracebacksysexc_info)r%   r   es      r'   rK   &BooleanNode._validate_and_convert_impl  s    eT""LeS!!A:s##
?66s5zBB "G   ?;;=$>>[[]&AA )O$nS\\^A%67Q??s$   A- -
C7CC)1CCrl   c                 <    [        5       nU R                  X!5        U$ r+   )r   rr   r   s      r'   r   BooleanNode.__deepcopy__  r   r0   rO   r   r   r   s   @r'   r   r   u  s      $ +/

 
 	

 
 S$Y(
 
(  ,c3h M  r0   r   c                      ^  \ rS rSrSr     SS\\   S\\\\	4      S\
S\\   S\S	\\\	\4      4U 4S
 jjjrS\
SS4S jrS\
S\4S jr\S\\   S\
S\4S j5       rS\\\
4   SS 4S jrSrU =r$ )EnumNodei  a=  
NOTE: EnumNode is serialized to yaml as a string ("Color.BLUE"), not as a fully qualified yaml type.
this means serialization to YAML of a typed config (with EnumNode) will not retain the type of the Enum
when loaded.
This is intentional, Please open an issue against OmegaConf if you wish to discuss this decision.
N	enum_typer   ry   r   r   r1   c                 >  > [        U[        5      (       a  [        U[        5      (       d  [	        SU S35      e0 U l        Xl        UR                  R                  5        H  u  pxUR                  U R
                  U'   M      [        T	U ]-  UU[        UUUUUS9S9  g )Nz.EnumNode can only operate on Enum subclasses ()r   r   )r7   rC   
issubclassr   r   fieldsr   __members__itemsr   r"   r#   r   )
r%   r   r   ry   r   r   r1   nameconstantr&   s
            r'   r#   EnumNode.__init__  s     )T***Y2M2M!@1M  ')%.'3399;ND (DKK <$"% 	 
	
r0   r)   c                     U R                   R                  n[        X5      (       d.  [        U R                   R                  5      n[        SU S35      eg r?   )rA   rB   r7   r   rD   r   rE   s       r'   rF   EnumNode._strict_validate_type  sQ    >>**%** !9!9:I!WXaWbbcd  +r0   c                 6    U R                  U R                  US9$ )N)r   r   )validate_and_convert_to_enumr   rP   s     r'   rK   #EnumNode._validate_and_convert_impl  s    004>>QV0WWr0   c                    [        U[        [        45      (       d  [        X5      (       d  [        SU  35      e[        X5      (       a  U$  [        U[        [
        45      (       a  [        e[        U[        5      (       a  U " U5      $ [        U[        5      (       a7  U R                   S3nUR                  U5      (       a  U[        U5      S  nX   $  e! [        [        4 ay  nSR                  U R                  R                  5        Vs/ s H  oDPM     Os  snf sn5      n[        SU S35      R                  [        R                   " 5       S   5      UeS nAff = f)Nz4Value $VALUE ($VALUE_TYPE) is not a valid input for .z, z)Invalid value '$VALUE', expected one of []r   )r7   r8   r   r   r   r   r   r   
startswithlenKeyErrorjoinr   keysr   r   r   )r   r   prefixr   rb   valids         r'   r  %EnumNode.validate_and_convert_to_enum  s<   %#s,,Z5Q5Q!FykR  e''L	7%%//  %%% ''%%%%../q1##F++!#f+-0E ''5H% 	7II)*?*?*D*D*FG*FQq*FGHE!;E7!DnS\\^A./Q7	7s2   =C AC C E")'ED
AEE"rl   c                 N    [        U R                  S9nU R                  X!5        U$ )N)r   )r   r   rr   r   s      r'   r   EnumNode.__deepcopy__  s#    0C&
r0   )r   r   r   )r   r   r   r   __doc__r	   r   r   r
   r8   r   r   r   r   r#   rF   rK   staticmethodr  r   r   r   r   r   s   @r'   r   r     s     -1 $ +/
:
 dCi()
 	

 
 
 S$Y(
 
:3 4 X X X 7T
 73 74 7 7<c3h J  r0   r   c                      ^  \ rS rSrSr   SS\S\S\\   S\\\	\
4      4U 4S jjjrSS\S\\\	\
4      S	S4S
 jjrS\S	\4S jrS\\\4   S	S 4S jrS	\
4S jrSrU =r$ )InterpolationResultNodei  z8
Special node type, used to wrap interpolation results.
Nr   ry   r   r1   c                 z   > [         TU ]  UU[        [        S USUS9S9  Ub  SU;  a  U R	                  SS5        g g )NTr   r   r3   )r"   r#   r   r   	_set_flagr   s        r'   r#    InterpolationResultNode.__init__   sQ     	$C$e 	 	
 =Je3NN:t, 4r0   r)   c                 r    U R                  S5      (       a  [        S5      eU R                  U5      U l        g )Nr3   r4   )r6   r   r;   r   r<   s      r'   r$   "InterpolationResultNode._set_value  s/    >>*%%%&QRR--e4	r0   c                     U$ r+   rO   rP   s     r'   rK   2InterpolationResultNode._validate_and_convert_impl  s    r0   rl   c                     [         er+   )NotImplementedError)r%   rl   s     r'   r   $InterpolationResultNode.__deepcopy__  s    !!r0   c                     g)NFrO   r-   s    r'   r   )InterpolationResultNode._is_interpolation  s    r0   r,   )NNNr+   )r   r   r   r   r  r   r   r   r   r8   r   r#   r$   rK   r   r   r   r   r   r   s   @r'   r  r    s      $+/-- - 	-
 S$Y(- -$5 5HT#t)_,E 5QU 5
  "c3h "4M "4  r0   r  ))ro   r   r   abcr   enumr   pathlibr   typingr   r   r   r	   r
   omegaconf._utilsr   r   r   r   r   r   omegaconf.baser   r   r   r   omegaconf.errorsr   r   r   r   r]   r   r   r   r   r   r   r   r  rO   r0   r'   <module>r.     s      
    3 3  < ; W Wg< g<T#i #L# #L&y &R$) $N	 D5	 5p.) .bRy Rj&i &r0   