a
    $lJhc                  	   @  s  U d dl mZ d dlmZ d dlZd dlZd dlmZ d dl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 Zd	ed
< edd edD eedB Zd	ed< eed Z d	ed< eed Z!d	ed< e Z"d	ed< e!Z#d	ed< e Z$d	ed< edZ%d	ed< e%edB Z&d	ed< eej'ej( d Z)d	ed< e)edB Z*d	ed< eej+Z,d	ed< ed ddd!d"d#d$d%Z-d	ed&< G d'd( d(Z.G d)d* d*e/Z0e1d+d,d-d.d/d0d1Z2e1d+d2d-d.d3d4d5Z3G d6d7 d7Z4G d8d9 d9Z5G d:d; d;eZ6d2d<d=d<d>d?d@Z7d2d<d2dAdBd<dCdDdEZ8d2d<d<dFdGdHZ9d2d<d<dFdIdJZ:d2d<d;dKdLdMdNZ;d2d<d;dKdLdOdPZ<d2d<d;dQd-d<dRdSdTZ=d2d<d-dUdVdWdXdYZ>d2d<dKdFdZd[Z?d2d<d\dFd]d^Z@d2d<d\dFd_d`ZAd2d<d-dUdadWdbdcZBd2d<d-dUdddWdedfZCdgdhd2d<dBd\didjdkZDd2d<d\dFdldmZEd2d<dUd\dndodpZFd2d<d\dFdqdrZGd2d<dBd\dsdtduZHd2d<dBd\didvdwZId2d<d-dUdxdWdydzZJdUdBd{d|d}ZKd-d-d~ddZLdS )    )annotations)IterableN)MappingProxyType)IOAnyFinal
NamedTuple   )RE_DATETIMERE_LOCALTIME	RE_NUMBERmatch_to_datetimematch_to_localtimematch_to_number)Key
ParseFloatPosr   MAX_INLINE_NESTINGc                 c  s   | ]}t |V  qd S N)chr.0i r   K/var/www/shaz/venv/lib/python3.9/site-packages/pip/_vendor/tomli/_parser.py	<genexpr>#       r          
ASCII_CTRL	ILLEGAL_BASIC_STR_CHARSz	
!ILLEGAL_MULTILINE_BASIC_STR_CHARSILLEGAL_LITERAL_STR_CHARS#ILLEGAL_MULTILINE_LITERAL_STR_CHARSILLEGAL_COMMENT_CHARSz 	TOML_WS
TOML_WS_AND_NEWLINEz-_BARE_KEY_CHARSz"'KEY_INITIAL_CHARSHEXDIGIT_CHARS"\)z\bz\tz\nz\fz\rz\"z\\BASIC_STR_ESCAPE_REPLACEMENTSc                   @  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   r2   B   s   r2   c                   @  s,   e Zd ZdZeeefdddd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
    zstr | type[DEPRECATED_DEFAULT]zPos | type[DEPRECATED_DEFAULT]r   )msgdocposargsc           	      G  s  |s"t |tr"t |tr"t |tstjdtdd |turF|g|R }|turZ|g|R }|turn|g|R }tj| g|R   d S |	dd|d }|dkr|d }n||
dd| }|t|krd}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 ))
isinstancestrintwarningswarnDeprecationWarningr2   
ValueError__init__countrindexlenr8   r9   r:   linenocolno)	selfr8   r9   r:   r;   rJ   rK   Z
coord_reprerrmsgr   r   r   rF   R   sF    
zTOMLDecodeError.__init__N)r3   r4   r5   r6   r2   rF   r   r   r   r   r7   G   s
   r7   parse_floatz	IO[bytes]r   zdict[str, Any])__fprO   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')`NrN   )readdecodeAttributeError	TypeErrorloads)rP   rO   bsr   r   r   load   s    rY   r@   )__srO   rQ   c             	   C  s  z|  dd}W n. ttfy>   tdt| j ddY n0 d}tt t }d}t|}t	||t
}z|| }W n ty   Y qY n0 |dkr|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r t|||\}}nt|||\}}t	||t
}n|d
krTtd||t||}z|| }W n ty   Y qY n0 |dkrtd|||d7 }q^|jjS )zParse TOML from a string.z
r'   zExpected str object, not ''Nr   r   r	   [#zInvalid statementz5Expected newline or end of document after a statement)replacerT   rU   typer5   Output
NestedDictFlagsmake_safe_parse_float
skip_charsr&   
IndexErrorr*   key_value_ruleflagsfinalize_pendingcreate_list_rulecreate_dict_ruler7   skip_commentdatadict)rZ   rO   srcr:   outheadercharsecond_charr   r   r   rV      s\    








