
    (ggX              
      H   d dl mZ d dlmZ d dlZd dlmZ d dlmZm	Z	m
Z
 ddlmZmZmZmZmZmZ ddlmZmZmZ  ed	  ed
      D               e ed            z  Ze ed      z
  Ze ed      z
  ZeZeZeZ ed      Ze ed      z  Z  eejB                  ejD                  z   dz         Z#e# ed      z  Z$ eejJ                        Z& edddddddd      Z' G d de(      Z)e*dd<dZ+e*dd=dZ, G d d      Z- G d d       Z. G d! d"e
      Z/d>d#Z0	 	 	 	 	 	 	 	 	 	 	 	 d?d$Z1d@d%Z2d@d&Z3dAd'Z4dAd(Z5	 	 	 	 	 	 	 	 	 	 	 	 dBd)Z6	 	 	 	 	 	 	 	 dCd*Z7dDd+Z8dEd,Z9dEd-Z:dFd.Z;dGd/Z<d0d1	 	 	 	 	 	 	 dHd2Z=dEd3Z>dId4Z?dEd5Z@dJd6ZAdHd7ZB	 	 	 	 	 	 	 	 dKd8ZCdLd9ZDdMd:ZEdNd;ZFy)O    )annotations)IterableN)MappingProxyType)AnyBinaryIO
NamedTuple   )RE_DATETIMERE_LOCALTIME	RE_NUMBERmatch_to_datetimematch_to_localtimematch_to_number)Key
ParseFloatPosc              #  2   K   | ]  }t        |        y wN)chr).0is     &/usr/lib/python3.12/tomllib/_parser.py	<genexpr>r      s     1!s1v1s          	z	
z 	
z-_z"'"\)z\bz\tz\nz\fz\rz\"z\\c                      e Zd ZdZy)TOMLDecodeErrorz0An error raised if a document is not valid TOML.N)__name__
__module____qualname____doc__     r   r$   r$   5   s    :r*   r$   parse_floatc                  | j                         }	 |j                         }t	        ||      S # t        $ r t        d      dw xY w)z%Parse TOML from a binary file object.zEFile must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`Nr+   )readdecodeAttributeError	TypeErrorloads)fpr,   bss       r   loadr6   9   sP    
	AHHJ
 ,,	  S
	s	   / Ac                 | j                  dd      }d}t        t               t                     }d}t	        |      }	 t        ||t              }	 ||   }|dk(  r|dz  }#|t        v r!t        |||||      }t        ||t              }nr|dk(  r[	 ||dz      }|j                  j                          |dk(  rt        |||      \  }}nt        |||      \  }}t        ||t              }n|dk7  rt        ||d	      t        ||      }	 ||   }|dk7  rt        ||d
      |dz  }# t        $ r Y |j                   j"                  S w xY w# t        $ r d}Y w xY w# t        $ r Y |j                   j"                  S w xY w)zParse TOML from a string.z
r   r   r)   r	   [N#zInvalid statementz5Expected newline or end of document after a statement)replaceOutput
NestedDictFlagsmake_safe_parse_float
skip_charsTOML_WS
IndexErrorKEY_INITIAL_CHARSkey_value_ruleflagsfinalize_pendingcreate_list_rulecreate_dict_rulesuffixed_errskip_commentdatadict)r5   r,   srcposoutheadercharsecond_chars           r   r2   r2   E   s   
 ))FD
!C
C
uw
'CF'4K c7+	s8D 4<1HC$$ c3DCS#w/CS[#*-cAg, II&&(c!.sC=V.sC=VS#w/CS[sC)<== 3$	s8D 4<SQ  	qa   	F 88==I	  #"#"  	 88==	s6   D& E
 	E &	EE
