B
    )zf                 @   sr  d dl Z d dlZd dlmZ d dlZd dlZd dlmZ ejdk rHe	Z
neZeZ
eZeZdd Zdd Zd	d
 ZyeZW n ek
r   eZY nX edZG dd deZedZG dd deZdd Ze dfddZ!edZ"e dfddZ#dd Z$dd Z%ddddd d!d"gZ&d#d$d%d&d'd(d"gZ'e e(e&e'Z)d)d* Z*G d+d, d,eZ+G d-d. d.eZ,G d/d0 d0e,Z-dS )1    N)linesep)TomlTz)   c             C   s&   dt jkr"dd l}t| |jr"dS dS )N)r      r   TF)sysversion_infopathlib
isinstancePurePath)pr    r   O/home/ankuromar296_gmail_com/.local/lib/python3.7/site-packages/toml/decoder.py_detect_pathlib_path   s
    
r   c             C   s   t | ttfrdS t| S )NT)r	   bytes
basestringr   )r   r   r   r   _ispath   s    r   c             C   s0   dt jkrdd l}|| S t| r,t| S | S )N)r      r   )r   r   osfspathr   str)r   r   r   r   r   _getpath    s    

r   z1([0-9]{2}):([0-9]{2}):([0-9]{2})(\.([0-9]{3,6}))?c               @   s   e Zd ZdZdd ZdS )TomlDecodeErrorzBase toml Exception / Error.c             C   sb   | dd|d }||dd| }d||||}t| | || _|| _|| _|| _|| _	d S )N
r      z{} (line {} column {} char {}))
countrfindformat
ValueError__init__msgdocposlinenocolno)selfr   r    r!   r"   r#   Zemsgr   r   r   r   5   s    zTomlDecodeError.__init__N)__name__
__module____qualname____doc__r   r   r   r   r   r   2   s   r   z([0-9])(_([0-9]))*c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
CommentValuec             C   s&   || _ |rdnd}|| | _|| _d S )Nr    )valcomment_dict)r$   r+   r,   	beginliner-   	separatorr   r   r   r   F   s    
zCommentValue.__init__c             C   s
   | j | S )N)r+   )r$   keyr   r   r   __getitem__L   s    zCommentValue.__getitem__c             C   s   || j |< d S )N)r+   )r$   r0   valuer   r   r   __setitem__O   s    zCommentValue.__setitem__c             C   s<   || j }t| j | jr*| jd t| S t|| j S d S )Nr   )r+   r	   r-   r,   unicode)r$   Zdump_value_funcZretstrr   r   r   dumpR   s    
zCommentValue.dumpN)r%   r&   r'   r   r1   r3   r5   r   r   r   r   r)   E   s   r)   c             C   s   |   } | sdS | d dkr dS | d dkr0dS d| ks@d| krDdS t| dkrTdS | d d	krp| d d
krpdS | d dks| d dkr| dd  } t| dkr| d d	kr| d dkrdS d| krdS dS )NFr   _z_.z._r   T0).obx+-r9   __)striplen)nr   r   r   _strictly_valid_numZ   s(    $rC   c          	      s  t | r4tjt| dd}t| ||S Q R X nt| trddlm	  ddl
m}  fdd| D sd	}|t7 }|d
7 }t||dkrt|}| }x2| D ]*} |r|t||| q|d qW |S yt|  ||S  tk
r   tdY nX dS )ac  Parses named file or files as toml and returns a dictionary

    Args:
        f: Path to the file to open, array of files to read into single dict
           or a file descriptor
        _dict: (optional) Specifies the class of the returned toml dictionary
        decoder: The decoder to use

    Returns:
        Parsed toml file represented as a dictionary

    Raises:
        TypeError -- When f is invalid type
        TomlDecodeError: Error while decoding toml
        IOError / FileNotFoundError -- When an array with no valid (existing)
        (Python 2 / Python 3)          file paths is passed
    zutf-8)encodingNr   )path)warnc                s   g | ]}  |r|qS r   )exists).0rE   )opr   r   
