
    q&fT                        d dl 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 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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 jF                  e jH                  z   dz         Z%e% ed      z  Z& ee jN                        Z( edd
dddddd      Z) G d de*      Z+e,ddededee-ef   fdZ.e,dde-dedee-ef   fdZ/ G d d       Z0 G d! d"      Z1 G d# d$e	      Z2d%e-d&ed'ee-   defd(Z3d%e-d&ed)e-d*ee-   d+e4defd,Z5d%e-d&edefd-Z6d%e-d&edefd.Z7d%e-d&ed/e2deeef   fd0Z8d%e-d&ed/e2deeef   fd1Z9d%e-d&ed/e2d2ededefd3Z:d%e-d&ededeeeef   fd4Z;d%e-d&edeeef   fd5Z<d%e-d&edeee-f   fd6Z=d%e-d&edeee-f   fd7Z>d%e-d&ededeee?f   fd8Z@d%e-d&ededeeeAf   fd9ZBd:d;d%e-d&ed<e4deee-f   fd=ZCd%e-d&edeee-f   fd>ZDd%e-d&ed?eEdeee-f   fd@ZFd%e-d&edeee-f   fdAZGd%e-d&edBe4deee-f   fdCZHd%e-d&ed<e4deee-f   fdDZId%e-d&ededeeef   fdEZJd%e-d&edFe-de+fdGZKdHeEde4fdIZLy)J    N)MappingProxyType)AnyBinaryIODict	FrozenSetIterable
NamedTupleOptionalTuple   )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     D/usr/lib/python3/dist-packages/mercurial/thirdparty/tomli/_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'   /   s    :r-   r'   parse_floatfpr/   returnc                    | j                         }	 |j                         }t        ||      S # t        $ r! t        j                  dt
        d       |}Y 6w xY w)z%Parse TOML from a binary file object.zText file object support is deprecated in favor of binary file objects. Use `open("foo.toml", "rb")` to open the file in binary mode.   )
stacklevelr.   )readdecodeAttributeErrorwarningswarnDeprecationWarningloads)r0   r/   s_bytesss       r   loadr>   3   s]    ggiG	NN ,,  M		
 s   / 'AAr=   c                   | j                  dd      }d}t        t               t                     }d}	 t	        ||t
              }	 ||   }|dk(  r|dz  }#|t        v r!t        |||||      }t	        ||t
              }nX|dk(  rA	 ||dz      }|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
skip_charsTOML_WS
IndexErrorKEY_INITIAL_CHARSkey_value_rulecreate_list_rulecreate_dict_rulesuffixed_errskip_commentdatadict)r=   r/   srcposoutheadercharsecond_chars           r   r;   r;   C   s   
 ))FD
!C
C
uw
'CF c7+	s8D 4<1HC$$ c3DCS#w/CS[#-0q\ c!.sC=V.sC=VS#w/CS[sC)<== 3$	s8D 4<SQ  	q_   	D 88==G	  #"#   	 88==	s6   D D% $D6 	D"!D"%D32D36	EEc                   t    e Zd ZdZdZdZddZdeddfdZd	ed
ede	ddfdZ
dede	deddfdZdede	defdZy)rE   z)Flags that map to parsed keys/namespaces.r   r   r1   Nc                     i | _         y r   _flagsselfs    r   __init__zFlags.__init__   s	    ')r-   keyc                 v    | j                   }|d d D ]  }||vr y ||   d   } |j                  |d   d        y )Nnested)rZ   pop)r\   r^   contks       r   	unset_allzFlags.unset_all   sL    {{Sb 	%A}78$D	% 	R$r-   head_keyrel_keyflagc                     | j                   }|D ]'  }||vrt               t               i d||<   ||   d   }) |D ]8  }||v r||   d   j                  |       n|ht               i d||<   ||   d   }: y )Nflagsrecursive_flagsra   ra   rk   rZ   setadd)r\   rf   rg   rh   rc   rd   s         r   set_for_relative_keyzFlags.set_for_relative_key   s    {{ 	%A}$'EcerRQ78$D	%  	%ADyQ $$T*%)FsuPRSQ78$D	%r-   	recursivec                    | j                   }|d d |d   }}|D ]'  }||vrt               t               i d||<   ||   d   }) ||vrt               t               i d||<   ||   |rdnd   j                  |       y )Nr`   rj   ra   rl   rk   rm   )r\   r^   rh   rq   rc   
key_parentkey_stemrd   s           r   rn   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)NFr`   rl   Tra   rk   rY   )r\   r^   rh   rc   rd   
inner_contrt   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-   r1   N)r(   r)   r*   r+   FROZENEXPLICIT_NESTr]   r   re   intrp   boolrn   rw   r,   r-   r   rE   rE      s    3 F M* S  T  %S %3 %c %d %	Ns 	N# 	NT 	Nd 	Ns # $ r-   rE   c                   >    e Zd Zd
dZdddededefdZdeddfd	Zy)rD   r1   Nc                     i | _         y r   )rP   r[   s    r   r]   zNestedDict.__init__   s	    $&	r-   Taccess_listsr^   r   c                    | j                   }|D ]B  }||vri ||<   ||   }|rt        |t              r|d   }t        |t               r9t        d       |S )Nr`   z There is no nest behind this key)rP   
isinstancelistKeyError)r\   r^   r   rc   rd   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 r||   }	 |j                  i        y i g||<   y # t        $ r t        d      w xY w)Nr`   z/An object other than list found behind this key)r   appendr7   r   )r\   r^   rc   last_keylist_s        r   append_nest_to_listzNestedDict.append_nest_to_list   sp    &&s3Bx0r7tNERR  !TDN " RPQQRs	   = Arx   )	r(   r)   r*   r]   r   r|   rP   r   r   r,   r-   r   rD   rD      s@    ' "	 	
 