EE	E<;E<c                  H    e Zd ZdZdZdZddZddZddZddZ	ddZ
dd	Zy
)r=   z)Flags that map to parsed keys/namespaces.r   r	   c                0    i | _         t               | _        y r   )_flagsset_pending_flagsselfs    r   __init__zFlags.__init__   s    ')47Er*   c                >    | j                   j                  ||f       y r   )rV   addrX   keyflags      r   add_pendingzFlags.add_pending   s    d,r*   c                    | j                   D ]  \  }}| j                  ||d        | j                   j                          y )NF	recursive)rV   rU   clearr\   s      r   rE   zFlags.finalize_pending   s?    ,, 	1ICHHS$%H0	1!!#r*   c                v    | j                   }|d d D ]  }||vr y ||   d   } |j                  |d   d        y )Nnested)rT   pop)rX   r]   contks       r   	unset_allzFlags.unset_all   sL    {{Sb 	%A}78$D	% 	R$r*   c                   | j                   }|d d |d   }}|D ]'  }||vrt               t               i d||<   ||   d   }) ||vrt               t               i d||<   ||   |rdnd   j                  |       y )Nre   )rD   recursive_flagsrf   rf   rl   rD   )rT   rU   r[   )rX   r]   r^   rb   rh   
key_parentkey_stemri   s           r   rU   z	Flags.set   s    {{"3BxRH
 	%A}$'EcerRQ78$D	% 4'*uRTUDNXI(7CGGMr*   c                    |sy| j                   }|d d D ]  }||vr y||   }||d   v r y|d   } |d   }||v r||   }||d   v xs ||d   v S y)NFre   rl   Trf   rD   )rT   )rX   r]   r^   rh   ri   
inner_contrn   s          r   is_z	Flags.is_   s    {{Sb 	(A}aJz"344h'D	( r7t>D4=(KDD9J4K,KKr*   NreturnNone)r]   r   r^   intrs   rt   r]   r   rs   rt   )r]   r   r^   ru   rb   boolrs   rt   )r]   r   r^   ru   rs   rw   )r%   r&   r'   r(   FROZENEXPLICIT_NESTrY   r_   rE   rj   rU   rq   r)   r*   r   r=   r=      s2    3 F M:-$
 	Nr*   r=   c                  4    e Zd ZddZdd	 	 	 	 	 ddZd	dZy)
r<   c                    i | _         y r   )rK   rW   s    r   rY   zNestedDict.__init__   s	    $&	r*   Taccess_listsc                   | j                   }|D ]B  }||vri ||<   ||   }|rt        |t              r|d   }t        |t               r9t        d       |S )Nre   z There is no nest behind this key)rK   
isinstancelistKeyError)rX   r]   r}   rh   ri   s        r   get_or_create_nestzNestedDict.get_or_create_nest   si     II 	CA}Q7D
4 6BxdD)ABB	C r*   c                    | j                  |d d       }|d   }||v r2||   }t        |t              st        d      |j	                  i        y i g||<   y )Nre   z/An object other than list found behind this key)r   r   r   r   append)rX   r]   rh   last_keylist_s        r   append_nest_to_listzNestedDict.append_nest_to_list   s_    &&s3Bx0r7tNEeT*PQQLL TDNr*   Nrr   )r]   r   r}   rw   rs   rK   rv   )r%   r&   r'   rY   r   r   r)   r*   r   r<   r<      s2    ' "	 	
 
