U
    ){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   L/var/www/html/Darija-Ai-API/env/lib/python3.8/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#   5   s   r#   parse_floatr   r   zdict[str, Any])__fpr)   returnc                C  s@   |   }z| }W n tk
r2   tddY nX 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    r3   str)__sr)   r+   c                C  s~  |  dd}d}tt t }d}t|}t||t}z|| }W n tk
r\   Y qvY nX |dkrp|d7 }q*|tkrt	|||||}t||t}n|dkrz||d  }W n tk
r   d}Y nX |j
  |dkrt|||\}}nt|||\}}t||t}n|dkr"t||d	t||}z|| }W n tk
rT   Y qvY nX |dkrlt||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)r5   r)   srcposoutheadercharsecond_charr   r   r   r0   E   sR    






  
r0   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   )rT   addrV   rY   rZ   r   r   r   add_pending   s    zFlags.add_pendingc                 C  s.   | j D ]\}}| j||dd q| j   d S )NF	recursive)rT   rS   clearr\   r   r   r   rC      s    zFlags.finalize_pendingrY   r+   c                 C  sF   | j }|d d D ]}||kr$ d S || d }q||d d  d S )Nnested)rR   pop)rV   rY   contkr   r   r   	unset_all   s    zFlags.unset_allbool)rY   rZ   r_   r+   c                C  s   | j }|d d |d  }}|D ],}||kr@t t i d||< || d }q ||krjt t i d||< || |rxdnd | d S )Nrb   )rB   recursive_flagsrc   rc   ri   rB   )rR   rS   r[   )rV   rY   rZ   r_   re   
key_parentkey_stemrf   r   r   r   rS      s    z	Flags.setc                 C  s   |sdS | j }|d d D ]4}||kr, dS || }||d krF dS |d }q|d }||kr|| }||d kp~||d kS dS )NFrb   ri   Trc   rB   )rR   )rV   rY   rZ   re   rf   
inner_contrk   r   r   r   is_   s    
z	Flags.is_N)r$   r%   r&   r'   FROZENEXPLICIT_NESTrW   r]   rC   rg   rS   rm   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:   rP   rQ   c                 C  s
   i | _ d S r   )rI   rU   r   r   r   rW      s    zNestedDict.__init__Taccess_listsr   rh   rI   )rY   rq   r+   c                C  sT   | j }|D ]D}||kri ||< || }|r<t|tr<|d }t|t s
tdq
|S )Nrb   z There is no nest behind this key)rI   
isinstancelistKeyError)rV   rY   rq   re   rf   r   r   r   get_or_create_nest   s    

zNestedDict.get_or_create_nestra   c                 C  sV   |  |d d }|d }||krH|| }t|ts<td|i  n
i g||< d S )Nrb   z/An object other than list found behind this key)ru   rr   rs   rt   append)rV   rY   re   last_keylist_r   r   r   append_nest_to_list   s    
zNestedDict.append_nest_to_listN)r$   r%   r&   rW   ru   ry   r   r   r   r   r:      s   r:   c                   @  s   e Zd ZU ded< ded< dS )r9   r:   rH   r;   rB   N)r$   r%   r&   __annotations__r   r   r   r   r9      s   
r9   r   zIterable[str])rJ   rK   charsr+   c                 C  s4   z| | |kr|d7 }qW n t k
r.   Y nX |S )Nr   )r?   )rJ   rK   r{   r   r   r   r=      s    r=   zfrozenset[str]rh   )rJ   rK   expecterror_onerror_on_eofr+   c                C  s   z|  ||}W n4 tk
rD   t| }|r@t| |d|d Y nX || || s| | |krn|d7 }qXt| |d| | |S )Nz	Expected r   zFound invalid character )index
ValueErrorlenrF   
isdisjoint)rJ   rK   r|   r}   r~   new_posr   r   r   
skip_until   s    
r   rJ   rK   r+   c                 C  sH   z| | }W n t k
r$   d }Y nX |dkrDt| |d dtddS |S )Nr7   r   r   Fr}   r~   )r?   r   ILLEGAL_COMMENT_CHARS)rJ   rK   rN   r   r   r   rG     s    
    rG   c                 C  s,   |}t | |t}t| |}||kr |S q d S r   )r=   TOML_WS_AND_NEWLINErG   )rJ   rK   pos_before_skipr   r   r   skip_comments_and_array_ws  s
    
