U o a@sRddlZddlZddlmZddlZddlZddlmZejdkrHe Z ne Z e Z e ZeZddZddZd d ZzeZWnek reZYnXed ZGd d d eZedZddZedfddZedZ edfddZ!ddZ"ddZ#ddddddd gZ$d!d"d#d$d%d&d gZ%ee&e$e%Z'd'd(Z(Gd)d*d*e)Z*Gd+d,d,e)Z+dS)-N)linesep)TomlTz)cCs&dtjkr"ddl}t||jr"dSdS)N)rrTF)sys version_infopathlib isinstancePurePath)prr YC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_vendor\toml\decoder.py_detect_pathlib_paths   rcCst|trdSt|S)NT)r basestringr)r r r r _ispaths rcCs0dtjkrddl}||St|r,t|S|S)N)rr)rrosfspathrstr)r rr r r _getpath s   rz1([0-9]{2}):([0-9]{2}):([0-9]{2})(\.([0-9]{3,6}))?c@seZdZdZddZdS)TomlDecodeErrorzBase toml Exception / Error.cCsb|dd|d}||dd|}d||||}t||||_||_||_||_||_ dS)N rz{} (line {} column {} char {})) countrfindformat ValueError__init__msgdocposlinenocolno)selfrrr r!r"emsgr r r r5s zTomlDecodeError.__init__N)__name__ __module__ __qualname____doc__rr r r r r2srz([0-9])(_([0-9]))*cCs|}|sdS|ddkr dS|ddkr0dSd|ks@d|krDdSt|dkrTdS|dd krp|dd krpdS|dd ks|dd kr|dd}t|dkr|dd kr|dd krdSd|krdSdS)NFr_z_.z._rT0).obx+-r,__)striplen)nr r r _strictly_valid_numEs(    $r6c st|r@tjt|dd}t|||W5QRSQRXnt|trddlm ddl m }fdd|Dsd}|t 7}|d 7}t ||d krt}|}|D]*}|r|t|||q|d q|Szt|||WStk r td YnXd S) a?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 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 zutf-8)encodingr)path)warncsg|]}|r|qSr )exists).0r8opr r ts zload..z.Load expects a list to contain filenames only.zAThe list needs to contain the path of at least one existing file.Nz>Non-existent filename in list with at least one valid filenamez5You can only load a file descriptor, filename or list)rioopenrloadsreadr listrr8warningsr9rFNFError TomlDecoderget_empty_tabler:updateloadAttributeError TypeError)f_dictdecoderffiler9 error_msgdlr r<r rI\s.$     rIz^[A-Za-z0-9_-]+$c( Cs g}|dkrt|}|}|}t|ts2tdt|tsF|d}|}t|}d}d} d} d} d} d} d}d}d}t|D]\}}|dkr||d d krd ||<q~|r|d krt d ||| r|| kr~d }d} d} q~n|d krb| rd }q~nf|dkr d}q~nT| s~|dks~|dkr*q~n6|r||d dkr|dksV|dkrd} |} q~nj|d kr| r|r~||d }| s~|dkr~d }q~|dkrd}||d }| s~|dkr~d }q~|dkrd}d}nt d|d|||dkr| dkrd }z0|||dkr:|d 7}|dkrq:qWnt k rRYnX|dkrj| } | } n| } | r|d} nd} |dkrX| dkrXd}d }d}zr|||dkr|d 7}|dkrd}qҐq|d ks|dkr|r|||dkr| }|d 7}qWnt k r(YnX|sH|rB| } | } n| } | rTd} nd} |dkr| s|s| s|}z&||d krd ||<|d 7}qzWnt k rYqVYnX|dkr| s|s| s| rt ||d kr ||d dkr d} nd}n|d 7}|dkrZ| sZ|r4d}n&| rR||d dkrZd} n|d 8}|d kr| sp| r| st d||||d dks||d dkr ||d ||d kr ||d ||<||d||d kr d ||d<n|rd ||<nd} q~| r~||d kr~||dkr~d} |s~| s~||dkrPt d||d }q~d|}|d }d}d} d}d}t|D]\}}|dkr|t ||d d 7}| r|sd | kr|}|dkr|r|rq|r|r| |7} n| |7} d}t |d kr|d| dkr|d| dkr|d | dkrz|| \}}Wn4tk r}zt t|||W5d}~XYnX|||<d}d} nRt | d }|dkr| |dkr| }|d 8}q|r| dd} n| d 7} q|ddk rd} t |d kr(t d!|||d dkrLd} |d d}d"} n|d d}d} d }||}!d}"|!D]0}#|"s| |#krq||#| 7}|" }"qr|| |}t ||d ks|ddkrt d#||| |ddd}$d}|t |$k r|$||$|<t |$|dkr|$|ddksP|$|ddkr|$|}%|d }|%d|%dks|d 7}|t |$d krt d$|%d%d&||d|$||}%q`|%d d|$|<g|$|d |<n(t|$| st d$|$|d'|||d 7}q|}tt |$D]}|$|}&|&dk rHt d(||z|||&|t |$d k r|&|k r||&| rt d)||n6| r||&|nt d*|&d+t|||Wntk r|d}|&|k r|||&<|t |$d k r| r|g||&<Yndtk r|t |$d k rJ||&|||&<|t |$d k r|| r||g||&<YnX||&}| r$z |d}Wntk rYnX q$n|dd,k r.|dd-k rt d.||z|||||Wn4tk r*}zt t|||W5d}~XYnXnhd|krz|||||}'Wn4tk r}zt t|||W5d}~XYnX|'dk r|'\}} }q|S)/aDParses 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 stringutf8rFT rr z2Key name found without value. Reached end of line.r,r)r1"'=z&Found invalid character in key name: 'z'. Try quoting the key name.r\#[]zUnbalanced quotes zFound empty keyname. r*z,Opening key group bracket on line by itself.z]]z"Key group not on a line by itself.zInvalid 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 arrayzWhat? z already exists?{}z,Line breaks are not allowed in inlineobjects)rFrGr rrKunicodedecoderC enumeraterisspaceisalnum IndexErrorr4joinsplitr3 load_valuerr_get_split_on_quotesr _groupname_rematch_rangeremoveappendKeyErrorload_inline_object load_line)(srMrNimplicitgroupsretval currentleveloriginalslopenarr openstring openstrchar multilinestr arrayoftables beginlinekeygroup dottedkeykeynameiitemnextitemk oddbackslash tripquotejmultikeymultibackslashr idxlinevaluevtypeerrsplitstr quotesplitsquoted quotesplitgroupsgroupstrgroupretr r r rAs               $   $       "       $$           $  " rAc Csd}d}zt|dkr|ddkr|ddkrD|dd}d}nl|dd}d|kr||d}|d|}||d}n4d|kr|d}|d|}||d}nd}|}|dk rt|}tt|d d t|}nt|dd}Wntk r d}YnXd|d dkr"dSzt|d krftt|dd t|d dt|dd }n`tt|dd t|d dt|dd t|ddt|ddt|dd||}Wntk rYdSX|S)Nrr,r*Zr0r1 rrr )r4upperindexrintrdatetimedate)val microsecondtz subsecondvaltzvalsubsecondvalandtz splitpointrQr r r _load_datesb         rcCs(d}t|d}|dkr4||dkr4| }|d8}q|D]}|rd}t|d}|dkrt||dkrt| }|d8}qP||7}||7}q8d}d}d}|dkrd }d||||}|d rtd ||dd kr|dd rtd |d|tt|d7}|t|t|d7}q8|S)NFrr*r[rTrr\Ur0123456789abcdefzInvalid escape sequence: rQ01234567z). Only scalar unicode points are allowed.r)r4rjlowerr3runichrrrd)vhexbytesprefixskiprhxhxbhxblenr r r _load_unicode_escapess<      rr+r.rLr5rtrX rrUr_cCsd}d}|t|kr|rd}||tkrV|d|dt||||dd}q||dkr|d|d||d}q||dks||dkr|d7}qtdqn||dkrd }|d7}q|S) z%Unescape characters in a TOML string.rFNrr[uUReserved escape sequence usedT)r4_escapes_escape_to_escapedcharsr)rr backslashr r r _unescape)s"  .    rc@seZdZdZdS)InlineTableDictz,Sentinel subclass of dict for inline tables.Nr%r&r'r(r r r r r?src@s\eZdZefddZddZddZddd Zd d Zd d Z dddZ ddZ ddZ dS)rFcCs ||_dSNrM)r#rMr r r rEszTomlDecoder.__init__cCs|Srr)r#r r r rGHszTomlDecoder.get_empty_tablecCsGddd|jt}|S)Nc@seZdZdZdS)zBTomlDecoder.get_empty_inline_table..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 Nrr r r r DynamicInlineTableDictLsr)rMr)r#rr r r get_empty_inline_tableKsz"TomlDecoder.get_empty_inline_tableFc CsR|ddd}g}t|dkr6|ds6|t|dkr"|d}z|dd\}} Wntk r~tdYnX| } | d| dkr| ddks| ddks| d ks| dd kr| dd ks| dd kr| dd kr||q6t|dkr|d|d|d<q6tdq6|D]&} || |||} | dk r&qNq&dS)Nrr*,rrZz Invalid inline table encountered)rXrYz -0123456789)truefalser]r^rbrcz&Invalid inline table value encountered)rkr4r3poprrrru) r#rryrrcandidate_groupsrcandidate_groupr)rrstatusr r r rtVsH           zTomlDecoder.load_inline_objectcCs|d}d}g}t|dkrd|dkr|dd}|dd}t|ddkrt|r|dd|d7<|dd}d|dkrD|dd|dd}qD||7}|D](}|r||q||d7}| }q|S)NrXFrrYrrWr*)rkr4rr)r#rdoublequotesplitsrrsinglequotesplitsdoublequotesplitr r r rmts(       z TomlDecoder._get_split_on_quotescCsd}||}d}|D](}|s*d|kr*q@||d7}| }q|d|} t| d} t| drz| ddd| d<t| dr| dddkr| ddd kr| ddd kr| ddd kr| ddd kr| ddd kr| ddkr| ddkrzt| dWqWnt k r<YnXt | ddk rTq|d7}| d} |d|} | | dkrt d| rzt| d} qzd | dd | d g} d| dkrd | dksd | dkr8|| d}d}g} |D]6}|r| |n| dd|dD7} | }qn| dd} | ddkrd| dd} qF| ddD]2} | dkrqp| |kr||| <|| }qp| d | d<nR| ddd ks| ddd kr| dd| ddkr| ddd| d<t| ddkr>| ddd ks>| ddd kr>| dd| ddkr>| dd| ddkr>t| ddkr| dd| ddkr| dd| ddkr| dd| ddks>t| dd}|dkr| d|dkr| }|d8}q|r(| ddd}n | dd}| d}n|| d| \}}z|| dt dWnRtk rt dYn6tk r|r|||fYS||| d<YnXdS)NrFrZr*r)rTrrVr_rYrXr]rbrrzInvalid date or numberr,cSsg|] }|qSr )r3)r;levelr r r r>sz)TomlDecoder.load_line..rWrr`rar[rzDuplicate keys!)rmrrkr6_number_with_underscoresroreplacer4floatrrrjr3rrrGrlrKrs)r#rryrrrrrrpairstrictly_validprev_vallevelsrrrrrr r r rus    2     "      $6      zTomlDecoder.load_lineTc Cs>|s td|dkrdS|dkr$dS|ddks>|ddkrP|d}|d d|}d }d}t|d kr|dd kr|d d kr|d d}d }d }|D]}|d kr|r|d 7}nd }qd } z0d} || } | dkr| } | d 8} || } qWntk rYnX| s|rtdq|r,|d kr2d }qd}q|dkr|dd d} d } | D]Z} | d krr| } nB| dtkr| ddkr| ddkr| std| r\d } q\dD]2}||kr||}t|d|d d|}qt|}t|d kr@|d |kr@t|dks4|d |d kr@|d d}|d ddfS|ddkrl||dfS|ddkr|}| |||dfSt |rt | \}}}}}t t|t|t||rt|nd}|dfSt|}|dk r|dfS|stdd}d }|dd krsF       0 C/#