"	"r*   r<   c                  "    e Zd ZU ded<   ded<   y)r;   r<   rJ   r=   rD   N)r%   r&   r'   __annotations__r)   r*   r   r;   r;      s    
Lr*   r;   c                P    	 | |   |v r|dz  }| |   |v r|S # t         $ r Y |S w xY w)Nr	   )rA   )rL   rM   charss      r   r?   r?      sJ    #h%1HC #h% J  Js    	%%c                   	 | j                  ||      }|j	                  | ||       s'| |   |vr|dz  }| |   |vrt        | |d| |         |S # t        $ r! t        |       }|rt        | |d|      d Y fw xY w)Nz	Expected r	   zFound invalid character )index
ValueErrorlenrH   
isdisjoint)rL   rM   expecterror_onerror_on_eofnew_poss         r   
skip_untilr      s    O))FC( s3w/0#hh&1HC #hh&3'?C|%LMMN  Oc(sGy
-CD$N Os   A 'A;:A;c                l    	 | |   }|dk(  rt        | |dz   dt        d      S |S # t         $ r d }Y +w xY w)Nr9   r	   r   Fr   r   )rA   r   ILLEGAL_COMMENT_CHARS)rL   rM   rP   s      r   rI   rI     sS    s8 s{q$)>U
 	
 J  s   % 33c                R    	 |}t        | |t              }t        | |      }||k(  r|S 'r   )r?   TOML_WS_AND_NEWLINErI   )rL   rM   pos_before_skips      r   skip_comments_and_array_wsr     s7    
c#673$/!J r*   c                (   |dz  }t        | |t              }t        | |      \  }}|j                  j	                  |t
        j                        s*|j                  j	                  |t
        j                        rt        | |d| d      |j                  j                  |t
        j                  d       	 |j                  j                  |       | j                  d|      st        | |d      |dz   |fS # t        $ r t        | |d      d w xY w)	Nr	   zCannot declare z twiceFra   Cannot overwrite a value]z.Expected ']' at the end of a table declaration)r?   r@   	parse_keyrD   rq   r=   ry   rx   rH   rU   rJ   r   r   
startswithrL   rM   rN   r]   s       r   rG   rG     s    1HC
S#w
'Cc"HC
yy}}S%--.#))--U\\2R3se6%BCCIIMM#u**eM<K##C( >>#s#3%UVV7C<  K3%?@dJKs   8C9 9Dc                   |dz  }t        | |t              }t        | |      \  }}|j                  j	                  |t
        j                        rt        | |d|       |j                  j                  |       |j                  j                  |t
        j                  d       	 |j                  j                  |       | j                  d|      st        | |d      |dz   |fS # t        $ r t        | |d      d w xY w)N   "Cannot mutate immutable namespace Fra   r   z]]z0Expected ']]' at the end of an array declaration)r?   r@   r   rD   rq   r=   rx   rH   rj   rU   ry   rJ   r   r   r   r   s       r   rF   rF   .  s    1HC
S#w
'Cc"HC
yy}}S%,,'3'I#%OPPIIIIMM#u**eM<K$$S) >>$$3%WXX7C<  K3%?@dJKs   (C) )Dc                   t        | ||      \  }}d d d   }}|z   }fdt        dt                    D        }	|	D ]f  }
|j                  j	                  |
t
        j                        rt        | |d|
       |j                  j                  |
t
        j                         h |j                  j	                  |t
        j                        rt        | |d|       	 |j                  j                  |      }||v rt        | |d      t        |t        t        f      r/|j                  j!                  z   t
        j                  d       |||<   |S # t        $ r t        | |d      d w xY w)	Nre   c              3  .   K   | ]  }d | z     y wr   r)   )r   r   rO   r]   s     r   r   z!key_value_rule.<locals>.<genexpr>J  s     LAvBQ/Ls   r	   zCannot redefine namespace r   r   Tra   )parse_key_value_pairranger   rD   rq   r=   ry   rH   r_   rx   rJ   r   r   r   rK   r   rU   )rL   rM   rN   rO   r,   valuerm   rn   abs_key_parentrelative_path_cont_keyscont_keynestr]   s      `        @r   rC   rC   C  sn    +3[AOCes8SWJj(NLq#c(9KL+ =99==5#6#67sC+EhZ)PQQ 			h(;(;<= yy}}^U\\2:>:JK
 	