rV   c                   @  s   e Zd ZU dZdZded< dZded< 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 )rb   z)Flags that map to parsed keys/namespaces.r   r   FROZENr	   EXPLICIT_NESTNonerQ   c                 C  s   i | _ t | _d S r   )_flagsset_pending_flagsrL   r   r   r   rF      s    zFlags.__init__r   rA   )keyflagrQ   c                 C  s   | j ||f d S r   )ry   addrL   r{   r|   r   r   r   add_pending   s    zFlags.add_pendingc                 C  s.   | j D ]\}}| j||dd q| j   d S )NF	recursive)ry   rx   clearr~   r   r   r   rh      s    zFlags.finalize_pendingr{   rQ   c                 C  sF   | j }|d d D ]}||vr$ d S || d }q||d d  d S )Nnested)rw   pop)rL   r{   contkr   r   r   	unset_all   s    zFlags.unset_allbool)r{   r|   r   rQ   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 )Nr   )rg   recursive_flagsr   r   r   rg   )rw   rx   r}   )rL   r{   r|   r   r   
key_parentkey_stemr   r   r   r   rx      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 )NFr   r   Tr   rg   )rw   )rL   r{   r|   r   r   Z
inner_contr   r   r   r   is_   s    
z	Flags.is_N)r3   r4   r5   r6   rs   __annotations__rt   rF   r   rh   r   rx   r   r   r   r   r   rb      s   
rb   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 )ra   ru   rv   c                 C  s
   i | _ d S r   )rm   rz   r   r   r   rF     s    zNestedDict.__init__Taccess_listsr   r   rm   )r{   r   rQ   c                C  sT   | j }|D ]D}||vri ||< || }|r<t|tr<|d }t|t s
