
0c@_(                 @   s
  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 f k  rk e	 Z
 n e Z e Z
 e Z e Z d d   Z d d   Z d	 d
   Z y
 e Z Wn e k
 r e Z Yn Xe j d  Z Gd d   d e  Z e j d  Z Gd d   d e  Z d d   Z e  d d d  Z! e j d  Z" e  d 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* Gd+ d,   d, e  Z+ Gd- d.   d. e  Z, Gd/ d0   d0 e,  Z- d S)1    N)linesep)TomlTz   c             C   s5   d t  j k r1 d d  l } t |  | j  r1 d Sd S)Nr      r   TF)r   r   )sysversion_infopathlib
isinstanceZPurePath)pr    r   7/tmp/pip-build-jynh7p1z/pip/pip/_vendor/toml/decoder.py_detect_pathlib_path   s
    r   c             C   s#   t  |  t t f  r d St |   S)NT)r	   bytes
basestringr   )r
   r   r   r   _ispath   s    r   c             C   sB   d t  j k r( d d  l } | j |   St |   r> t |   S|  S)Nr      r   )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   s   | j  d d |  d } | | j d d |  } d j | | | |  } t j |  |  | |  _ | |  _ | |  _ | |  _ | |  _	 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   s5   | |  _  | 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#   r/   valuer   r   r   __setitem__O   s    zCommentValue.__setitem__c             C   sN   | |  j   } t |  j  |  j  r9 |  j d t |  St |  |  j Sd  S)Nr   )r*   r	   r,   r+   unicode)r#   Zdump_value_funcZretstrr   r   r   dumpR   s    zCommentValue.dumpN)r$   r%   r&   r   r0   r2   r4   r   r   r   r   r(   E   s   r(   c             C   s  |  j    }  |  s d S|  d d k r* d S|  d d k r> d Sd |  k sV d |  k rZ d St |   d k rp d S|  d d k r |  d d k r d S|  d d k s |  d d k r |  d d   }  t |   d k r |  d d k r |  d d	 k r d Sd |  k r
