o
    2gS_                  	   @  sh  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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	d
 edD eedB Zeed Zeed ZeZeZeZedZ e edB Z!eej"ej# d Z$e$edB Z%eej&Z'eddddddddZ(G dd dZ)G dd de*Z+e,ddvd$d%Z-e,ddwd(d)Z.G d*d+ d+Z/G d,d- d-Z0G d.d/ d/e
Z1dxd5d6Z2dyd<d=Z3dzd>d?Z4dzd@dAZ5d{dDdEZ6d{dFdGZ7d|dJdKZ8d}dMdNZ9d~dOdPZ:ddRdSZ;ddTdUZ<ddWdXZ=ddZd[Z>d\d]dd_d`Z?ddadbZ@ddedfZAddgdhZBddjdkZCddldmZDddodpZEddrdsZFddtduZGdS )    )annotations)IterableN)MappingProxyType)IOAny
NamedTuple   )RE_DATETIMERE_LOCALTIME	RE_NUMBERmatch_to_datetimematch_to_localtimematch_to_number)Key
ParseFloatPosc                 c  s    | ]}t |V  qd S N)chr.0i r   E/home/garg/my-data/venv/lib/python3.10/site-packages/tomli/_parser.py	<genexpr>   s    r          	z	
z 	
z-_z"'"\)z\bz\tz\nz\fz\rz\"z\\c                   @  s   e Zd ZdZdS )DEPRECATED_DEFAULTzjSentinel to be used as default arg during deprecation
    period of TOMLDecodeError's free-form arguments.N)__name__
__module____qualname____doc__r   r   r   r   r#   6   s    r#   c                   @  s"   e Zd ZdZeeefdd	d
ZdS )TOMLDecodeErrora:  An error raised if a document is not valid TOML.

    Adds the following attributes to ValueError:
    msg: The unformatted error message
    doc: The TOML document being parsed
    pos: The index of doc where parsing failed
    lineno: The line corresponding to pos
    colno: The column corresponding to pos
    msgstrdocposr   argsr   c           	      G  s  |st |trt |trt |tsBtjdtdd |tur#|g|R }|tur-|g|R }|tur7|g|R }tj| g|R   d S |	dd|d }|dkrT|d }n	||
dd| }|t|krfd}nd| d	| }| d
| d}t| | || _|| _|| _|| _|| _d S )Nz{Free-form arguments for TOMLDecodeError are deprecated. Please set 'msg' (str), 'doc' (str) and 'pos' (int) arguments only.   )
stacklevelr   r   r   zend of documentzline z	, column z (at ))
isinstancer*   intwarningswarnDeprecationWarningr#   
ValueError__init__countrindexlenr)   r+   r,   linenocolno)	selfr)   r+   r,   r-   r;   r<   
coord_reprerrmsgr   r   r   r7   F   sF   

zTOMLDecodeError.__init__N)r)   r*   r+   r*   r,   r   r-   r   )r$   r%   r&   r'   r#   r7   r   r   r   r   r(   ;   s    r(   parse_float__fp	IO[bytes]rA   r   returndict[str, Any]c                C  s:   |   }z| }W n ty   tddw t||dS )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)rB   rA   bsr   r   r   loadv   s   rM   __sr*   c             	   C  s  z|  dd}W n ttfy   tdt| j ddw d}tt t }d}t|}	 t	||t
}z|| }W n tyF   Y |jjS w |dkrP|d	7 }q-|tv rct|||||}t	||t
}nC|d
krz||d	  }W n tyz   d}Y nw |j  |d
krt|||\}}nt|||\}}t	||t
}n
|dkrtd||t||}z|| }W n ty   Y |jjS w |dkrtd|||d	7 }q.)zParse TOML from a string.z
r   zExpected str object, not ''Nr   r   Tr   [#zInvalid statementz5Expected newline or end of document after a statement)replacerH   rI   typer&   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_ruler(   skip_commentdatadict)rN   rA   srcr,   outheadercharsecond_charr   r   r   rJ      sj   
#

rJ   c                   @  sT   e Zd ZdZdZdZdddZdddZdddZdddZ	dddZ
dddZdS )rV   z)Flags that map to parsed keys/namespaces.r   r   rD   Nonec                 C  s   i | _ t | _d S r   )_flagsset_pending_flagsr=   r   r   r   r7      s   zFlags.__init__keyr   flagr2   c                 C  s   | j ||f d S r   )rl   addr=   rn   ro   r   r   r   add_pending   s   zFlags.add_pendingc                 C  s.   | j D ]\}}| j||dd q| j   d S )NF	recursive)rl   rk   clearrq   r   r   r   r^      s   zFlags.finalize_pendingc                 C  sF   | j }|d d D ]}||vr d S || d }q	||d d  d S )Nnested)rj   pop)r=   rn   contkr   r   r   	unset_all   s   zFlags.unset_allrt   boolc                C  s   | j }|d d |d }}|D ]}||vr t t i d||< || d }q||vr5t t i d||< || |r<dnd | d S )Nrv   )r]   recursive_flagsrw   rw   r}   r]   )rj   rk   rp   )r=   rn   ro   rt   ry   
key_parentkey_stemrz   r   r   r   rk      s   z	Flags.setc                 C  s   |sdS | j }|d d D ]}||vr dS || }||d v r# dS |d }q|d }||v r@|| }||d v p?||d v S dS )NFrv   r}   Trw   r]   )rj   )r=   rn   ro   ry   rz   
inner_contr   r   r   r   is_   s   
z	Flags.is_NrD   ri   )rn   r   ro   r2   rD   ri   rn   r   rD   ri   )rn   r   ro   r2   rt   r|   rD   ri   )rn   r   ro   r2   rD   r|   )r$   r%   r&   r'   FROZENEXPLICIT_NESTr7   rr   r^   r{   rk   r   r   r   r   r   rV      s    




rV   c                   @  s0   e Zd ZdddZdddddZdddZdS )rU   rD   ri   c                 C  s
   i | _ d S r   )rc   rm   r   r   r   r7     s   
zNestedDict.__init__Taccess_listsrn   r   r   r|   rc   c                C  sT   | j }|D ]"}||vri ||< || }|rt|tr|d }t|t s'tdq|S )Nrv   z There is no nest behind this key)rc   r1   listKeyError)r=   rn   r   ry   rz   r   r   r   get_or_create_nest  s   
zNestedDict.get_or_create_nestc                 C  sX   |  |d d }|d }||v r%|| }t|tstd|i  d S i g||< d S )Nrv   z/An object other than list found behind this key)r   r1   r   r   append)r=   rn   ry   last_keylist_r   r   r   append_nest_to_list  s   
zNestedDict.append_nest_to_listNr   )rn   r   r   r|   rD   rc   r   )r$   r%   r&   r7   r   r   r   r   r   r   rU     s
    
rU   c                   @  s   e Zd ZU ded< ded< dS )rT   rU   rb   rV   r]   N)r$   r%   r&   __annotations__r   r   r   r   rT   %  s   
 rT   rd   r,   r   charsIterable[str]c                 C  sB   z| | |v r|d7 }| | |v sW |S W |S  t y    Y |S w )Nr   )rZ   )rd   r,   r   r   r   r   rX   *  s   rX   expecterror_onfrozenset[str]error_on_eofr|   c                C  s   z|  ||}W n ty!   t| }|rtd|| |d Y nw || || sF| | |vr;|d7 }| | |vs1td| | | ||S )Nz	Expected r   zFound invalid character )indexr6   r:   r(   
isdisjoint)rd   r,   r   r   r   new_posr   r   r   
skip_until3  s   r   c                 C  sF   z| | }W n t y   d }Y nw |dkr!t| |d dtddS |S )NrQ   r   r   Fr   r   )rZ   r   ILLEGAL_COMMENT_CHARS)rd   r,   rg   r   r   r   ra   I  s   ra   c                 C  s*   	 |}t | |t}t| |}||kr|S qr   )rX   TOML_WS_AND_NEWLINEra   )rd   r,   pos_before_skipr   r   r   skip_comments_and_array_wsU  s   
r   re   tuple[Pos, Key]c                 C  s   |d7 }t | |t}t| |\}}|j|tjs!|j|tjr+td| d| ||jj	|tjdd z|j
| W n tyK   td| |d w | d|sXtd| ||d |fS )	Nr   zCannot declare z twiceFrs   Cannot overwrite a value]z.Expected ']' at the end of a table declaration)rX   rY   	parse_keyr]   r   rV   r   r   r(   rk   rb   r   r   
startswithrd   r,   re   rn   r   r   r   r`   ^  s     r`   c                 C  s   |d7 }t | |t}t| |\}}|j|tjr"td| | ||j| |jj	|tj
dd z|j| W n tyH   td| |d w | d|sUtd| ||d |fS )Nr.   "Cannot mutate immutable namespace Frs   r   z]]z0Expected ']]' at the end of an array declaration)rX   rY   r   r]   r   rV   r   r(   r{   rk   r   rb   r   r   r   r   r   r   r   r_   r  s"   r_   rf   r   c                   s   t | ||\}}d d d }} | } fddtdtD }	|	D ]}
|j|
tjr<td|
 | ||j|
tj q)|j|tj	rVtd| | |z|j
|}W n tyl   td| |d w ||v rwtd| |t|ttfr|jj  tj	dd	 |||< |S )
Nrv   c                 3  s     | ]} d |  V  qd S r   r   r   rf   rn   r   r   r     s    z!key_value_rule.<locals>.<genexpr>r   zCannot redefine namespace r   r   Trs   )parse_key_value_pairranger:   r]   r   rV   r   r(   rr   r   rb   r   r   r1   rc   r   rk   )rd   r,   re   rf   rA   valuer~   r   abs_key_parentrelative_path_cont_keyscont_keynestr   r   r   r\     s.   r\   tuple[Pos, Key, Any]c                 C  st   t | |\}}z| | }W n ty   d }Y nw |dkr#td| ||d7 }t| |t}t| ||\}}|||fS )N=z,Expected '=' after a key in a key/value pairr   )r   rZ   r(   rX   rY   parse_value)rd   r,   rA   rn   rg   r   r   r   r   r     s   
r   c                 C  s   t | |\}}|f}t| |t}	 z| | }W n ty"   d }Y nw |dkr+||fS |d7 }t| |t}t | |\}}||f7 }t| |t}q)NT.r   )parse_key_partrX   rY   rZ   )rd   r,   key_partrn   rg   r   r   r   r     s"   
r   tuple[Pos, str]c                 C  s|   z| | }W n t y   d }Y nw |tv r&|}t| |t}|| || fS |dkr/t| |S |dkr8t| |S td| |)NrO   r!   z(Invalid initial character for a key part)rZ   BARE_KEY_CHARSrX   parse_literal_strparse_one_line_basic_strr(   )rd   r,   rg   	start_posr   r   r   r     s   

r   c                 C  s   |d7 }t | |ddS )Nr   F	multiline)parse_basic_strrd   r,   r   r   r   r     s   r   tuple[Pos, list]c                 C  s   |d7 }g }t | |}| d|r|d |fS 	 t| ||\}}|| t | |}| ||d  }|dkr<|d |fS |dkrFtd| ||d7 }t | |}| d|r[|d |fS q)Nr   r   T,zUnclosed array)r   r   r   r   r(   )rd   r,   rA   arrayvalcr   r   r   parse_array  s&   



r   tuple[Pos, dict]c                 C  sR  |d7 }t  }t }t| |t}| d|r|d |jfS 	 t| ||\}}}|d d |d }}||tjrBt	d| | |z	|j
|dd}	W n tyY   t	d| |d w ||	v rgt	d	|| |||	|< t| |t}| ||d  }
|
dkr|d |jfS |
d
krt	d| |t|ttfr|j|tjdd |d7 }t| |t}q)Nr   }Trv   r   Fr   r   zDuplicate inline table key r   zUnclosed inline tablers   )rU   rV   rX   rY   r   rc   r   r   r   r(   r   r   r1   r   rk   )rd   r,   rA   nested_dictr]   rn   r   r~   r   r   r   r   r   r   parse_inline_table  s<   r   Fr   r   c                C  s   | ||d  }|d7 }|rH|dv rH|dkr>t | |t}z| | }W n ty/   |df Y S w |dkr:td| ||d7 }t | |t}|dfS |dkrRt| |d	S |d
kr\t| |dS z|t| fW S  tyq   td| |d w )Nr.   >   \	\ \
r    r   zUnescaped '\' in a stringr   z\u   z\U   )rX   rY   rZ   r(   r   parse_hex_charBASIC_STR_ESCAPE_REPLACEMENTSr   )rd   r,   r   	escape_idrg   r   r   r   parse_basic_str_escape  s0   r   c                 C  s   t | |ddS )NTr   )r   r   r   r   r    parse_basic_str_escape_multiline7  s   r   hex_lenr2   c                 C  sd   | |||  }t ||kst|std| |||7 }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
issupersetr(   r2   is_unicode_scalar_valuer   )rd   r,   r   hex_strhex_intr   r   r   r   ;  s   
r   c                 C  s2   |d7 }|}t | |dtdd}|d | || fS )Nr   rO   Tr   )r   ILLEGAL_LITERAL_STR_CHARS)rd   r,   r   r   r   r   r   H  s   
r   literalc                C  s   |d7 }|  d|r|d7 }|r&d}t| |dtdd}| || }|d }nd}t| |dd	\}}|  ||s;||fS |d7 }|  ||sK||| fS |d7 }|||d
  fS )N   r   r   rO   '''Tr   r!   r   r.   )r   r   #ILLEGAL_MULTILINE_LITERAL_STR_CHARSr   )rd   r,   r   delimend_posresultr   r   r   parse_multiline_strQ  s.   
r   c          	      C  s   |rt }t}nt}t}d}|}	 z| | }W n ty$   td| |d w |dkrN|s7|d || ||  fS | d|rI|d || ||  fS |d7 }q|dkrh|| || 7 }|| |\}}||7 }|}q||v rutd	|| ||d7 }q)
Nr   TzUnterminated stringr!   r   """r   r"   zIllegal character )!ILLEGAL_MULTILINE_BASIC_STR_CHARSr   ILLEGAL_BASIC_STR_CHARSr   rZ   r(   r   )	rd   r,   r   r   parse_escapesr   r   rg   parsed_escaper   r   r   r   p  s<   r   tuple[Pos, Any]c              
   C  s  z| | }W n t y   d }Y nw |dkr(| d|r#t| |ddS t| |S |dkr>| d|r9t| |ddS t| |S |dkrN| d	|rN|d
 dfS |dkr^| d|r^|d dfS |dkrht| ||S |dkrrt| ||S t| |}|rzt	|}W n t
y } ztd| ||d }~ww | |fS t| |}|r| t|fS t| |}|r| t||fS | ||d  }	|	dv r|d ||	fS | ||d
  }
|
dv r|d
 ||
fS td| |)Nr!   r   F)r   rO   r   Tttruer   ffalse   rP   {zInvalid date or datetimer   >   infnan>   +inf+nan-inf-nanzInvalid value)rZ   r   r   r   r   r   r   r	   matchr   r6   r(   endr
   r   r   r   )rd   r,   rA   rg   datetime_matchdatetime_objelocaltime_matchnumber_matchfirst_three
first_fourr   r   r   r     sZ   

r   	codepointc                 C  s0   d|   ko	dkn  pd|   kodkS   S )Nr   i  i   i r   )r   r   r   r   r     s   0r   c                   s    t u rt S d fd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.
    	float_strr*   rD   r   c                   s"    | }t |ttfrtd|S )Nz*parse_float must not return dicts or lists)r1   rc   r   r6   )r   float_valuer@   r   r   safe_parse_float  s   z/make_safe_parse_float.<locals>.safe_parse_floatN)r   r*   rD   r   )float)rA   r   r   r@   r   rW     s   	rW   )rB   rC   rA   r   rD   rE   )rN   r*   rA   r   rD   rE   )rd   r*   r,   r   r   r   rD   r   )rd   r*   r,   r   r   r*   r   r   r   r|   rD   r   )rd   r*   r,   r   rD   r   )rd   r*   r,   r   re   rT   rD   r   )rd   r*   r,   r   re   rT   rf   r   rA   r   rD   r   )rd   r*   r,   r   rA   r   rD   r   )rd   r*   r,   r   rD   r   )rd   r*   r,   r   rD   r   )rd   r*   r,   r   rA   r   rD   r   )rd   r*   r,   r   rA   r   rD   r   )rd   r*   r,   r   r   r|   rD   r   )rd   r*   r,   r   r   r2   rD   r   )rd   r*   r,   r   r   r|   rD   r   )rd   r*   r,   r   rA   r   rD   r   )r   r2   rD   r|   )rA   r   rD   r   )H
__future__r   collections.abcr   stringtypesr   typingr   r   r   r3   _rer	   r
   r   r   r   r   _typesr   r   r   	frozensetr   r   
ASCII_CTRLr   r   r   r   r   rY   r   ascii_lettersdigitsr   r[   	hexdigitsr   r   r#   r6   r(   r  rM   rJ   rV   rU   rT   rX   r   ra   r   r`   r_   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   r   r   r   r   <module>   sv    "
;G:"

	


	


"




!



	

 
D