a
    !fiX                  	   @  sD  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	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e(Z)e*dddddd d!Z+e*dd"ddd#d$d%Z,G d&d' d'Z-G d(d) d)Z.G d*d+ d+e
Z/d"d,d-d,d.d/d0Z0d"d,d"d1d2d,d3d4d5Z1d"d,d,d6d7d8Z2d"d,d,d6d9d:Z3d"d,d+d;d<d=d>Z4d"d,d+d;d<d?d@Z5d"d,d+dAdd,dBdCdDZ6d"d,ddEdFdGdHZ7d"d,d;d6dIdJZ8d"d,dKd6dLdMZ9d"d,dKd6dNdOZ:d"d,ddPdFdQdRZ;d"d,ddSdFdTdUZ<dVdWd"d,d2dKdXdYdZZ=d"d,dKd6d[d\Z>d"d,d]dKd^d_d`Z?d"d,dKd6dadbZ@d"d,d2dKdcdddeZAd"d,d2dKdXdfdgZBd"d,ddhdFdidjZCd"d,d"ddkdldmZDd]d2dndodpZEdddqdrdsZFdS )t    )annotations)IterableN)MappingProxyType)AnyBinaryIO
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   N/var/www/html/python-backend/venv/lib/python3.9/site-packages/tomli/_parser.py	<genexpr>       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$   5   s   r$   parse_floatr   r   zdict[str, Any])__fpr*   returnc                C  s>   |   }z| }W n ty0   tddY n0 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)r+   r*   bsr   r   r   load9   s    r4   str)__sr*   r,   c                C  sx  |  dd}d}tt t }d}t|}t||t}z|| }W n tyZ   Y qpY n0 |dkrn|d7 }q*|tv rt	|||||}t||t}n|dkrz||d  }W n ty   d}Y n0 |j
  |dkrt|||\}}nt|||\}}t||t}n|dkrt||d	t||}z|| }W n tyN   Y qpY n0 |dkrft||d
|d7 }q*|jjS )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)r6   r*   srcposoutheadercharsecond_charr   r   r   r1   E   sN    







r1   c                   @  s|   e Zd ZdZdZdZddddZdd	dd
ddZddddZdddddZ	dd	dddddZ
dd	dd
ddZdS )r<   z)Flags that map to parsed keys/namespaces.r   r   Noner,   c                 C  s   i | _ t | _d S r   )_flagsset_pending_flagsselfr   r   r   __init__   s    zFlags.__init__r   int)keyflagr,   c                 C  s   | j ||f d S r   )rU   addrW   rZ   r[   r   r   r   add_pending   s    zFlags.add_pendingc                 C  s.   | j D ]\}}| j||dd q| j   d S )NF	recursive)rU   rT   clearr]   r   r   r   rD      s    zFlags.finalize_pendingrZ   r,   c                 C  sF   | j }|d d D ]}||vr$ d S || d }q||d d  d S )Nnested)rS   pop)rW   rZ   contkr   r   r   	unset_all   s    zFlags.unset_allbool)rZ   r[   r`   r,   c                C  s   | j }|d d |d  }}|D ],}||vr@t t i d||< || d }q ||vrjt t i d||< || |rxdnd | d S )Nrc   )rC   recursive_flagsrd   rd   rj   rC   )rS   rT   r\   )rW   rZ   r[   r`   rf   
key_parentkey_stemrg   r   r   r   rT      s    z	Flags.setc                 C  s   |sdS | j }|d d D ]4}||vr, dS || }||d v rF dS |d }q|d }||v r|| }||d v p~||d v S dS )NFrc   rj   Trd   rC   )rS   )rW   rZ   r[   rf   rg   
inner_contrl   r   r   r   is_   s    
z	Flags.is_N)r%   r&   r'   r(   FROZENEXPLICIT_NESTrX   r^   rD   rh   rT   rn   r   r   r   r   r<      s   r<   c                   @  sB   e Zd ZddddZddddd	d
ddZdddddZdS )r;   rQ   rR   c                 C  s
   i | _ d S r   )rJ   rV   r   r   r   rX      s    zNestedDict.__init__Taccess_listsr   ri   rJ   )rZ   rr   r,   c                C  sT   | j }|D ]D}||vri ||< || }|r<t|tr<|d }t|t s
tdq
|S )Nrc   z There is no nest behind this key)rJ   
isinstancelistKeyError)rW   rZ   rr   rf   rg   r   r   r   get_or_create_nest   s    