Kxx**>: 43%?@@%$&		fslELLDADNJ  K3%?@dJKs   (E   E8c                    t        | |      \  }}	 | |   }|dk7  rt        | |d      |dz  }t        | |t              }t        | ||      \  }}|||fS # t        $ r d }Y Jw xY w)N=z,Expected '=' after a key in a key/value pairr	   )r   rA   rH   r?   r@   parse_value)rL   rM   r,   r]   rP   r   s         r   r   r   e  s     c"HCs8 s{3%STT1HC
S#w
'CS#{3JCU?  s   A A! A!c                   t        | |      \  }}|f}t        | |t              }	 	 | |   }|dk7  r||fS |dz  }t        | |t              }t        | |      \  }}||fz  }t        | |t              }L# t        $ r d }Y Sw xY w)N.r	   )parse_key_partr?   r@   rA   )rL   rM   key_partr]   rP   s        r   r   r   u  s    "3,MC{C
S#w
'C
	"3xD 3;8Oqc7+&sC0X{c7+   	D	s   A1 1A?>A?c                    	 | |   }|t        v r|}t        | |t              }|| || fS |dk(  rt        | |      S |dk(  rt	        | |      S t        | |d      # t         $ r d }Y ^w xY w)N'r!   z(Invalid initial character for a key part)rA   BARE_KEY_CHARSr?   parse_literal_strparse_one_line_basic_strrH   )rL   rM   rP   	start_poss       r   r   r     s    s8 ~	c>2C	#&&&s{ c**s{'S11
sC!K
LL  s   A A&%A&c                (    |dz  }t        | |d      S )Nr	   F	multiline)parse_basic_strrL   rM   s     r   r   r     s    1HC3u55r*   c                X   |dz  }g }t        | |      }| j                  d|      r|dz   |fS 	 t        | ||      \  }}|j                  |       t        | |      }| ||dz    }|dk(  r|dz   |fS |dk7  rt	        | |d      |dz  }t        | |      }| j                  d|      r|dz   |fS ~)Nr	   r   ,zUnclosed array)r   r   r   r   rH   )rL   rM   r,   arrayvalcs         r   parse_arrayr     s    1HCE
$S#
.C
~~c3Qw~
sC5SS(c2cAg87E>!8sC)9::q(c2>>#s#7E>! r*   c                   |dz  }t               }t               }t        | |t              }| j	                  d|      r|dz   |j
                  fS 	 t        | ||      \  }}}|d d |d   }}|j                  |t        j                        rt        | |d|       	 |j                  |d      }	||	v rt        | |d	|      ||	|<   t        | |t              }| ||dz    }
