t_(@s ddlZddlZddlmZddlZddlZddlmZejdfkrke Z ne Z e Z e ZeZddZddZd d Zy eZWnek reZYnXejd ZGd d d eZejdZGdddeZddZe dddZ!ejdZ"e dddZ#ddZ$ddZ%ddddd d!d"gZ&d#d$d%d&d'd(d"gZ'e e(e&e'Z)d)d*Z*Gd+d,d,eZ+Gd-d.d.eZ,Gd/d0d0e,Z-dS)1N)linesep)TomlTzcCs5dtjkr1ddl}t||jr1dSdS)NrrTF)rr)sys version_infopathlib isinstancePurePath)prr /builddir/build/BUILDROOT/alt-python35-pip-20.2.4-1.el7.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/toml/decoder.py_detect_pathlib_paths  rcCs#t|ttfrdSt|S)NT)r bytes basestringr)r r r r _ispathsrcCsBdtjkr(ddl}|j|St|r>t|S|S)Nrr)rr)rrosfspathrstr)r rr r r _getpath s     rz1([0-9]{2}):([0-9]{2}):([0-9]{2})(\.([0-9]{3,6}))?c@s"eZdZdZddZdS)TomlDecodeErrorzBase toml Exception / Error.cCs|jdd|d}||jdd|}dj||||}tj||||_||_||_||_||_ dS)N rz{} (line {} column {} char {})) countrfindformat ValueError__init__msgdocposlinenocolno)selfrr r!r"r#emsgr r r r5s    zTomlDecodeError.__init__N)__name__ __module__ __qualname____doc__rr r r r r2s rz([0-9])(_([0-9]))*c@s@eZdZddZddZddZddZd S) CommentValuecCs5||_|rdnd}|||_||_dS)Nr )valcomment_dict)r$r,r- beginliner. separatorr r r rFs  zCommentValue.__init__cCs |j|S)N)r,)r$keyr r r __getitem__LszCommentValue.__getitem__cCs||j|dSd|ksVd|krZdSt|dkrpdS|ddkr|ddkrdS|dd ks|ddkr|dd}t|dkr|ddkr|dd krdSd|kr dSdS)NFr_rz_.z._T0.obx+-__)r;r<r=r>)striplen)nr r r _strictly_valid_numZs(   2 rFc set|rJtjt|dd}t|j||SWdQRXnt|tr&ddlm ddl m }fdd|Dsd }|t 7}|d 7}t ||dkrt|}|j}xC|D];}j|r|jt|||q|d qW|Syt|j||SWntk r`td YnXdS) acParses 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 encodingzutf-8Nr)path)warncs%g|]}j|r|qSr )exists).0rH)opr r s zload..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)rioopenrloadsreadr listrrHwarningsrIrFNFError TomlDecoderget_empty_tablerJupdateloadAttributeError TypeError)fr.decoderffilerI error_msgdlr )rLr rXqs.          rXz^[A-Za-z0-9_-]+$c-Csg}|dkrt|}|j}|}t|tsKtdt|tsi|jd}|}t|}d}d} d} d} d} d} d}d}d}d}d}d}xt|D]\}}|d kr ||dd kr d || |d7}|t|)dkr t d#|*d$d%||dj|)||j}*q W|*dd8|)|.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 DynamicInlineTableDicts r)r.r)r$rr r r get_empty_inline_tablesz"TomlDecoder.get_empty_inline_tableFc Cs|ddjd}g}t|dkrL|dj rL|jx5t|dkr|jd}y|jdd\}} Wntk rtdYnX| j} | d| dkr| ddks9| ddks9| dks9| dd kr| dd ks9| dd krI| ddkrI|j|qOt|dkrt|d|d|d|D]6}|r |j|q||jd7}| }qW|S) NrfFrrgrrerBrBrBrB)ryrDr)r$rdoublequotesplitsrrsinglequotesplitsdoublequotesplitr r r r|s&"%    z TomlDecoder._get_split_on_quotesc Cs d}|j|}d}x<|D]4}| r<d|kr<P||jd7}| }q"W|jd|} t| d} tj| dr| djdd| dq)| |krZ|j|| <|| }q)W| d.j| d.rdrzDuplicate keys!rBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrB)r|rryrF_number_with_underscoresr~replacerDrCfloatrrTIME_RErxrrVr_load_line_multiline_strr{rZr)r$rrrrrrrrpairstrictly_validprev_vallevelsrrkoffsetrr3rr r r rs  ;((    /     ( '     zTomlDecoder.load_linecCsd}t|dkr"d |fS|ddkr|jd dkr|j|r|ddjjd}xet|dkr|d ddkr|dddkr|dd|dd|dg}qyW|d}t|t|}|}|ddkr.|ddkr.d|fS|d|dksV|d |dkr`d|fSt|d kr|d|dkr|d|dkr|d|dkrd|fSt|d|fS)NrrrrjrkrrfrgrerrBrBrBrBrororBrBrBrBrBrorprB)rDrC_load_array_isstrarrayry)r$r poffsetnewpr r r rs$ &=+   ( N z$TomlDecoder._load_line_multiline_strTc Cs|std|dkr"d,S|dkr2d-S|ddksR|dd kr|d}|d dj|}d}d}t|d kr|dd kr|d d kr|d d}d}d}x|D]}|d kr|r|d 7}qd}qd} yBd.} || } x+| d krJ| } | d 8} || } q WWntk r`YnX| s|rtddq| s|d krd}qd}qW|dkr|jd d d} d} xs| D]k} | d kr| } q| dtkr7| ddkr7| ddkr7| r7td| rd} qWxOddgD]A}||krT|j|}t|d|d d|}qTWt|}t|d kr|d |krt|dks|d |d kr|d d/}|d d0dfS|ddkr4|j|dfS|ddkrj|j}|j |||dfSt j |rt j |j \}}}}}t jt|t|t||rt|nd}|dfSt|}|dk r|dfS|stdd}d}|ddkrLd}|d d}n |dd krl|d d}|jd!d }|j}d"|ksd#|krd$|ksd%|krd"|kr|jd"d d d krtd&|dd'kr td(t|}d)}n<t|dkr[|d*ksI|d+kr[t|}d)}|dkrvt|d}|rd||fS||fSdS)1NzEmpty value is invalidrTboolrFrrfrgrrbrerdzFound tokens after a closed zstring. Invalid TOML.rrzReserved escape sequence usedz\uz\Urrrjarrayrm inline_objecttimerzeEz,This float is missing digits after the point 0123456789z'This float doesn't have a leading digitrinfnan)Tr)FrrBrorB)rryrDrvrrr load_arrayrrrr~rrrrrrrr)r$rr quotechartestv triplequotetriplequotecountrtvrrr escapeseqsrrrrhmrr9msr parsed_dateitypeneglowervr r r r{)s     2                    4  $<      0(    *  zTomlDecoder.load_valuecCst|dkrdS|d|dkr.dSd}d}x?t||dkr{||dkrw| }|d8}q=Pq=W| S) NrTrFrerdrBro)rD)r$rrrr r r bounded_strings zTomlDecoder.bounded_stringcCsJ|ddj}|dkrF|ddksB|ddkrFdSdS) NrrbrrfrgTFrB)rC)r$ar r r rs,z"TomlDecoder._load_array_isstrarraycCsd}g}|j}d|ddksWd|ddjddjkr|j|}|ddjjds|ddjd}ng}d}d}||dkrdnd}d} xw|t|ddkrN||d ks||d kr_| rX|d} x1| dkrW|| d krW| } | d8} q'W| } | r||dkr|d7}| s||d kr|d7}qn3||d kr|dkr|d8}|d7}q|d7}|j||||d}x:|t|ddkr@||dkr@|d7}qW|d}qW|}d} |rux| t|dkr|| j} x|j|  st| dkr| d| dko| dknr| d| dkr| d| dkr|| d|| d|| <|| j} | t|dkrl|d| d|| dd}q|d| d}qW| d7} qdWnt|dd} g}d}d}xtt| D]}| |dkr|d7}q| |dkr|d8}q| |dkr| r|jdj | |||d}qW|jdj | |dxtt|D]w}||j||<||dkr|j ||\}}|r||krt dn|}|j|qW|S)NrjrrbrrmrreFrfrgrdrnrrkzNot a homogeneous arrayrBrBrBrBrBrorprB) rCryr startswithrDrr rRrrxr{r)r$r atyperstrarraynew_astart_group_indexend_group_indexopen_bracket_countin_strbackslash_indexr=abalrrrnvalntyper r r rs ?        ()     zTomlDecoder.load_arraycCsdS)Nr )r$rr1r-r/r r r rwszTomlDecoder.preserve_commentcCsdS)Nr )r$rrr r r rz szTomlDecoder.embed_commentsN)r&r'r(dictrrVrrr|rrr{r rrrwrzr r r r rUzs     T m   [ rUcs=eZdZefddZddZddZS)TomlPreserveCommentDecodercs#i|_tt|j|dS)N)saved_commentssuperrr)r$r.) __class__r r rs z#TomlPreserveCommentDecoder.__init__cCs|||f|j|sJ            1c / #