r   ztuple[Pos, Key])rJ   rK   rL   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k
r   t| |dd Y nX | 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_keyrB   rm   r;   ro   rn   rF   rS   rH   ru   rt   
startswithrJ   rK   rL   rY   r   r   r   rE     s     rE   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k
r   t| |dd Y nX | 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   rB   rm   r;   rn   rF   rg   rS   ro   rH   ry   rt   r   r   r   r   r   rD   .  s    rD   r   )rJ   rK   rL   rM   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k
r   t| |dd Y nX ||krt| |dt|ttfr|jj  tj	dd	 |||< |S )
Nrb   c                 3  s   | ]} d |  V  qd S r   r   r   rM   rY   r   r   r   J  s     z!key_value_rule.<locals>.<genexpr>r   zCannot redefine namespace r   r   Tr^   )parse_key_value_pairranger   rB   rm   r;   ro   rF   r]   rn   rH   ru   rt   rr   rI   rs   rS   )rJ   rK   rL   rM   r)   valuerj   rk   abs_key_parentrelative_path_cont_keyscont_keynestr   r   r   rA   C  s0      rA   ztuple[Pos, Key, Any])rJ   rK   r)   r+   c                 C  sv   t | |\}}z| | }W n tk
r2   d }Y nX |dkrHt| |d|d7 }t| |t}t| ||\}}|||fS )N=z,Expected '=' after a key in a key/value pairr   )r   r?   rF   r=   r>   parse_value)rJ   rK   r)   rY   rN   r   r   r   r   r   e  s    
r   c                 C  s   t | |\}}|f}t| |t}z| | }W n tk
rD   d }Y nX |dkrV||fS |d7 }t| |t}t | |\}}||f7 }t| |t}q d S )N.r   )parse_key_partr=   r>   r?   )rJ   rK   key_partrY   rN   r   r   r   r   u  s    

r   ztuple[Pos, str]c                 C  s   z| | }W n t k
r$   d }Y nX |tkrN|}t| |t}|| || fS |dkr`t| |S |dkrrt| |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_strrF   )rJ   rK   rN   	start_posr   r   r   r     s    


r   c                 C  s   |d7 }t | |ddS )Nr   F	multiline)parse_basic_strrJ   rK   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   rv   rF   )rJ   rK   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k
r   t	| |dd Y nX ||	krt	| |d|||	|< t| |t}| ||d  }
|
dkr|d |jfS |
d	kr$t	| |d
t|ttfrF|j|tjdd |d7 }t| |t}q:d S )Nr   }rb   r   Frp   r   zDuplicate inline table key r   zUnclosed inline tableTr^   )r:   r;   r=   r>   r   rI   r   rm   rn   rF   ru   rt   rr   rs   rS   )rJ   rK   r)   nested_dictrB   rY   r   rj   rk   r   r   r   r   r   parse_inline_table  s6    

r   Fr   )rJ   rK   r   r+   c                C  s   | ||d  }|d7 }|r|dkr|dkr~t | |t}z| | }W n tk
r`   |df Y S X |dkrvt| |d|d7 }t | |t}|dfS |dkrt| |d	S |d
krt| |dS z|t| fW S  tk
r   t| |dd Y nX d S )Nr   >   \	\ \
r    r   zUnescaped '\' in a stringr   z\u   z\U   )r=   r>   r?   rF   r   parse_hex_charBASIC_STR_ESCAPE_REPLACEMENTSrt   )rJ   rK   r   	escape_idrN   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   rX   )rJ   rK   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
issupersetrF   rX   is_unicode_scalar_valuer   )rJ   rK   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)rJ   rK   r   r   r   r   r      s        r   )rJ   rK   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   )rJ   rK   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k
rL   t| |dd Y nX |dkr|sr|d || ||  fS | d|r|d || ||  fS |d7 }q|dkr|| || 7 }|| |\}}||7 }|}q||k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?   rF   r   )	rJ   rK   r   r}   parse_escapesr   r   rN   parsed_escaper   r   r   r   (  s6    r   ztuple[Pos, Any]c              
   C  s  z| | }W n t k
r$   d }Y nX |dkrR| d|rHt| |ddS t| |S |dkr~| d|rtt| |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 n2 t
k
r6 } zt| |d|W 5 d }~X Y nX | |fS t| |}|rf| t|fS t| |}|r| t||fS | ||d  }	|	dkr|d ||	fS | ||d
  }
|
dkr|d
 ||
fS t| |dd S )Nr!   r   F)r   r   r   Tttruer   ffalse   r6   {zInvalid date or datetimer   >   infnan>   -inf-nan+nan+infzInvalid value)r?   r   r   r   r   r   r   r	   matchr   r   rF   endr
   r   r   r   )rJ   rK   r)   rN   datetime_matchdatetime_objelocaltime_matchnumber_matchfirst_three
first_fourr   r   r   r   H  sT    


 

r   )rJ   rK   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.r4   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)rJ   rK   linecolumnr   r   r   
coord_repr  s    
z suffixed_err.<locals>.coord_reprz (at ))r#   )rJ   rK   r   r   r   r   r   rF     s    
rF   )	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 k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.
    r4   r   )	float_strr+   c                   s"    | }t |ttfrtd|S )Nz*parse_float must not return dicts or lists)rr   rI   rs   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   r@   	hexdigitsr   r   r   r#   r   r3   r0   r;   r:   r9   r=   r   rG   r   rE   rD   rA   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   r   r<   r   r   r   r   <module>   sr    "
B:"		"!	 D