"
"s 
"t 
"r-   rD   c                   "    e Zd ZU eed<   eed<   y)rC   rO   rk   N)r(   r)   r*   rD   __annotations__rE   r,   r-   r   rC   rC      s    
Lr-   rC   rQ   rR   charsc                 P    	 | |   |v r|dz  }| |   |v r|S # t         $ r Y |S w xY w)Nr   )rH   )rQ   rR   r   s      r   rF   rF      sJ    #h%1HC #h% J  Js    	%%expecterror_onerror_on_eofc                    	 | 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lenrM   
isdisjoint)rQ   rR   r   r   r   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)NrA   r   r    Fr   r   )rH   r   ILLEGAL_COMMENT_CHARS)rQ   rR   rU   s      r   rN   rN     sS    !#h s{q$)>U
 	
 J  s   % 33c                 R    	 |}t        | |t              }t        | |      }||k(  r|S 'r   )rF   TOML_WS_AND_NEWLINErN   )rQ   rR   pos_before_skips      r   skip_comments_and_array_wsr     s7    
c#673$/!J r-   rS   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Can not declare z twiceFrq   Can not overwrite a value]z.Expected "]" at the end of a table declaration)rF   rG   	parse_keyrk   rw   rE   rz   ry   rM   rn   rO   r   r   
startswithrQ   rR   rS   r^   s       r   rL   rL     s    1HC
S#w
'Cc"HC
yy}}S%--.#))--U\\2R3'7uF%CDDIIMM#u**eM<L##C( >>#s#3%UVV7C<  L3%@AtKL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)Nr3   #Can not mutate immutable namespace Fr   r   z]]z0Expected "]]" at the end of an array declaration)rF   rG   r   rk   rw   rE   ry   rM   re   rn   rz   rO   r   r   r   r   s       r   rK   rK   /  s    1HC
S#w
'Cc"HC
yy}}S%,,'3'J3%%PQQIIIIMM#u**eM<L$$S) >>$$3%WXX7C<  L3%@AtKLs   (C) )DrT   c                 4   t        | ||      \  }}}|d d |d   }}||z   }	|j                  j                  |	t        j                        rt        | |d|	       |j                  j                  ||t        j                         	 |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)Nr`   r   r   Tr   )parse_key_value_pairrk   rw   rE   ry   rM   rp   rz   rO   r   r   r   rP   r   rn   )rQ   rR   rS   rT   r/   r^   valuers   rt   abs_key_parentnests              r   rJ   rJ   D  s    +3[AOCes8SWJj(N
yy}}^U\\2;N;KL
 	
 II""630C0CDLxx**>: 43%@AA%$&		fslELLDADNJ  L3%@AtKLs   C? ?D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   rH   rM   rF   rG   parse_value)rQ   rR   r/   r^   rU   r   s         r   r   r   ^  s     c"HC!#h 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_partrF   rG   rH   )rQ   rR   key_partr^   rU   s        r   r   r   n  s    "3,MC{C
S#w
'C
	"%c(D 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)rH   BARE_KEY_CHARSrF   parse_literal_strparse_one_line_basic_strrM   )rQ   rR   rU   	start_poss       r   r   r     s    !#h ~	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rQ   rR   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   rM   )rQ   rR   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   }Tr`   r   Fr   r   zDuplicate inline table key r   zUnclosed inline tabler   )rD   rE   rF   rG   r   rP   r   rw   ry   rM   r   r   r   r   rn   )rQ   rR   r/   nested_dictrk   r^   r   rs   rt   r   r   s              r   parse_inline_tabler     s   1HC,KGE
S#w
'C
~~c3Qw((((
.sCES%"3BxRH
99S%,,'sC+Nse)TUU	P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++   	PsC)DE4O	Ps   E E0Fr   r   c                   | ||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k7  rt        | |d      d t        | |d      d w xY w)Nr3   >   \	\ \
r    r    zUnescaped "\" in a stringr   z\u   z\U   Unterminated string)	rF   rG   rH   rM   r   parse_hex_charBASIC_STR_ESCAPE_REPLACEMENTSr   r   )rQ   rR   r   	escape_idrU   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y>QsC)>?TI3%ABLMs   B 
B BB4Cc                     t        | |d      S )NTr   )r   r   s     r    parse_basic_str_escape_multiliner     s    !#sd;;r-   hex_lenc                     | |||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
issupersetrM   r{   is_unicode_scalar_valuer   )rQ   rR   r   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)rQ   rR   r   s      r   r   r     s>    1HCI
S# 9C 7C	#&&&r-   literalc                ,   |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   r3   )r   r   #ILLEGAL_MULTILINE_LITERAL_STR_CHARSr   )rQ   rR   r   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   r   r$   r   """r   r%   zIllegal character )!ILLEGAL_MULTILINE_BASIC_STR_CHARSr   ILLEGAL_BASIC_STR_CHARSr   rH   rM   r   )	rQ   rR   r   r   parse_escapesr   r   rU   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 t        j                  | |      }|r	 t        |      }|j                         |fS t        j                  | |      }|r|j                         t        |      fS t        j                  | |      }|r|j                         t        ||      fS |dk(  rt        | ||      S |dk(  rt!        | ||      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   zInvalid date or datetimer@   {r   >   infnan>   +inf+nan-inf-nanzInvalid value)rH   r   r   r   r   r   matchr   r   rM   endr   r   r   r   r   r   )rQ   rR   r/   rU   datetime_matchdatetime_objelocaltime_matchnumber_matchfirst_three
first_fours              r   r   r   C  s0   !#h
 s{>>%%&sC??'S11 s{>>%%&sC>> c** s{>>&#&7D= s{>>'3'7E>! !&&sC0N	L,^<L !!#\11"((c2O""$&8&III
 ??3,L!?<#MMM s{3[11 s{!#sK88 cC!G$Kn$QwK000S37#J55QwJ///
sC
11u  8  	LsC)CD!K	Ls)   F% >F7 %F43F47	G GGmsgc                 ^    dt         dt        dt         fd}t        | d || |       d      S )zZReturn a `TOMLDecodeError` where error message is suffixed with
    coordinates in source.rQ   rR   r1   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)rQ   rR   linecolumns       r   