zNestedDict.get_or_create_nestrb   c                 C  sV   |  |d d }|d }||v rH|| }t|ts<td|i  n
i g||< d S )Nrc   z/An object other than list found behind this key)rv   rs   rt   ru   append)rW   rZ   rf   last_keylist_r   r   r   append_nest_to_list   s    
zNestedDict.append_nest_to_listN)r%   r&   r'   rX   rv   rz   r   r   r   r   r;      s   r;   c                   @  s   e Zd ZU ded< ded< dS )r:   r;   rI   r<   rC   N)r%   r&   r'   __annotations__r   r   r   r   r:      s   
r:   r   zIterable[str])rK   rL   charsr,   c                 C  s2   z| | |v r|d7 }qW n t y,   Y n0 |S )Nr   )r@   )rK   rL   r|   r   r   r   r>      s    r>   zfrozenset[str]ri   )rK   rL   expecterror_onerror_on_eofr,   c                C  s   z|  ||}W n2 tyB   t| }|r>t| |d|d Y n0 || || s| | |vrl|d7 }qVt| |d| | |S )Nz	Expected r   zFound invalid character )index
ValueErrorlenrG   
isdisjoint)rK   rL   r}   r~   r   new_posr   r   r   
skip_until   s    
r   rK   rL   r,   c                 C  sF   z| | }W n t y"   d }Y n0 |dkrBt| |d dtddS |S )Nr8   r   r   Fr~   r   )r@   r   ILLEGAL_COMMENT_CHARS)rK   rL   rO   r   r   r   rH     s    
rH   c                 C  s,   |}t | |t}t| |}||kr |S q d S r   )r>   TOML_WS_AND_NEWLINErH   )rK   rL   pos_before_skipr   r   r   skip_comments_and_array_ws  s
    
r   ztuple[Pos, Key])rK   rL   rM   r,   c                 C  s   |d7 }t | |t}t| |\}}|j|tjsB|j|tjrVt| |d| d|jj	|tjdd z|j
| W n  ty   t| |dd Y n0 | d|st| |d|d |fS )	Nr   zCannot declare z twiceFr_   Cannot overwrite a value]z.Expected ']' at the end of a table declaration)r>   r?   	parse_keyrC   rn   r<   rp   ro   rG   rT   rI   rv   ru   
startswithrK   rL   rM   rZ   r   r   r   rF     s     rF   c                 C  s   |d7 }t | |t}t| |\}}|j|tjrDt| |d| |j| |jj	|tj
dd z|j| W n  ty   t| |dd Y n0 | d|st| |d|d |fS )N   "Cannot mutate immutable namespace Fr_   r   z]]z0Expected ']]' at the end of an array declaration)r>   r?   r   rC   rn   r<   ro   rG   rh   rT   rp   rI   rz   ru   r   r   r   r   r   rE   .  s    rE   r   )rK   rL   rM   rN   r*   r,   c                   s&  t | ||\}}d d d  }} | } fddtdtD }	|	D ]6}
|j|
tjrxt| |d|
 |j|
tj qR|j|tj	rt| |d| z|j
|}W n  ty   t| |dd Y n0 ||v rt| |dt|ttfr|jj  tj	dd	 |||< |S )
Nrc   c                 3  s   | ]} d |  V  qd S r   r   r   rN   rZ   r   r   r   J  r   z!key_value_rule.<locals>.<genexpr>r   zCannot redefine namespace r   r   Tr_   )parse_key_value_pairranger   rC   rn   r<   rp   rG   r^   ro   rI   rv   ru   rs   rJ   rt   rT   )rK   rL   rM   rN   r*   valuerk   rl   abs_key_parentrelative_path_cont_keyscont_keynestr   r   r   rB   C  s,    rB   ztuple[Pos, Key, Any])rK   rL   r*   r,   c                 C  st   t | |\}}z| | }W n ty0   d }Y n0 |dkrFt| |d|d7 }t| |t}t| ||\}}|||fS )N=z,Expected '=' after a key in a key/value pairr   )r   r@   rG   r>   r?   parse_value)rK   rL   r*   rZ   rO   r   r   r   r   r   e  s    
r   c                 C  s   t | |\}}|f}t| |t}z| | }W n tyB   d }Y n0 |dkrT||fS |d7 }t| |t}t | |\}}||f7 }t| |t}q d S )N.r   )parse_key_partr>   r?   r@   )rK   rL   key_partrZ   rO   r   r   r   r   u  s    

r   ztuple[Pos, str]c                 C  s   z| | }W n t y"   d }Y n0 |tv rL|}t| |t}|| || fS |dkr^t| |S |dkrpt| |S t| |dd S )N'r"   z(Invalid initial character for a key part)r@   BARE_KEY_CHARSr>   parse_literal_strparse_one_line_basic_strrG   )rK   rL   rO   	start_posr   r   r   r     s    


r   c                 C  s   |d7 }t | |ddS )Nr   F	multiline)parse_basic_strrK   rL   r   r   r   r     s    r   ztuple[Pos, list]c                 C  s   |d7 }g }t | |}| d|r.|d |fS t| ||\}}|| t | |}| ||d  }|dkrv|d |fS |dkrt| |d|d7 }t | |}| d|r.|d |fS q.d S )Nr   r   ,zUnclosed array)r   r   r   rw   rG   )rK   rL   r*   arrayvalcr   r   r   parse_array  s"    