|
dk(  r|dz   |j
                  fS |
d
k7  rt        | |d      t        |t
        t        f      r"|j                  |t        j                  d       |dz  }t        | |t              }	# t        $ r t        | |d      d w xY w)Nr	   }Tre   r   Fr|   r   zDuplicate inline table key r   zUnclosed inline tablera   )r<   r=   r?   r@   r   rK   r   rq   rx   rH   r   r   r   r   rU   )rL   rM   r,   nested_dictrD   r]   r   rm   rn   r   r   s              r   parse_inline_tabler     s   1HC,KGE
S#w
'C
~~c3Qw((((
.sCES%"3BxRH
99S%,,'sC+McU)STT	O11*51QD tsC+Fxl)STTXc7+cAg87K,,,,8sC)@AAedD\*IIc5<<4I8qc7++   	OsC)CD$N	Os   E E0Fr   c               t   | ||dz    }|dz  }|rL|dv rH|dk7  r.t        | |t              }	 | |   }|dk7  rt        | |d      |dz  }t        | |t              }|dfS |dk(  rt        | |d	      S |d
k(  rt        | |d      S 	 |t        |   fS # t        $ r |dfcY S w xY w# t        $ r t        | |d      d w xY w)Nr   >   \	\ \
r    r   zUnescaped '\' in a stringr	   z\u   z\U   )r?   r@   rA   rH   r   parse_hex_charBASIC_STR_ESCAPE_REPLACEMENTSr   )rL   rM   r   	escape_idrP   s        r   parse_basic_str_escaper     s    C#'"I1HCY"99 S#w/C3x t|"3-IJJ1HCc#67BwEc3**Ec3**M1)<<<  Bw  M3%ABLMs   B 
B BBB7c                    t        | |d      S )NTr   )r   r   s     r    parse_basic_str_escape_multiliner     s    !#sd;;r*   c                    | |||z    }t        |      |k7  st        j                  |      st        | |d      ||z  }t	        |d      }t        |      st        | |d      |t        |      fS )NzInvalid hex value   z/Escaped character is not a Unicode scalar value)r   HEXDIGIT_CHARS
issupersetrH   ru   is_unicode_scalar_valuer   )rL   rM   hex_lenhex_strhex_ints        r   r   r     sw    #g&G
7|wn&?&?&H3%8997NC'2G"7+3%VWWGr*   c                L    |dz  }|}t        | |dt        d      }|dz   | || fS )Nr	   r   Tr   )r   ILLEGAL_LITERAL_STR_CHARS)rL   rM   r   s      r   r   r      s>    1HCI
S# 9C 7C	#&&&r*   c               ,   |dz  }| j                  d|      r|dz  }|r!d}t        | |dt        d      }| || }|dz   }nd}t        | |d	      \  }}| j                  ||      s||fS |dz  }| j                  ||      s|||z   fS |dz  }|||d
z  z   fS )N   r   r	   r   '''Tr   r!   r   r   )r   r   #ILLEGAL_MULTILINE_LITERAL_STR_CHARSr   )rL   rM   literaldelimend_posresults         r   parse_multiline_strr   	  s    1HC
~~dC q8
 S!k%c3$?V >>%%F{1HC>>%%FUN""1HC%!)$$$r*   c               l   |rt         }t        }nt        }t        }d}|}	 	 | |   }|dk(  r4|s|dz   || || z   fS | j                  d|      r|dz   || || z   fS |dz  }@|dk(  r|| || z  } || |      \  }}||z  }|}a||v rt        | |d|      |dz  }z# t        $ r t        | |d      d w xY w)	Nr   zUnterminated stringr!   r	   """r   r"   zIllegal character )!ILLEGAL_MULTILINE_BASIC_STR_CHARSr   ILLEGAL_BASIC_STR_CHARSr   rA   rH   r   )	rL   rM   r   r   parse_escapesr   r   rP   parsed_escapes	            r   r   r   (  s   48*.FI
	Js8D 3;QwYs); ;;;~~eS)QwYs); ;;;1HC4<c)C((F!.sC!8Cm#FI8sC+=dX)FGGq)   	JsC)>?TI	Js   B B3c                   	 | |   }|dk(  r,| j                  d|      rt        | |d      S t        | |      S |dk(  r,| j                  d|      rt        | |d      S t	        | |      S |dk(  r| j                  d	|      r|d
z   dfS |dk(  r| j                  d|      r|dz   dfS |dk(  rt        | ||      S |dk(  rt        | ||      S t        j                  | |      }|r	 t        |      }|j                         |fS t        j                  | |      }|r|j                         t        |      fS t        j                  | |      }|r|j                         t!        ||      fS | ||dz    }	|	dv r|dz    ||	      fS | ||d
z    }
|
dv r|d
z    ||
      fS t        | |d      # t         $ r d }Y w xY w# t        $ r}t        | |d      |d }~ww xY w)Nr!   r   F)r   r   r   Tttruer   ffalse   r8   {zInvalid date or datetimer   >   infnan>   +inf+nan-inf-nanzInvalid value)rA   r   r   r   r   r   r   r
   matchr   r   rH   endr   r   r   r   )rL   rM   r,   rP   datetime_matchdatetime_objelocaltime_matchnumber_matchfirst_three
first_fours              r   r   r   H  s1   s8 s{>>%%&sC??'S11 s{>>%%&sC>> c** s{>>&#&7D= s{>>'3'7E>! s{3[11 s{!#sK88 !&&sC0N	L,^<L !!#\11"((c2O""$&8&III
 ??3,L!?<#MMM cC!G$Kn$QwK000S37#J55QwJ///
sC
11y  L  	LsC)CD!K	Ls)   F% "F7 %F43F47	G GGc                :    dd}t        | d || |       d      S )zZReturn a `TOMLDecodeError` where error message is suffixed with
    coordinates in source.c                    |t        |       k\  ry| j                  dd|      dz   }|dk(  r|dz   }n|| j                  dd|      z
  }d| d| S )Nzend of documentr   r   r	   zline z	, column )r   countrindex)rL   rM   linecolumns       r   
coord_reprz suffixed_err.<locals>.coord_repr  sa    #c(?$yyq#&*191WF3::dAs33FtfIfX..r*   z (at ))rL   strrM   r   rs   r  )r$   )rL   rM   msgr  s       r   rH   rH     s)    / cU%
3(<'=Q?@@r*   c                F    d| cxk  xr dk  nc xs d| cxk  xr dk  S c S )Nr   i  i   i r)   )	codepoints    r   r   r     s'    #e#G))Fw)FG)FGr*   c                0      t         u rt         S d fd}|S )a%  A decorator to make `parse_float` safe.

    `parse_float` must not return dicts or lists, because these types
    would be mixed with parsed TOML tables and arrays, thus confusing
    the parser. The returned decorated callable raises `ValueError`
    instead of returning illegal types.
    c                Z     |       }t        |t        t        f      rt        d      |S )Nz*parse_float must not return dicts or lists)r   rK   r   r   )	float_strfloat_valuer,   s     r   safe_parse_floatz/make_safe_parse_float.<locals>.safe_parse_float  s-    !),kD$<0IJJr*   )r  r  rs   r   )float)r,   r  s   ` r   r>   r>     s     e r*   )r3   r   r,   r   rs   dict[str, Any])r5   r  r,   r   rs   r  )rL   r  rM   r   r   zIterable[str]rs   r   )rL   r  rM   r   r   r  r   zfrozenset[str]r   rw   rs   r   )rL   r  rM   r   rs   r   )rL   r  rM   r   rN   r;   rs   tuple[Pos, Key])rL   r  rM   r   rN   r;   rO   r   r,   r   rs   r   )rL   r  rM   r   r,   r   rs   ztuple[Pos, Key, Any])rL   r  rM   r   rs   r  )rL   r  rM   r   rs   tuple[Pos, str])rL   r  rM   r   r,   r   rs   ztuple[Pos, list])rL   r  rM   r   r,   r   rs   ztuple[Pos, dict])rL   r  rM   r   r   rw   rs   r  )rL   r  rM   r   r   ru   rs   r  )rL   r  rM   r   r   rw   rs   r  )rL   r  rM   r   r,   r   rs   ztuple[Pos, Any])rL   r  rM   r   r  r  rs   r$   )r  ru   rs   rw   )r,   r   rs   r   )G
__future__r   collections.abcr   stringtypesr   typingr   r   r   _rer
   r   r   r   r   r   _typesr   r   r   	frozensetr   r   
ASCII_CTRLr   r   r   r   r   r@   r   ascii_lettersdigitsr   rB   	hexdigitsr   r   r   r$   r  r6   r2   r=   r<   r;   r?   r   rI   r   rG   rF   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   r>   r)   r*   r   <module>r(     s  
 # $  " , ,  ) (1uRy11Ic#h4GG
 %y6 $.61B$B !3 &G #/ 
E
	$/ 6//&--?$FG"Yu%55 6++, 0
! ;j ; 8= 	- 38 ?D7 7t" "DZ 
		 
   	,	$*	#-0?ID	%/ ,$M 6
"0,B .3M	MM&*MM:<'%>@A2	A2A2%/A2A2HA"Hr*   