<listcomp>   s    zload.<locals>.<listcomp>z.Load expects a list to contain filenames only.zAThe list needs to contain the path of at least one existing file.z>Non-existent filename in list with at least one valid filenamez5You can only load a file descriptor, filename or list)r   ioopenr   loadsreadr	   listr   rE   warningsrF   r   FNFErrorTomlDecoderget_empty_tablerG   updateloadAttributeError	TypeError)fr-   decoderZffilerF   	error_msgdlr   )rI   r   rU   q   s.    


rU   z^[A-Za-z0-9_-]+$c       -      C   s  g }|dkrt |}| }|}t| ts2tdt| tsF| d} | }t| }d}d}	d}
d}d}d}d}d}d}d}d}d}xzt|D ]l\}}|d	kr||d  d
krd||< q|r`||7 }|d
krt	d|||	r6||
krd}d}x.||kr |||  dkr | }|d7 }qW |sd}d}	d}
qn|dkr|
 rRd}qnf|dkrdd}qnT| s|dks|dkrqn6|r$||d  dkr$|dks|dkr$d}	|}
qnj|dkr$|
 r|r||d  }|
 s|dkrd}q|dkr$d}||d  }|
 s|dkrd}q|dkrLd}|dd  }d}d}nt	d| d |||dkr|
dkrd}y2x,|||  dkr|d7 }|dkr|P q|W W n tk
r   Y nX |dkr| }|}	n|	 }	|	rd}
nd}
|dkr|
dkrd}d}d}yxx0|||  dkr@|d7 }|dkrd}P qW |dks\|dkr|rx&|||  dkr| }|d7 }q^W W n tk
r   Y nX |s|r| }|}	n|	 }	|	rd}
nd}
|dkrV|	sV|sV|sV|}d}y6x0|| d
kr"|| | 7 }d||< |d7 }qW W n tk
r>   P Y nX |sV||||| |dkr|	s|s|s|rt||d kr||d  dkrd}nd}n|d7 }|dkr|	s|rd}n&|r||d  dkrd}n|d8 }|d
kr|	s|r|st	d||||d  dks>||d  dkr||d  ||d  kr||d  ||< ||d  ||d  krd||d < n|rd||< nd}|d7 }q|r|| dkr|| dkrd}|s|s|| dkrt	d||d}||7 }qW |rt	d|t| |	r,t	d |t| d|} | d
} d}d}d}d}xtt| D ]f\}} |dkr|t| |d  d 7 }||| |r|sd
|kr|  } | dkr|r\|r̐q\|r
|r|| 7 }n|| 7 }d}d}!|d dkr| d dk}!nBt| dkrP| d |d koN| d! |d koN| d" |d k}!|!ry||\}"}#W n4 tk
r }$ zt	t|$||W dd}$~$X Y nX |"||< d}d}nVt|d }x,|dkr|| dkr| }|d8 }qW |r|dd }n|d
7 }q\| d dkrd}t| dkr6t	d#||| d dkrZd}| dd } d$}%n| dd } d}%d}|| }&d}'x4|&D ],}(|'s|%|(krP ||(|%7 }|' }'qW | |%|} t| |d k s| d  dkrt	d%|||%| dd d})d}x,|t|)k 
r8|)|  |)|< t|)| dk
r|)| d dk	sb|)| d dk
r|)| }*|d }xn|*d |*d k	rt|*dk	r|d7 }|t|)d k	rt	d&|* d' d( ||d|)||  }*	qtW |*dd |)|< g |)|d |< n(t|)| 
s,t	d&|)|  d) |||d7 }	qW |}xtt|)D ]}|)| }+|+dk
rrt	d*||y|||+  |t|)d k
r|+|k
r||+ |
rt	d+||n6|
r||+ |  nt	d,|+ d- t| ||W n tk
rH   |d }|+|krD| ||+< |t|)d krD|rD| g||+< Y nd tk
r   |t|)d krt||+ | ||+< |t|)d kr|r| g||+< Y nX ||+ }|
rNy|d }W n tk
r   Y nX 
qNW n| d d.krZ| d d/krt	d0||y|| ||| W n4 tk
rV }$ zt	t|$||W dd}$~$X Y nX nhd| kr\y| | |||},W n4 tk
r }$ zt	t|$||W dd}$~$X Y nX |,dk	r\|,\}}}q\W |S )1aD  Parses string as toml

    Args:
        s: String to be parsed
        _dict: (optional) Specifies the class of the returned toml dictionary

    Returns:
        Parsed toml file represented as a dictionary

    Raises:
        TypeError: When a non-string is passed
        TomlDecodeError: Error while decoding toml
    Nz!Expecting something like a stringutf8r   F Tr   r   r*   z2Key name found without value. Reached end of line.\   r9   r6   r>   "'=r7   z&Found invalid character in key name: 'z'. Try quoting the key name.r   #[]zUnbalanced quotes	zFound empty keyname. z2Key name found without value. Reached end of file.z/Unterminated string found. Reached end of file.z,Opening key group bracket on line by itself.z]]z"Key group not on a line by itself.zInvalid group name 'z' Something zwent wrong.z'. Try quoting it.z(Can't have a keygroup with an empty namez-An implicitly defined table can't be an arrayzWhat? z already exists?{}z,Line breaks are not allowed in inlineobjects)!rR   rS   r	   r   rW   r4   decoderO   	enumerater   isspaceisalnumrstrip
IndexErrorpreserve_commentrA   joinsplitembed_commentsr@   
load_valuer   r   _get_split_on_quotesr   _groupname_rematch_rangeremoveappendKeyErrorload_inline_object	load_line)-sr-   rY   ZimplicitgroupsretvalcurrentleveloriginalslopenarrZ
openstringZopenstrcharmultilinestrZarrayoftablesr.   ZkeygroupZ	dottedkeyZkeynamer0   Zprev_keyline_noiitemoddbackslashkZnextitemZ	tripquotejr,   multikeymultibackslashr!   idxlineclosedr2   vtypeerrsplitstrquotesplitsquoted
quotesplitgroupsZgroupstrgroupretr   r   r   rM      sx   













$
$





"

$$









$


"
rM   c             C   s  d}d }yt | dkr| d dkr| d  dkrD| dd }d}nl| dd  }d|kr||d}|d | }||d  }n4d|kr|d}|d | }||d  }nd }|}|d k	rt|}tt|d	d
t |   }nt| dd  }W n tk
r
   d }Y nX d| dd  kr"d S yt | d	krftt| d d t| dd t| dd	 }n`tt| d d t| dd t| dd	 t| dd t| dd t| dd ||}W n tk
