o
    bT                     @   sZ  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mZ d dlZd dlmZmZmZ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&ee'gef Z(ee'df Z)e*Z+G dd de,Z-e.ddede(dee'ef fddZ/e.dde'de(dee'ef fdd Z0G d!d" d"Z1G d#d$ d$Z2G d%d& d&e
Z3d'e'd(e+d)e	e' de+fd*d+Z4d'e'd(e+d,e'd-ee' d.e5de+fd/d0Z6d'e'd(e+de+fd1d2Z7d'e'd(e+de+fd3d4Z8d'e'd(e+d5e3dee+e)f fd6d7Z9d'e'd(e+d5e3dee+e)f fd8d9Z:d'e'd(e+d5e3d:e)de(de+fd;d<Z;d'e'd(e+de(dee+e)ef fd=d>Z<d'e'd(e+dee+e)f fd?d@Z=d'e'd(e+dee+e'f fdAdBZ>d'e'd(e+dee+e'f fdCdDZ?d'e'd(e+de(dee+e@f fdEdFZAd'e'd(e+de(dee+eBf fdGdHZCdIdJd'e'd(e+dKe5dee+e'f fdLdMZDd'e'd(e+dee+e'f fdNdOZEd'e'd(e+dPe*dee+e'f fdQdRZFd'e'd(e+dee+e'f fdSdTZGd'e'd(e+dUe5dee+e'f fdVdWZHd'e'd(e+dKe5dee+e'f fdXdYZId'e'd(e+de(dee+ef fdZd[ZJd'e'd(e+d\e'de-fd]d^ZKd_e*de5fd`daZLdS )b    N)MappingProxyType)	AnyBinaryIOCallableDict	FrozenSetIterable
NamedTupleOptionalTuple)RE_DATETIMERE_LOCALTIME	RE_NUMBERmatch_to_datetimematch_to_localtimematch_to_numberc                 c   s    | ]}t |V  qd S N)chr).0i r   L/var/www/secure340b-portal/env/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 )TOMLDecodeErrorz0An error raised if a document is not valid TOML.N)__name__
__module____qualname____doc__r   r   r   r   r"   =   s    r"   parse_floatfpr(   returnc                C   sD   |   }z| }W n ty   tdt |}Y nw t||dS )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.r'   )readdecodeAttributeErrorwarningswarnDeprecationWarningloads)r)   r(   Zs_bytessr   r   r   loadA   s   r3   r2   c                C   sX  |  dd}d}tt t }d}	 t||t}z|| }W n ty*   Y |jjS w |dkr4|d7 }q|tv rGt|||||}t||t}n>|dkr{z||d  }W n ty^   d}Y nw |dkrlt	|||\}}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   r   r   T   [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)r2   r(   srcposoutheadercharsecond_charr   r   r   r1   P   sV   
"
r1   c                   @   s~   e Zd ZdZdZdZdddZdeddfd	d
Zdedede	ddfddZ
dede	deddfddZdede	defddZdS )r:   z)Flags that map to parsed keys/namespaces.r   r4   r*   Nc                 C   
   i | _ d S r   _flagsselfr   r   r   __init__   s   
zFlags.__init__keyc                 C   sF   | j }|d d D ]}||vr d S || d }q	||d d  d S )Nnested)rN   pop)rP   rR   contkr   r   r   	unset_all   s   zFlags.unset_allhead_keyrel_keyflagc                 C   s   | j }|D ]}||vrt t i d||< || d }q|D ] }||v r.|| d | n
|ht i d||< || d }qd S )Nflagsrecursive_flagsrT   rT   r]   rN   setadd)rP   rY   rZ   r[   rV   rW   r   r   r   set_for_relative_key   s   zFlags.set_for_relative_key	recursivec                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 )NrS   r\   rT   r^   r]   r_   )rP   rR   r[   rc   rV   
key_parentkey_stemrW   r   r   r   r`      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 )NFrS   r^   TrT   r]   rM   )rP   rR   r[   rV   rW   
inner_contre   r   r   r   is_   s   
z	Flags.is_r*   N)r#   r$   r%   r&   FROZENEXPLICIT_NESTrQ   KeyrX   intrb   boolr`   rg   r   r   r   r   r:      s    
r:   c                   @   sD   e Zd ZdddZdddededefd	d
ZdeddfddZdS )r9   r*   Nc                 C   rL   r   )rE   rO   r   r   r   rQ      s   
zNestedDict.__init__Taccess_listsrR   ro   c                C   sT   | j }|D ]"}||vri ||< || }|rt|tr|d }t|t s'tdq|S )NrS   z There is no nest behind this key)rE   
isinstancelistKeyError)rP   rR   ro   rV   rW   r   r   r   get_or_create_nest   s   
zNestedDict.get_or_create_nestc                 C   s`   |  |d d }|d }||v r)|| }z|i  W d S  ty(   tdw i g||< d S )NrS   z/An object other than list found behind this key)rs   appendr-   rr   )rP   rR   rV   last_keylist_r   r   r   append_nest_to_list   s   zNestedDict.append_nest_to_listrh   )	r#   r$   r%   rQ   rk   rm   rE   rs   rw   r   r   r   r   r9      s    

r9   c                   @   s   e Zd ZU eed< eed< dS )r8   rD   r]   N)r#   r$   r%   r9   __annotations__r:   r   r   r   r   r8      s   
 r8   rF   rG   charsc                 C   sB   z| | |v r|d7 }| | |v sW |S W |S  t y    Y |S w )Nr4   )r=   )rF   rG   ry   r   r   r   r;      s   r;   expecterror_onerror_on_eofc             	   C   s   z|  ||}W n ty!   t| }|rt| |d|dY nw || || sG| | |vr;|d7 }| | |vs1t| |d| | d|S )Nz
Expected "r    r4   zFound invalid character ")index
ValueErrorlenrB   
isdisjoint)rF   rG   rz   r{   r|   new_posr   r   r   
skip_until   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 )Nr6   r4   r   Fr{   r|   )r=   r   ILLEGAL_COMMENT_CHARS)rF   rG   rJ   r   r   r   rC     s   rC   c                 C   s*   	 |}t | |t}t| |}||kr|S qr   )r;   TOML_WS_AND_NEWLINErC   )rF   rG   pos_before_skipr   r   r   skip_comments_and_array_ws!  s   
r   rH   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yJ   t| |dw | d|sWt| |d|d |fS )	Nr4   zCan not declare z twiceFrc   Can not overwrite a value]z.Expected "]" at the end of a table declaration)r;   r<   	parse_keyr]   rg   r:   rj   ri   rB   r`   rD   rs   rr   
startswithrF   rG   rH   rR   r   r   r   rA   *  s    rA   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yG   t| |dw | d|sTt| |d|d |fS )N   #Can not mutate immutable namespace Fr   r   z]]z0Expected "]]" at the end of an array declaration)r;   r<   r   r]   rg   r:   ri   rB   rX   r`   rj   rD   rw   rr   r   r   r   r   r   r@   <  s   r@   rI   c                 C   s   t | ||\}}}|d d |d }}|| }	|j|	tjr)t| |d|	 |j||tj z|j	|	}
W n t
yG   t| |dw ||
v rRt| |dt|ttfre|jj|| tjdd ||
|< |S )NrS   r   r   Tr   )parse_key_value_pairr]   rg   r:   ri   rB   rb   rj   rD   rs   rr   rp   rE   rq   r`   )rF   rG   rH   rI   r(   rR   valuerd   re   abs_key_parentnestr   r   r   r?   Q  s&   r?   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 pairr4   )r   r=   rB   r;   r<   parse_value)rF   rG   r(   rR   rJ   r   r   r   r   r   k  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.r4   )parse_key_partr;   r<   r=   )rF   rG   key_partrR   rJ   r   r   r   r   {  s"   
r   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)N'r    z(Invalid initial character for a key part)r=   BARE_KEY_CHARSr;   parse_literal_strparse_one_line_basic_strrB   )rF   rG   rJ   	start_posr   r   r   r     s   

r   c                 C   s   |d7 }t | |ddS )Nr4   F	multiline)parse_basic_strrF   rG   r   r   r   r     s   r   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)Nr4   r   T,zUnclosed array)r   r   r   rt   rB   )rF   rG   r(   arrayvalcr   r   r   parse_array  s&   



r   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yX   t	| |dw ||	v rgt	| |d	| 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)Nr4   }TrS   r   Frn   r   zDuplicate inline table key "r    r   zUnclosed inline tabler   )r9   r:   r;   r<   r   rE   r   rg   ri   rB   rs   rr   rp   rq   r`   )rF   rG   r(   nested_dictr]   rR   r   rd   re   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y|   t|dkrvt| |dt| |dw )Nr   >   \	\ \
r    r   zUnescaped "\" in a stringr4   z\u   z\U   Unterminated string)	r;   r<   r=   rB   r   parse_hex_charBASIC_STR_ESCAPE_REPLACEMENTSrr   r   )rF   rG   r   	escape_idrJ   r   r   r   parse_basic_str_escape  s4   r   c                 C   s   t | |ddS )NTr   )r   r   r   r   r    parse_basic_str_escape_multiline  s   r   hex_lenc                 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
issupersetrB   rl   is_unicode_scalar_valuer   )rF   rG   r   hex_strhex_intr   r   r   r     s   
r   c                 C   s2   |d7 }|}t | |dtdd}|d | || fS )Nr4   r   Tr   )r   ILLEGAL_LITERAL_STR_CHARS)rF   rG   r   r   r   r   r     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   r4   r   '''Tr   r    r   r   )r   r   #ILLEGAL_MULTILINE_LITERAL_STR_CHARSr   )rF   rG   r   delimend_posresultr   r   r   parse_multiline_str  s.   
r   c          	      C   s   |rt }t}nt}t}d}|}	 z| | }W n ty#   t| |dw |dkrM|s6|d || ||  fS | d|rH|d || ||  fS |d7 }q|dkrg|| || 7 }|| |\}}||7 }|}q||v rut| |d	|d|d7 }q)
Nr   Tr   r    r4   """r   r!   zIllegal character ")!ILLEGAL_MULTILINE_BASIC_STR_CHARSr   ILLEGAL_BASIC_STR_CHARSr   r=   rB   r   )	rF   rG   r   r{   parse_escapesr   r   rJ   parsed_escaper   r   r   r   0  s<   r   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 t| |}|rzt|}W n tyy   t	| |dw |
 |fS t| |}|r|
 t|fS t| |}|r|
 t||fS |dkrt| ||S |dkrt| ||S | ||d  }|dv r|d ||fS | ||d
  }	|	dv r|d
 ||	fS t	| |d)Nr    r   F)r   r   r   Tttruer   ffalse   zInvalid date or datetimer5   {r   >   infnan>   +inf+nan-inf-nanzInvalid value)r=   r   r   r   r   r   matchr   r~   rB   endr   r   r   r   r   r   )
rF   rG   r(   rJ   datetime_matchdatetime_objlocaltime_matchnumber_matchfirst_three
first_fourr   r   r   r   P  sX   

r   msgc                 C   s0   dt dtdt fdd}t| d|| | dS )zZReturn a `TOMLDecodeError` where error message is suffixed with
    coordinates in source.rF   rG   r*   c                 S   sV   |t | krdS | dd|d }|dkr|d }n	|| dd| }d| d| S )Nzend of documentr   r   r4   zline z	, column )r   countrindex)rF   rG   linecolumnr   r   r   
coord_repr  s   
z suffixed_err.<locals>.coord_reprz (at ))strPosr"   )rF   rG   r   r   r   r   r   rB     s   
rB   	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   )Mstringtypesr   typingr   r   r   r   r   r   r	   r
   r   r.   Z	tomli._rer   r   r   r   r   r   	frozensetranger   
ASCII_CTRLr   r   r   r   r   r<   r   ascii_lettersdigitsr   r>   	hexdigitsr   r   r   
ParseFloatrk   rl   r   r~   r"   floatr3   r1   r:   r9   r8   r;   rm   r   rC   r   rA   r@   r?   r   r   r   r   rq   r   rE   r   r   r   r   r   r   r   r   rB   r   r   r   r   r   <module>   s    , "	
$$@>#	
"	"

""!

""	" 

B