d Sd S)NFr   _r   z_.z._T0.obx+-__)r7   r8   r9   r:   )striplen)nr   r   r   _strictly_valid_numZ   s(      2rB   c                se  t  |   rJ t j t |   d d  } t | j   | |  SWd QRXnt |  t  r&d d l m	   d d l
 m }   f d d   |  D s d	 } | t 7} | d
 7} t |   | d k r t |  } | j   } xC |  D]; }   j |  r| j t | | |   q | d  q W| Sy t |  j   | |  SWn t k
 r`t d   Yn Xd 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
    encodingzutf-8Nr   )path)warnc                s%   g  |  ] }   j  |  r |  q Sr   )exists).0rD   )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   rD   warningsrE   r   FNFErrorTomlDecoderget_empty_tablerF   updateloadAttributeError	TypeError)fr,   decoderZffilerE   Z	error_msgdlr   )rH   r   rT   q   s.     

rT   z^[A-Za-z0-9_-]+$c       -      C   s  g  } | d k r t  |  } | j   } | } t |  t  sK t d   t |  t  si |  j d  }  |  } t |   } d } d }	 d }
 d } d } d } d } d } d } d } d } d } xt |  D]\ } } | d	 k r	| | d d
 k r	d | | <q | r6| | 7} | d
 k r7t	 d | |   |	 r| |
 k r d } d } x5 | | k r| | | d k r| } | d 7} qXW| s d } d }	 d }
 q n:| d k rU| j
   rd } q q| d k rd } q q| j   s | d k s | d k rq q| r| | d d k r| d k sC| d k rd }	 | }
 q n | d k r| j
   r| r | | d } | j
   r | d k r d } q | d k rd } | | d } | j
   r | d k r d } q | d k rd } | d d.  j   } d } d } n t	 d | d | |   | d k r|
 d k rd } y6 x/ | | | d k r| d 7} | d k rZPqZWWn t k
 rYn X| d k r| } | }	 n |	 }	 |	 rd }
 n d }
 | d k r|
 d k rd } d } d } y x5 | | | d k r;| d 7} | d k rd } PqW| d k sZ| d k r| rx) | | | d k r| } | d 7} q]WWn t k
 rYn X| s| r| } | }	 n |	 }	 |	 rd }
 n d }
 | d k rp|	 rp| rp| rp| } d } y= x6 | | d
 k r<| |  | 7} d | | <| d 7} qWWn t k
 rSPYn X| sp| j | | | |  | d k r|	 r| r| r| rt |  | d k r| | d d k rd } qd } n
 | d 7} | d k r,|	 r,| rd } n- | r"| | d d k r,d } n
 | d 8} | d
 k r|	 sD| r| s\t	 d | |   | | d d k s| | d d k r| | d | | d k r| | d | | <| | d | | d k rd | | d <n | rd | | <n d } | d 7} q | r | | d k r | | d k r d } | r | r | | d k rat	 d | |   d } | | 7} q W| rt	 d | t |     |	 rt	 d | t |     d j |  }  |  j d
  }  d } d } d } d } xt |   D]\ } }  | d k r(| t |  | d  d 7} | j | |  | sQ| sQd
 | k r]|  j   }  |  d k ry| s| ryq| r	| r| |  7} n
 | |  7} d } d }! | d d k r|  d/ d k }! nN t |   d k r	|  d0 | d k o	|  d1 | d k o	|  d2 | d k }! |! r	y | j |  \ }" }# Wn= t k
 rw	}$ z t	 t |$  | |   WYd d }$ ~$ Xn X|" | | <d } d } qt |  d } x1 | d3 k r	| | d k r	| } | d 8} q	W| r	| d d4  } q| d
 7} q|  d d k rd } t |   d k r5
t	 d  | |   |  d d k rd
d } |  d d  }  d! }% n |  d d  }  d }% d } | j |   }& d }' x< |& D]4 }( |' r
|% |( k r
P| |( j |%  7} |' }' q
W|  j |% |  }  t |   | d k  s|  d5 j   d k r$t	 d" | |   |% j |  d d6   j d  }) d } xZ| t |)  k  r|) | j   |) | <t |) |  d k rj|) | d d k s|) | d d k rj|) | }* | d } xu |* d |* d7 k s>| d 7} | t |)  d k rt	 d# |* d$ d% | |   d j |) | |   j   }* qW|* d d8  |) | <g  |) | d |  <n1 t j |) |  st	 d# |) | d& | |   | d 7} qOW| } xt t |)   D]} |) | }+ |+ d k rt	 d' | |   y | |+ | t |)  d k r|+ | k rE| j |+  | rt	 d( | |   nD | re| |+ j | j    n$ t	 d) |+ d* t |  | |   Wn t k
 r| d9 } |+ | k r| j   | |+ <| t |)  d k r| r| j   g | |+ <Ynt t k
 rf| t |)  d k r#| j |+  | j   | |+ <| t |)  d k rb| rb| j   g | |+ <Yn X| |+ } | ry | d: } Wqt k
 rYqXqWq|  d d+ k r0|  d; d, k rt	 d- | |   y | j |  | | |  Wqt k
 r,}$ z t	 t |$  | |   WYd d }$ ~$ XqXqd |  k ry | j  |  | | |  }, Wn= t k
 r}$ z t	 t |$  | |   WYd d }$ ~$ Xn X|, d k	 r|, \ } } } qW| S)<aD  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.\   r7   r5   r<   "'=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 inlineobjectsr>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   )!rQ   rR   r	   r   rV   r3   decoderN   	enumerater   isspaceisalnumrstrip
IndexErrorpreserve_commentr@   joinsplitembed_commentsr?   
load_valuer   r   _get_split_on_quotesr   _groupname_rematch_rangeremoveappendKeyErrorload_inline_object	load_line)-sr,   rX   ZimplicitgroupsretvalcurrentlevelZoriginalslopenarrZ
openstringZopenstrcharmultilinestrZarrayoftablesr-   ZkeygroupZ	dottedkeyZkeynamer/   Zprev_keyline_noiitemoddbackslashkZnextitemZ	tripquotejr+   multikeymultibackslashr    idxlineclosedr1   vtypeerrsplitstrquotesplitsquoted
quotesplitgroupsZgroupstrgroupretr   r   r   rL      sv    

#$	
			
		
*		
		
(&
+
	
	,"*


#



.+rL   c             C   s  d } d  } yBt  |   d k rM|  d d k r7|  d j   d k r` |  d d  } d } n |  d d   } d | k r | j d  } | d  |  } | | d   } nJ d | k r | j d  } | d  |  } | | d   } n d  } | } | d  k	 rt |  } t t |  d	 d
 t  |   } n t |  d d    } Wn t k
 rhd  } Yn Xd |  d d   k rd  Sy t  |   d	 k rt j t |  d  d   t |  d d   t |  d d	    } n t j t |  d  d   t |  d d   t |  d d	   t |  d d   t |  d d   t |  d d   | |  } Wn t k
 r}d  SYn X| S)Nr      r7   r   Z   r;   r<   
   r   r                           r>   r>   )r@   upperindexr   intr   datetimedate)r*   microsecondtzZsubsecondvalZtzvalZsubsecondvalandtzZ