r   d S X |S )Nr      r9   r7   Z   r=   r>   
   r   r   r                           )rA   upperindexr   intr   datetimedate)r+   microsecondtzZsubsecondvalZtzvalZsubsecondvalandtzZ
splitpointr[   r   r   r   
_load_date  sP    


(r   c             C   s8  d}t | d }x&|dkr6| | dkr6| }|d8 }qW x|D ]}|rd}t |d }x&|dkr||| dkr|| }|d8 }qXW | |7 } | |7 } q>d}d}d}|dkrd	}d||||   }|d
rtd| |d dkr|d drtd| d | tt|d7 } | t|t |d  7 } q>W | S )NFr   r7   r`   r^   r   r   z\Ur   Z0123456789abcdefzInvalid escape sequence: r[   01234567z). Only scalar unicode points are allowed.r   )rA   rt   lowerr@   r   unichrr   r4   )vhexbytesprefixskipr   hxZhxbZhxblenr   r   r   _load_unicode_escapes7  s:    

r   r8   r;   rX   rB   rtrb    r   r_   rh   c             C   s   d}d}x|t | k r|rd}| | tkrX| d|d  t| |   | |d d  } q
| | dkr| d|d  | |d  } q
| | dks| | dkr|d7 }q
tdq
n| | dkrd	}|d7 }q
W | S )
z%Unescape characters in a TOML string.r   FNr   r`   uUzReserved escape sequence usedT)rA   _escapes_escape_to_escapedcharsr   )r   r   	backslashr   r   r   	_unescapea  s"    .
r   c               @   s   e Zd ZdZdS )InlineTableDictz,Sentinel subclass of dict for inline tables.N)r%   r&   r'   r(   r   r   r   r   r   w  s   r   c               @   s|   e Zd ZefddZdd Zdd Zddd	Zd
d Zdd Z	dd Z
dddZdd Zdd Zdd Zdd Zdd ZdS ) rR   c             C   s
   || _ d S )N)r-   )r$   r-   r   r   r   r   }  s    zTomlDecoder.__init__c             C   s   |   S )N)r-   )r$   r   r   r   rS     s    zTomlDecoder.get_empty_tablec             C   s   G dd d| j t}| S )Nc               @   s   e Zd ZdZdS )zBTomlDecoder.get_empty_inline_table.<locals>.DynamicInlineTableDictzConcrete sentinel subclass for inline tables.
            It is a subclass of _dict which is passed in dynamically at load
            time

            It is also a subclass of InlineTableDict
            N)r%   r&   r'   r(   r   r   r   r   DynamicInlineTableDict  s   r   )r-   r   )r$   r   r   r   r   get_empty_inline_table  s    z"TomlDecoder.get_empty_inline_tableFc             C   sV  |dd  d}g }t|dkr6|d  s6|  xt|dkr$|d}y| dd\}}	W n tk