r   ztuple[Pos, dict]c                 C  s^  |d7 }t  }t }t| |t}| d|r:|d |jfS t| ||\}}}|d d |d  }}||tjrt	| |d| z|j
|dd}	W n  ty   t	| |dd Y n0 ||	v rt	| |d|||	|< t| |t}| ||d  }
|
dkr|d |jfS |
d	kr"t	| |d
t|ttfrD|j|tjdd |d7 }t| |t}q:d S )Nr   }rc   r   Frq   r   zDuplicate inline table key r   zUnclosed inline tableTr_   )r;   r<   r>   r?   r   rJ   r   rn   ro   rG   rv   ru   rs   rt   rT   )rK   rL   r*   nested_dictrC   rZ   r   rk   rl   r   r   r   r   r   parse_inline_table  s6    

r   Fr   )rK   rL   r   r,   c                C  s   | ||d  }|d7 }|r|dv r|dkr|t | |t}z| | }W n ty^   |df Y S 0 |dkrtt| |d|d7 }t | |t}|dfS |dkrt| |d	S |d
krt| |dS z|t| fW S  ty   t| |dd Y n0 d S )Nr   >   z\ z\	\
r    r   zUnescaped '\' in a stringr   z\u   z\U   )r>   r?   r@   rG   r   parse_hex_charBASIC_STR_ESCAPE_REPLACEMENTSru   )rK   rL   r   	escape_idrO   r   r   r   parse_basic_str_escape  s,    r   c                 C  s   t | |ddS )NTr   )r   r   r   r   r    parse_basic_str_escape_multiline  s    r   rY   )rK   rL   hex_lenr,   c                 C  sd   | |||  }t ||ks&t|s2t| |d||7 }t|d}t|sXt| |d|t|fS )NzInvalid hex value   z/Escaped character is not a Unicode scalar value)r   HEXDIGIT_CHARS
issupersetrG   rY   is_unicode_scalar_valuer   )rK   rL   r   hex_strhex_intr   r   r   r     s    
r   c                 C  s2   |d7 }|}t | |dtdd}|d | || fS )Nr   r   Tr   )r   ILLEGAL_LITERAL_STR_CHARS)rK   rL   r   r   r   r   r      s    
r   )rK   rL   literalr,   c                C  s   |d7 }|  d|r|d7 }|rLd}t| |dtdd}| || }|d }nd}t| |dd	\}}|  ||sv||fS |d7 }|  ||s||| fS |d7 }|||d
  fS )N   r   r   r   '''Tr   r"   r   r   )r   r   #ILLEGAL_MULTILINE_LITERAL_STR_CHARSr   )rK   rL   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yJ   t| |dd Y n0 |dkr|sp|d || ||  fS | d|r|d || ||  fS |d7 }q|dkr|| || 7 }|| |\}}||7 }|}q||v rt| |d||d7 }qd S )	Nr   zUnterminated stringr"   r   """r   r#   zIllegal character )!ILLEGAL_MULTILINE_BASIC_STR_CHARSr   ILLEGAL_BASIC_STR_CHARSr   r@   rG   r   )	rK   rL   r   r~   parse_escapesr   r   rO   parsed_escaper   r   r   r   (  s6    r   ztuple[Pos, Any]c              
   C  s  z| | }W n t y"   d }Y n0 |dkrP| d|rFt| |ddS t| |S |dkr|| d|rrt| |ddS t| |S |dkr| d	|r|d
 dfS |dkr| d|r|d dfS |dkrt| ||S |dkrt| ||S t| |}|rDzt	|}W n4 t
y6 } zt| |d|W Y d }~n
d }~0 0 | |fS t| |}|rf| t|fS t| |}|r| t||fS | ||d  }	|	dv r|d ||	fS | ||d
  }
|
dv r|d
 ||
fS t| |dd S )Nr"   r   F)r   r   r   Tttruer   ffalse   r7   {zInvalid date or datetimer   >   infnan>   z-infz+nanz+infz-nanzInvalid value)r@   r   r   r   r   r   r   r	   matchr   r   rG   endr
   r   r   r   )rK   rL   r*   rO   datetime_matchdatetime_objelocaltime_matchnumber_matchfirst_three
first_fourr   r   r   r   H  sT    


$

r   )rK   rL   msgr,   c                 C  s,   dddddd}t | d|| | dS )zZReturn a `TOMLDecodeError` where error message is suffixed with
    coordinates in source.r5   r   r   c                 S  sV   |t | krdS | dd|d }|dkr4|d }n|| dd| }d| d| S )Nzend of documentr   r   r   zline z	, column )r   countrindex)rK   rL   linecolumnr   r   r   
coord_repr  s    
z suffixed_err.<locals>.coord_reprz (at ))r$   )rK   rL   r   r   r   r   r   rG     s    
rG   )	codepointr,   c                 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    r   )r*   r,   c                   s$    t u rt S dd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.
    r5   r   )	float_strr,   c                   s"    | }t |ttfrtd|S )Nz*parse_float must not return dicts or lists)rs   rJ   rt   r   )r   float_valuer)   r   r   safe_parse_float  s    z/make_safe_parse_float.<locals>.safe_parse_float)float)r*   r   r   r)   r   r=     s    	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   rA   	hexdigitsr   r   r   r$   r   r4   r1   r<   r;   r:   r>   r   rH   r   rF   rE   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   rG   r   r=   r   r   r   r   <module>   sr    "
B:"		"!	 D