splitpointrY   r   r   r   
_load_date  sP    	&&&6	r   c             C   s  d } t  |   d } x1 | d k rI |  | d k rI | } | d 8} q WxK| D]C} | r d } t  |  d } x1 | d k r | | d k r | } | d 8} qv W|  | 7}  |  | 7}  qQ d } d } d } | d k r d } d j | | | |   j   } | j d	  r$t d
 |   | d d k r[| d j d  r[t d
 | d   |  t t | d   7}  |  t | t  |  d    7}  qQ W|  S)NFr   r^   r\   r   r   z\Ur   Z0123456789abcdefzInvalid escape sequence: rY   01234567z). Only scalar unicode points are allowed.r   r>   r>   )r@   rr   lowerr?   r   unichrr   r3   )vhexbytesprefixskipr   hxZhxbZhxblenr   r   r   _load_unicode_escapes6  s:    

##

$r   r6   r9   rW   rA   rtr`    r   r]   rf   c             C   s  d } d } x | t  |   k  r	| r d } |  | t k rr |  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 r d	 } | d 7} q W|  S)
z%Unescape characters in a TOML string.r   FNr   r^   uUzReserved escape sequence usedT)r@   _escapes_escape_to_escapedcharsr   )r   r   	backslashr   r   r   	_unescape`  s"    5% 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   v  s   r   c               @   s   e  Z d  Z e d d  Z d d   Z d d   Z d 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)rQ   c             C   s   | |  _  d  S)N)r,   )r#   r,   r   r   r   r   |  s    zTomlDecoder.__init__c             C   s
   |  j    S)N)r,   )r#   r   r   r   rR     s    zTomlDecoder.get_empty_tablec             C   s#   Gd 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   s  | d d  j  d  } g  } t |  d k rL | d j   rL | j   x5t |  d k r| j d  } y | j  d d  \ } }	 Wn t k
 r t d   Yn X|	 j   }	 |	 d |	 d k r |	 d d k s9|	 d d k s9|	 d k s9|	 d d k r|	 d d k s9|	 d d k rI|	 d d k rI| j |  qO t |  d k rt| d | d | d <qO t d   qO Wx3 | D]+ }
 |  j |
 | | |  } | d  k	 rPqWd  S)Nr   ,r   rb   z Invalid inline table encounteredr`   ra   z-0123456789truefalserd   re   rg   rh   z&Invalid inline table value encounteredr>   r>   )r`   ra   )ztruezfalser>   r>   )rs   r@   r?   popr   r{   r~   )r#   r   r   r   r   Zcandidate_groupsr   Zcandidate_groupr5   r1   r   statusr   r   r   r}     s4    #