r   tdY nX |	 }	|	d |	d kr|	d dks|	d dks|	d	ks|	d d
kr|	d dks|	d dkr|	d dkr|| q8t|dkr|d |d  |d< q8tdq8W x*|D ]"}
| |
|||}|d k	r,P q,W d S )Nr   r7   ,r   rd   z Invalid inline table encountered)rb   rc   z-0123456789)truefalserf   rg   rk   rl   z&Invalid inline table value encountered)ru   rA   r@   popr   r}   r   )r$   r   r   r   r   Zcandidate_groupsr   Zcandidate_groupr6   r2   r   statusr   r   r   r     s4    



zTomlDecoder.load_inline_objectc             C   s   | d}d}g }t|dkrd|d kr|d  d}|dd  }xft|d dkrt|r|d  d|d  7  < |dd  }d|d krF|d d |d  d }qFW ||7 }x0|D ](}|r|| q|| d7 }| }qW |S )Nrb   Fr   rc   r   ra   r7   )ru   rA   r}   )r$   r   Zdoublequotesplitsr   r   ZsinglequotesplitsZdoublequotesplitr   r   r   rx     s&    



z TomlDecoder._get_split_on_quotesc             C   s4  d}|  |}d}x.|D ]&}|s*d|kr*P ||d7 }| }qW |d|}	t|	d }
t|	d r||	d dd|	d< x4t|	d r|	d d dkr|	d d d	kr|	d d d
kr|	d d dkr|	d d dkr|	d d dkr|	d  dkr|	d  dkryt	|	d  P W n t
k
rF   Y nX t|	d d k	r\P t|	d rnP |d7 }|	d }|d|}	||	d krt
d|
rt|	d }
qW d|	d d  |	d  g}	d|	d krd|	d ks d
|	d krX|  |	d }d}g }xN|D ]6}|r2|| n|dd |dD 7 }| }qW n|	d d}x |d dkr|d d }qhW xB|d d D ]2}|dkrq||kr|  ||< || }qW |d  |	d< nV|	d d dks|	d d d
kr4|	d d |	d d kr4t|	d dd |	d< | |	d \}}|dkrx4|dkr|	d ||  dkr| }|d8 }qRW |r|	d d d }n|	d d }|	d }n| |	d |
\}}y||	d   t
dW nN tk
r   t
dY n2 tk
r.   |r|||fS |||	d < Y nX d S )Nr   Frd   r7   r6   r^   r   r*   rh   rc   rb   rf   rk   r   r   zInvalid date or numberr9   c             S   s   g | ]}|  qS r   )r@   )rH   levelr   r   r   rJ     s    z)TomlDecoder.load_line.<locals>.<listcomp>r`   r   zDuplicate keys!)rx   r   ru   rC   _number_with_underscoresrz   replacerA   r@   floatr   r   TIME_RErt   r}   rS   r   _load_line_multiline_strrw   rW   r~   )r$   r   r   r   r   r   r   r   r   pairstrictly_validprev_valZlevelsr   r   Zkoffsetr   r2   r   r   r   r   r     s    


6$$"


$
"

zTomlDecoder.load_linec             C   sl  d}t |dk rd|fS |d dkr| d dkr| |r|dd   d}xRt |dkr|d d dkr|d d d	kr|d d
 |d
 d |d  g }qVW |d }t |t | }|}|d dkr|d d	krd|fS |d |d ks|d |d krd|fS t |dkr\|d |d kr\|d
 |d kr\|d |d kr\d|fS t |d |fS )Nr   r   r7   rf   rg   r   r   rb   rc   ri   ra   r   rj   )rA   r@   _load_array_isstrarrayru   )r$   r   ZpoffsetZnewpr   r   r   r     s$    
.&$Dz$TomlDecoder._load_line_multiline_strTc          	   C   s  |st d|dkrdS | dkr0t dnN|dkr<dS | dkrTt dn*|d dksn|d d	kr|d }|d
d  |}d}d}t|d
kr|d dkr|d
 dkr|dd  }d}d}x|D ]}|dkr|r|d
7 }nd}qd}	y8d}
||
 }x&|dkr&|	 }	|
d
8 }
||
 }qW W n tk
r@   Y nX |	s|rVt dq|rf|d
krld}qd}qW |dkr<|dd
d  }d}xb|D ]Z}
|
dkr| }nB|
d tkr|
d dkr|
d dkr|st d|rd}qW x:dD ]2}||kr||}t|d |d
d  |}qW t|}t|d
kr|d
 |krt|dk sx|d
 |d kr|dd }|d
d dfS |d dkr| |dfS |d dkr| 	 }| 
|| |dfS t|r0t| \}}}}}tt|t|t||r"t|nd}|dfS t|}|d k	rJ|dfS |sXt dd }d}|d d!krd}|d
d  }n|d d"kr|d
d  }|d#d}| }d$|ksd%|kr"d&|ksd'|kr"d$|kr|d$d
d
 dkrt d(|d d)krt d*t|}d+}n.t|dkrP|d,ksD|d-krPt|}d+}|d krdt|d}|rvd| |fS ||fS d S ).NzEmpty value is invalidr   )Tboolz#Only all lowercase booleans allowedr   )Fr   r   rb   rc   r   Fr^   ra   Tr7   r`   z1Found tokens after a closed string. Invalid TOML.r   r   zReserved escape sequence used)z\uz\Ur   ri   r   rf   arrayrk   inline_objecttimer   z<Weirdness with leading zeroes or underscores in your number.r   r>   r=   r6   r9   r<   eEz,This float is missing digits after the point