tdq
|S )Nr   z There is no nest behind this key)rm   r?   listKeyError)rL   r{   r   r   r   r   r   r   get_or_create_nest  s    

zNestedDict.get_or_create_nestr   c                 C  sV   |  |d d }|d }||v rH|| }t|ts<td|i  n
i g||< d S )Nr   z/An object other than list found behind this key)r   r?   r   r   append)rL   r{   r   Zlast_keylist_r   r   r   append_nest_to_list%  s    
zNestedDict.append_nest_to_listN)r3   r4   r5   rF   r   r   r   r   r   r   ra     s   ra   c                   @  s   e Zd ZU ded< ded< dS )r`   ra   rl   rb   rg   N)r3   r4   r5   r   r   r   r   r   r`   1  s   
r`   r   zIterable[str])rn   r:   charsrQ   c                 C  s2   z| | |v r|d7 }qW n t y,   Y n0 |S )Nr	   )re   )rn   r:   r   r   r   r   rd   6  s    rd   zfrozenset[str]r   )rn   r:   expecterror_onerror_on_eofrQ   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 )indexrE   rI   r7   
isdisjoint)rn   r:   r   r   r   new_posr   r   r   
skip_until?  s    
r   )rn   r:   rQ   c                 C  sF   z| | }W n t y"   d }Y n0 |dkrBt| |d dtddS |S )Nr]   r	   r'   Fr   r   )re   r   r%   )rn   r:   rq   r   r   r   rk   U  s    
rk   c                 C  s,   |}t | |t}t| |}||kr |S q d S r   )rd   r(   rk   )rn   r:   Zpos_before_skipr   r   r   skip_comments_and_array_wsa  s
    
r   ztuple[Pos, Key])rn   r:   ro   rQ   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)rd   r&   	parse_keyrg   r   rb   rt   rs   r7   rx   rl   r   r   
startswithrn   r:   ro   r{   r   r   r   rj   j  s     rj   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 )Nr<   "Cannot mutate immutable namespace Fr   r   z]]z0Expected ']]' at the end of an array declaration)rd   r&   r   rg   r   rb   rs   r7   r   rx   rt   rl   r   r   r   r   r   r   r   ri   ~  s     ri   r   )rn   r:   ro   rp   rO   rQ   c                   s*  t | ||dd\}}d d d  }} | } fddtdtD }	|	D ]6}
|j|
tjr|td|
 | ||j|
tj qV|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 )Nr   )nest_lvlr   c                 3  s   | ]} d |  V  qd S r   r   r   rp   r{   r   r   r     r   z!key_value_rule.<locals>.<genexpr>r	   zCannot redefine namespace r   r   Tr   )parse_key_value_pairrangerI   rg   r   rb   rt   r7   r   rs   rl   r   r   r?   rm   r   rx   )rn   r:   ro   rp   rO   valuer   r   Zabs_key_parentZrelative_path_cont_keysZcont_keynestr   r   r   rf     s,    rf   rA   ztuple[Pos, Key, Any])rn   r:   rO   r   rQ   c                 C  sv   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   re   r7   rd   r&   parse_value)rn   r:   rO   r   r{   rq   r   r   r   r   r     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_partrd   r&   re   )rn   r:   Zkey_partr{   rq   r   r   r   r     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 )Nr[   r/   z(Invalid initial character for a key part)re   r)   rd   parse_literal_strparse_one_line_basic_strr7   )rn   r:   rq   	start_posr   r   r   r     s    


r   c                 C  s   |d7 }t | |ddS )Nr	   F	multiline)parse_basic_strrn   r:   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rx|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   r   r7   )rn   r:   rO   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rF|j|tjdd |d7 }t| |t}q:d S )Nr	   }r   r   Fr   r   zDuplicate inline table key r   zUnclosed inline tableTr   )ra   rb   rd   r&   r   rm   r   r   rs   r7   r   r   r?   r   rx   )rn   r:   rO   r   Znested_dictrg   r{   r   r   r   r   r   r   r   r   parse_inline_table  s6    

r   Fr   )rn   r:   r   rQ   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   )rd   r&   re   r7   r(   parse_hex_charr1   r   )rn   r:   r   Z	escape_idrq   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_multilineG  s    r   )rn   r:   hex_lenrQ   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)rI   r+   
issupersetr7   rA   is_unicode_scalar_valuer   )rn   r:   r   hex_strZhex_intr   r   r   r   K  s    
r   c                 C  s2   |d7 }|}t | |dtdd}|d | || fS )Nr	   r[   Tr   )r   r#   )rn   r:   r   r   r   r   r   X  s    
r   )rn   r:   literalrQ   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   r$   r   )rn   r:   r   delimZend_posresultr   r   r   parse_multiline_stra  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   r0   zIllegal character )r"   r   r!   r   re   r7   r   )	rn   r:   r   r   Zparse_escapesr   r   rq   Zparsed_escaper   r   r   r     s6    r   ztuple[Pos, Any]c              
   C  s  |t krtdt  dz| | }W n ty:   d }Y n0 |dkrh| d|r^t| |ddS t| |S |dkr| d|rt| |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| |||d S |dkr
t| |||d S t	
| |}|rjzt|}W n4 ty\ } ztd| ||W Y d }~n
d }~0 0 | |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| |d S )Nz;TOML inline arrays/tables are nested more than the allowed z levelsr/   r   F)r   r[   r   Tttruer   ffalse   r\   r	   {zInvalid date or datetimer   >   naninf>   z-infz-nanz+infz+nanzInvalid value)r   RecursionErrorre   r   r   r   r   r   r   r
   matchr   rE   r7   endr   r   r   r   )rn   r:   rO   r   rq   Zdatetime_matchZdatetime_objeZlocaltime_matchZnumber_matchZfirst_threeZ
first_fourr   r   r   r     s`    



$

r   )	codepointrQ   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   )rO   rQ   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.
    r@   r   )	float_strrQ   c                   s"    | }t |ttfrtd|S )Nz*parse_float must not return dicts or lists)r?   rm   r   rE   )r   Zfloat_valuerN   r   r   safe_parse_float  s    z/make_safe_parse_float.<locals>.safe_parse_float)float)rO   r   r   rN   r   rc     s    	rc   )M
__future__r   collections.abcr   stringsystypesr   typingr   r   r   r   rB   _rer
   r   r   r   r   r   _typesr   r   r   getrecursionlimitr   r   	frozensetr   r   r   r!   r"   r#   r$   r%   r&   r(   ascii_lettersdigitsr)   r*   	hexdigitsr+   r1   r2   rE   r7   r   rY   rV   rb   ra   r`   rd   r   rk   r   rj   ri   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   r   r   r   r   <module>   sx    *;G:"		"#	 L