$  	zTomlDecoder.load_inline_objectc             C   s/  | j  d  } d } g  } t |  d k r d | d k r | d j  d  } | d d   } x} t |  d d k r t |  r | d d | d 7<| d d   } d | d k rc | d  d	  | d
 j  d  } qc W| | 7} x> | D]6 } | r| j |  q | | j  d  7} | } q W| S)Nr`   Fr   ra   r   r_   r>   r>   r>   r>   )rs   r@   r{   )r#   r   Zdoublequotesplitsr   r   ZsinglequotesplitsZdoublequotesplitr   r   r   rv     s&    "%
z TomlDecoder._get_split_on_quotesc             C   s	  d } |  j  |  } d } x< | D]4 } | r< d | k r< P| | j d  7} | } q" W| j d |  }	 t |	 d  }
 t j |	 d  r |	 d j d d  |	 d <xct |	 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! j   d k r|	 d" j   d k ry t	 |	 d#  PWn t
 k
 rYn Xt |	 d$  d  k	 rPt j |	 d%  rP| d 7} |	 d& } | j d |  }	 | |	 d' k rt
 d   |
 r t |	 d(  }
 q Wd j |	 d  d)   j   |	 d* j   g }	 d |	 d k rd
 |	 d k snd	 |	 d k r|  j  |	 d  } d } g  } xa | D]C } | r| j |  n  | d d   | j d  D 7} | } qWn |	 d j d  } x$ | d+ d k r| d  d,  } qWxM | d  d-  D]; } | d k r>q)| | k rZ|  j   | | <| | } q)W| d. j   |	 d <nb |	 d d d
 k s|	 d d d	 k r|	 d d/ |	 d d k rt |	 d d d0   |	 d <|  j |	 d  \ } } | d1 k rzx9 | d2 k rA|	 d | | d k rA| } | d 8} q	W| r_|	 d d  d3  } n |	 d d } |	 d } n |  j |	 d |
  \ } } y | |	 d t
 d   WnP t k
 rt
 d   Yn3 t k
 r| r| | | f S| | |	 d <Yn Xd  S)4Nr   Frb   r5   r\   r   r)   rf   ra   r`   rd   rg   r   r   zInvalid date or numberr7   c             S   s   g  |  ] } | j     q Sr   )r?   )rG   levelr   r   r   rI     s   	 z)TomlDecoder.load_line.<locals>.<listcomp>r^   r   zDuplicate keys!r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   )rv   r   rs   rB   _number_with_underscoresrx   replacer@   r?   floatr   r   TIME_RErr   r{   rR   r   _load_line_multiline_strru   rV   r|   )r#   r   r   r   r   r   r   r   r   pairstrictly_validZprev_valZlevelsr   r   Zkoffsetr   r1   r   r   r   r   r~     s    ;((

/ ('zTomlDecoder.load_linec             C   s  d } t  |  d k  r" d | f S| d d k r| j   d d k r|  j |  r| d d   j   j d  } xe t  |  d k r | d d d k r | d d d k r | d  d  | d d | d g } qy W| d } t  |  t  |  } | } | d d k r.| d d k r.d | f S| d | d k sV| d	 | d k r`d | f St  |  d
 k r| d | d k r| d | d k r| d | d k rd | f St  |  d | f S)Nr   r   r   rd   re   r   r`   ra   r_   r   r>   r>   r>   r>   ri   ri   r>   r>   r>   r>   r>   ri   rj   r>   )r@   r?   _load_array_isstrarrayrs   )r#   r
   ZpoffsetZnewpr   r   r   r     s$    
&=+
 
(
N
z$TomlDecoder._load_line_multiline_strTc             C   s  | s t  d   | d k r" d, S| d k r2 d- S| d d k sR | d d	 k r| d } | d
 d   j |  } 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} qd } q d }	 yB d. }
 | |
 } x+ | d k rJ|	 }	 |
 d
 8}
 | |
 } q WWn t k
 r`Yn X|	 s | rt  d d   q | s| d
 k rd } q d } q W| d k r| j d  d
 d   } d } xs | D]k }
 |
 d k r| } q|
 d t k r7|
 d d k r7|
 d d k r7| r7t  d   | rd } qWxO d d g D]A } | | k rT| j |  } t | d | d
 d   |  } qTWt |  } t |  d
 k r| d
 | k rt |  d k  s| d
 | d k r| d d/  } | d
 d0  d f S| d d k r4|  j |  d f S| d d k rj|  j   } |  j	 | |  | d f St
 j |  rt
 j |  j   \ } } } } } t j t |  t |  t |  | rt |  n d  } | d f St |  } | d  k	 r| d f S| st  d   d } d } | d d k rLd } | d
 d   } n  | d d  k rl| d
 d   } | j d! d  } | j   } d" | k sd# | k rd$ | k sd% | k rd" | k r| j d" d
  d
 d k rt  d&   | d d' k r
