U o a@sddlZddlZddlZddlmZejdkr2eZddZdddZ dd Z d d Z d d Z Gddde ZGdddeZGdddeZdS)N)InlineTableDictcCs$|jstdt|}|||S)a0Writes out dict as toml to a file Args: o: Object to dump into toml f: File descriptor where the toml should be stored Returns: String containing the toml corresponding to dictionary Raises: TypeError: When anything other than file descriptor is passed z0You can only dump an object to a file descriptor)write TypeErrordumps)ofdr YC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_vendor\toml\encoder.pydump s  r c Csd}|dkrt|j}||d\}}||7}|r|}|D]z}||||\}}|sb|s|s|r~|dddkr~|d7}|d|d7}|r||7}|D]}||||d|<qq>|}q.|S) zStringifies input dict as toml Args: o: Object to dump into toml preserve: Boolean parameter. If true, preserve inline tables. Returns: String containing the toml corresponding to dict Nz  [] .) TomlEncoder __class__ dump_sectionsget_empty_table) rencoderretval addtoretvalsections newsectionssection addtosectionssr r r r s,   rcCsXtjdkr(t|dr(t|tr(|d}d|}|ddkrH|dd}|d}|s`|d rl|dd }|r|d d}|d d }|d }t |dkrDd }|ds|dd}|ddd|d<|d|dk}|dd|r|d|dkr| }|d8}q|rd}nd}|d||dg|dd}qt d |dd S)Nrdecodezutf-8z%rru'"z\'z\"z\xz\\\xu00) sys version_infohasattr isinstancestrr startswithreplacesplitlenunicode)v singlequoteijoinxjoinerr r r _dump_strCs4         $ $r9cCsd|ddddS)Nz{0:.16}ze+0ze+ze-0ze-)formatr0r4r r r _dump_floatbsr<cCs(|}|dkr|S|ddS)Ni) utcoffset isoformat)r4r=r r r _dump_timefsr?c@sBeZdZedfddZddZddZdd Zd d Zd d Z dS)rFcCsR||_||_ttttt|jtddtddt t t j ddt j t t jddi |_dS)NcSs t|SN)r3lowerr;r r r wz&TomlEncoder.__init__..cSs|Sr@r r;r r r rBxrCcSs|ddS)Nz+00:00Z)r>r0r;r r r rBzrCcSs|Sr@)r>r;r r r rB|rC)_dictpreserver.r9r3list dump_listboolintfloatr<datetimetimer?date dump_funcs)selfrErFr r r __init__ps*zTomlEncoder.__init__cCs|Sr@)rE)rPr r r rszTomlEncoder.get_empty_tablecCs4d}|D]}|dt||d7}q|d7}|S)Nr ,])r3 dump_value)rPr4rr!r r r rHs zTomlEncoder.dump_listcCsld}t|trZg}|D]$\}}||}||d|q|dd|d7}|St||SdS)zPreserve inline table in its compact syntax instead of expanding into subsection. https://github.com/toml-lang/toml#user-content-inline-table r = z{ z, z } N)r-dictitemsdump_inline_tableappendjoinr3rU)rPrrval_listkr4valr r r rYs  zTomlEncoder.dump_inline_tablecCsJ|jt|}|dkr,t|dr,|jt}|dk r<||S|jt|S)N__iter__)rOgettyper,rGr.)rPr4dump_fnr r r rUs zTomlEncoder.dump_valuecCs.d}|dkr |ddkr |d7}|}d}|D]}t|}|}td|spd|krdd|d}n d|d}t||tsd}t||tr||D]} t| trd}q|r||D]} d } |d ||d 7}|| ||\} } | r| d d kr | | 7} n|| 7}| r|} | D]p}|| |||d|\}}|rr| d ||d|d7} | |7} |D]}||| |d|<qvq$| } q|| 7}qn0||dk r||dt|||d 7}q0|j rt||t r||d| ||7}q0||||<q0||7}||fS)Nrr%rz^[A-Za-z0-9_-]+$r$r#FTrz[[z]] rrrrV) rEr3rematchr-rWrGrrUrFrrY)rPrsupretstrretdictarraystrrqsection arrayoftablesa arraytabstrrr newddsecs1d1r r r rs~            zTomlEncoder.dump_sectionsN) __name__ __module__ __qualname__rWrQrrHrYrUrr r r r rns rcs eZdZeffdd ZZS)TomlPreserveInlineDictEncodercstt||ddS)NT)superrtrQ)rPrErr r rQsz&TomlPreserveInlineDictEncoder.__init__)rqrrrsrWrQ __classcell__r r rvr rtsrtcs,eZdZeddffdd ZddZZS)TomlArraySeparatorEncoderFrScsDtt||||dkr(d|}n|dr:td||_dS)NrrSz ,zInvalid separator for arrays)rurxrQstrip ValueError separator)rPrErFr{rvr r rQs    z"TomlArraySeparatorEncoder.__init__cCsg}d}|D]}|||q |gkrtg}|D]:}t|trV|D]}||qDq2|dt||j7}q2|}q"|d7}|S)NrrRrT)rZrUr-rGr3r{)rPr4trr!rrr r r rHs z#TomlArraySeparatorEncoder.dump_list)rqrrrsrWrQrHrwr r rvr rxsrx)N)rLrcr*pip._vendor.toml.decoderrr+r.r3r rr9r<r?objectrrtrxr r r r s   #m