0123456789z'This float doesn't have a leading digitr   infnan)r   r   ru   rA   rr   r   r   r   
load_arrayr   r   r   rz   r   r   r   r   r   r   r   )r$   r   r   	quotecharZtestvZtriplequoteZtriplequotecountr   tvr   r   r   Z
escapeseqsr   r   r   r   hmr   r6   msr   Zparsed_dateZitypenegZlowervr   r   r   rw   *  s    $









**
( "

zTomlDecoder.load_valuec             C   sf   t |dkrdS |d |d kr$dS d}d}x2t || dkr^|| dkrZ| }|d8 }q.P q.W | S )Nr   Tr7   Fri   r`   r   )rA   )r$   r   r   r   r   r   r   bounded_string  s    
zTomlDecoder.bounded_stringc             C   s8   |dd   }|dkr4|d dks0|d dkr4dS dS )	Nr   r7   r^   r   rb   rc   TF)r@   )r$   ar   r   r   r     s     z"TomlDecoder._load_array_isstrarrayc             C   s  d }g }|  }d|dd ks@d|dd dd   kr| |}|dd   dsv|dd d}ndg }d}d}|| dkrdnd}d	}	x8|t|dd  k r|| d
ks|| dkr|	r|d }
x*|
dkr||
 dkr|	 }	|
d8 }
qW |	 }	|	s*|| dkr*|d7 }|	s>|| dkrJ|d7 }qn*|| dkrt|dkrt|d8 }|d7 }q|d7 }||||  |d }x2|t|dd  k r|| dkr|d7 }qW |d }qW |}d}|rx|t|d k r||   }x| |rnt|dkr|d |d   krF|d krn n|d |d kr|d |d kr|| d ||d   ||< ||   }|t|d k r|d |d  ||d d   }n|d |d  }qW |d7 }qW nt|dd }g }d}d}xztt|D ]j}|| dkr6|d7 }nL|| dkrN|d8 }n4|| dkr|s|d	|||  |d }qW |d	||d   xntt|D ]^}||   ||< || dkr| 
|| \}}|r||kr tdn|}|| qW |S )Nrf   r   r7   r^   r   rk   r   ra   Frb   rc   r`   rl   ri   rj   rg   zNot a homogeneous array)r@   ru   r   
startswithrA   r}   r   rO   r{   rt   rw   r   )r$   r   Zatyper   ZstrarrayZnew_aZstart_group_indexZend_group_indexZopen_bracket_countZin_strZbackslash_indexr;   abalr   r   r   nvalZntyper   r   r   r     s    0
("



zTomlDecoder.load_arrayc             C   s   d S )Nr   )r$   r   r0   r,   r.   r   r   r   rs     s    zTomlDecoder.preserve_commentc             C   s   d S )Nr   )r$   r   r   r   r   r   rv     s    zTomlDecoder.embed_commentsN)FF)T)r%   r&   r'   dictr   rS   r   r   rx   r   r   rw   r   r   r   rs   rv   r   r   r   r   rR   {  s    
T
q[rR   c                   s0   e Zd Zef fdd	Zdd Zdd Z  ZS )TomlPreserveCommentDecoderc                s   i | _ tt| | d S )N)saved_commentssuperr   r   )r$   r-   )	__class__r   r   r     s    z#TomlPreserveCommentDecoder.__init__c             C   s   |||f| j |< d S )N)r   )r$   r   r0   r,   r.   r   r   r   rs     s    z+TomlPreserveCommentDecoder.preserve_commentc             C   s:   || j krd S | j | \}}}t|| ||| j||< d S )N)r   r)   r-   )r$   r   r   r0   r,   r.   r   r   r   rv     s
    
z)TomlPreserveCommentDecoder.embed_comments)r%   r&   r'   r   r   rs   rv   __classcell__r   r   )r   r   r     s   r   ).r   rK   r   r   rer   Ztoml.tzr   r   xranger{   r   r4   ranger   chrr   r   r   r   FileNotFoundErrorrQ   	NameErrorIOErrorcompiler   r   r   r   objectr)   rC   r   rU   ry   rM   r   r   r   Z_escapedcharszipr   r   r   rR   r   r   r   r   r   <module>   sP   
	


1
  e/#   