t  d(   t |  } d) } n< t |  d k r[| d* k sI| d+ k r[t |  } d) } | d k rvt | d  } | rd | | f S| | f Sd  S)1NzEmpty value is invalidr   Tboolr   Fr   r`   ra   r   r\   r_   r^   zFound tokens after a closed zstring. Invalid TOML.r   r   zReserved escape sequence usedz\uz\Ur   r   rd   arrayrg   inline_objecttimer   z<Weirdness with leading zeroes or underscores in your number.r   r<   r;   r5   r7   r:   eEz,This float is missing digits after the point
0123456789z'This float doesn't have a leading digitr   infnan)Tbool)Fr   r>   ri   r>   )r   rs   r@   rp   r   r   r   
load_arrayr   r}   r   rx   r   r   r   r   r   r   r   r   )r#   r   r   	quotecharZtestvZtriplequoteZtriplequotecountr   tvr   r   r   Z
escapeseqsr   r   r   r   hmr   r5   msr   Zparsed_dateZitypenegZlowervr   r   r   ru   )  s     
2	

	

 
4
$<

0(	*zTomlDecoder.load_valuec             C   s   t  |  d k r d S| d | d k r. d Sd } d } x? t  |  | d k r{ | | d k rw | } | d 8} q= Pq= W| S)	Nr   Tr   Fr_   r^   r>   ri   )r@   )r#   r   r   r   r   r   r   bounded_string  s    zTomlDecoder.bounded_stringc             C   sJ   | d d  j    } | d k rF | d d k sB | d d k rF d Sd S)	Nr   r\   r   r`   ra   TFr>   )r?   )r#   ar   r   r   r     s    ,z"TomlDecoder._load_array_isstrarrayc             C   s  d  } g  } | j    } d | d d  k sW d | d d  j d  d j    k r|  j |  } | d d  j    j d  s | d d  j d  } ng  } d } d } | | d k r d n d } d }	 xw| t | d d    k  rN| | d	 k s| | d
 k r_|	 rX| d }
 x1 |
 d k rW| |
 d k rW|	 }	 |
 d 8}
 q'W|	 }	 |	 r| | d k r| d 7} |	 s| | d k r| d 7} q n3 | | d k r| d k r| d 8} | d 7} q | d 7} | j | | |   | d } x: | t | d d    k  r@| | d k r@| d 7} qW| d } q W| } d } | rux| t |  d k  r| | j    } x |  j |  st |  d k r| d | d k o| d k n r| d | d k r| d | d k r| | d | | d | | <| | j    } | t |  d k  rl| d  | d  | | d d   } q| d  | d  } qW| d 7} qdWn t | d d   } g  } d } d } x t t |   D] } | | d k r| d 7} q| | d k r| d 8} q| | d k r| r| j d j	 | | |    | d } qW| j d j	 | | d     x t t |   D]w } | | j    | | <| | d k r|  j
 | |  \ } } | r| | k rt d   n | } | j |  qW| S)Nrd   r   r\   r   rg   r   r_   Fr`   ra   r^   rh   r   re   zNot a homogeneous arrayr>   r>   r>   r>   r>   ri   rj   r>   )r?   rs   r   
startswithr@   r{   r   rN   ry   rr   ru   r   )r#   r   Zatyper   ZstrarrayZnew_aZstart_group_indexZend_group_indexZopen_bracket_countZin_strZbackslash_indexr9   abalr   r   r   ZnvalZntyper   r   r   r     s    ? 






()  zTomlDecoder.load_arrayc             C   s   d  S)Nr   )r#   r   r/   r+   r-   r   r   r   rq     s    zTomlDecoder.preserve_commentc             C   s   d  S)Nr   )r#   r   r   r   r   r   rt   	  s    zTomlDecoder.embed_commentsN)r$   r%   r&   dictr   rR   r   r}   rv   r~   r   ru   r   r   r   rq   rt   r   r   r   r   rQ   z  s   Tm[rQ   c                   s=   e  Z d  Z e   f d d  Z d d   Z d d   Z   S)TomlPreserveCommentDecoderc                s#   i  |  _  t t |   j |  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   r/   r+   r-   r   r   r   rq     s    z+TomlPreserveCommentDecoder.preserve_commentc             C   sM   | |  j  k r d  S|  j  | \ } } } t | | | | |  j  | | <d  S)N)r   r(   r,   )r#   r   r   r/   r+   r-   r   r   r   rt     s
    z)TomlPreserveCommentDecoder.embed_comments)r$   r%   r&   r   r   rq   rt   r   r   )r   r   r     s   r   ).r   rJ   r   r   rer   Zpip._vendor.toml.tzr   r   xrangery   r   r3   ranger   chrr   r   r   r   FileNotFoundErrorrP   	NameErrorIOErrorcompiler   r   r   r   objectr(   rB   r   rT   rw   rL   r   r   r   Z_escapedcharszipr   r   r   rQ   r   r   r   r   r   <module>   sJ   		
1 c/# 