coord_reprz suffixed_err.<locals>.coord_repr  sa    #c(?$yyq#&*191WF3::dAs33FtfIfX..r-   z (at ))strr   r'   )rQ   rR   r  r  s       r   rM   rM     s>    / /# /# / cU%
3(<'=Q?@@r-   	codepointc                 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,   )r  s    r   r   r     s'    #e#G))Fw)FG)FGr-   )Mstringtypesr   typingr   r   r   r   r   r	   r
   r   r8   _rer   r   r   r   r   r   _typesr   r   r   	frozensetranger   
ASCII_CTRLr   r   r   r   r   rG   r   ascii_lettersdigitsr   rI   	hexdigitsr   r   r   r'   floatr  r>   r;   rE   rD   rC   rF   r|   r   rN   r   rL   rK   rJ   r   r   r   r   r   r   rP   r   r   r   r{   r   r   r   r   r   rM   r   r,   r-   r   <module>r     s    " X X X   ) (1uRy11Ic#h4GG
 %y6 $.61B$B !3 &G #/ 
E
	$/ 6//&--?$FG"Yu%55 6++, 0
! ;j ; 5: -X -z -d38n -  05 =S =* =c3h =@; ;| "  "FZ 
C c (3- C 		 
 n  	,	c 	 	 	C c c # C f sCx $# C f sCx *	#-0?I4	%/
3S= ,3 ,S ,U38_ ,$M M# M%S/ M 6# 6C 6E#s(O 6
"S "s " "c4i@P "0,C ,c ,
 ,uSRVYGW ,B .3M	MM&*M
38_M><# <C <E#s(O < #  c3h '3 'S 'U38_ '%S %s % %sCx %> 3 d uS#X @?2	?2?2%/?2
38_?2DAc A A# A/ A"Hs Ht Hr-   