a „oeiXã @sDddlmZddlmZddlZddlmZddlmZm Z m Z ddl m Z m Z mZmZmZmZddlmZmZmZed d „ed ƒDƒƒeed ƒƒBZeed ƒZeedƒZeZeZeZedƒZeedƒBZ eej!ej"dƒZ#e#edƒBZ$eej%ƒZ&edd ddddddœƒZ'Gdd„de(ƒZ)e*dœddddœd d!„Z+e*dœd"ddd#œd$d%„Z,Gd&d'„d'ƒZ-Gd(d)„d)ƒZ.Gd*d+„d+e ƒZ/d"d,d-d,d.œd/d0„Z0d"d,d"d1d2d,d3œd4d5„Z1d"d,d,d6œd7d8„Z2d"d,d,d6œd9d:„Z3d"d,d+d;d<œd=d>„Z4d"d,d+d;d<œd?d@„Z5d"d,d+dAdd,dBœdCdD„Z6d"d,ddEdFœdGdH„Z7d"d,d;d6œdIdJ„Z8d"d,dKd6œdLdM„Z9d"d,dKd6œdNdO„Z:d"d,ddPdFœdQdR„Z;d"d,ddSdFœdTdU„Zd"d,d]dKd^œd_d`„Z?d"d,dKd6œdadb„Z@d"d,d2dKdcœddde„ZAd"d,d2dKdXœdfdg„ZBd"d,ddhdFœdidj„ZCd"d,d"ddkœdldm„ZDd]d2dnœdodp„ZEdddqœdrds„ZFdS)té)Ú annotations)ÚIterableN)ÚMappingProxyType)ÚAnyÚBinaryIOÚ NamedTupleé)Ú RE_DATETIMEÚ RE_LOCALTIMEÚ RE_NUMBERÚmatch_to_datetimeÚmatch_to_localtimeÚmatch_to_number)ÚKeyÚ ParseFloatÚPosccs|]}t|ƒVqdS©N)Úchr©Ú.0Úi©rúAC:\Program Files\Certbot\pkgs\setuptools\_vendor\tomli\_parser.pyÚ óré éú z z Ú z-_z"'úú ú ú"ú\)z\bz\tz\nz\fz\rz\"z\\c@seZdZdZdS)ÚTOMLDecodeErrorz0An error raised if a document is not valid TOML.N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrr$5sr$©Ú parse_floatrrzdict[str, Any])Ú__fpr*ÚreturncCs>| ¡}z | ¡}Wnty0tdƒd‚Yn0t||d�S)z%Parse TOML from a binary file object.zEFile must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`Nr))ÚreadÚdecodeÚAttributeErrorÚ TypeErrorÚloads)r+r*ÚbÚsrrrÚload9s  ÿþr4Ústr)Ú__sr*r,cCsx| dd¡}d}ttƒtƒƒ}d}t|ƒ}t||tƒ}z ||}WntyZY�qpYn0|dkrn|d7}q*|tvr”t |||||ƒ}t||tƒ}nŠ|dk�rz||d}WntyÄd}Yn0|j   ¡|dkrêt |||ƒ\}}nt |||ƒ\}}t||tƒ}n|dk�rt||d ƒ‚t||ƒ}z ||}Wnt�yNY�qpYn0|dk�rft||d ƒ‚|d7}q*|jjS) zParse TOML from a string.z rrrrú[Nú#zInvalid statementz5Expected newline or end of document after a statement)ÚreplaceÚOutputÚ NestedDictÚFlagsÚmake_safe_parse_floatÚ skip_charsÚTOML_WSÚ IndexErrorÚKEY_INITIAL_CHARSÚkey_value_ruleÚflagsÚfinalize_pendingÚcreate_list_ruleÚcreate_dict_ruleÚ suffixed_errÚ skip_commentÚdataÚdict)r6r*ÚsrcÚposÚoutÚheaderÚcharZ second_charrrrr1EsN               ÿ r1c@s|eZdZdZdZdZddœdd„Zdd dd œd d „Zddœd d„Zdddœdd„Z dd dddœdd„Z dd dd œdd„Z dS)r<z)Flags that map to parsed keys/namespaces.rrÚNone©r,cCsi|_tƒ|_dSr)Ú_flagsÚsetÚ_pending_flags©ÚselfrrrÚ__init__�szFlags.__init__rÚint)ÚkeyÚflagr,cCs|j ||f¡dSr)rTÚadd©rVrYrZrrrÚ add_pending”szFlags.add_pendingcCs.|jD]\}}|j||dd�q|j ¡dS)NF©Ú recursive)rTrSÚclearr\rrrrD—szFlags.finalize_pending©rYr,cCsF|j}|dd…D]}||vr$dS||d}q| |dd¡dS)NéÿÿÿÿÚnested)rRÚpop)rVrYÚcontÚkrrrÚ unset_allœs zFlags.unset_allÚbool)rYrZr_r,cCsˆ|j}|dd…|d}}|D],}||vr@tƒtƒidœ||<||d}q ||vrjtƒtƒidœ||<|||rxdnd |¡dS)Nrb)rCÚrecursive_flagsrcrcrirC)rRrSr[)rVrYrZr_reÚ key_parentÚkey_stemrfrrrrS¤sz Flags.setcCs„|sdS|j}|dd…D]4}||vr,dS||}||dvrFdS|d}q|d}||vr€||}||dvp~||dvSdS)NFrbriTrcrC)rR)rVrYrZrerfZ inner_contrkrrrÚis_¯s  z Flags.is_N) r%r&r'r(ÚFROZENÚ EXPLICIT_NESTrWr]rDrgrSrlrrrrr<‡s r<c@sBeZdZddœdd„Zddœddd d œd d „Zddd œdd„ZdS)r;rPrQcCs i|_dSr)rJrUrrrrWÂszNestedDict.__init__T©Ú access_listsrrhrJ)rYrpr,cCsT|j}|D]D}||vri||<||}|rès   r>zfrozenset[str]rh)rKrLÚexpectÚerror_onÚ error_on_eofr,cCs†z| ||¡}Wn2tyBt|ƒ}|r>t||d|›�ƒd‚Yn0| |||…¡s‚|||vrl|d7}qVt||d||›�ƒ‚|S)Nz Expected rzFound invalid character )ÚindexÚ ValueErrorÚlenrGÚ isdisjoint)rKrLryrzr{Znew_posrrrÚ skip_untilñs   r€©rKrLr,cCsFz ||}Wnty"d}Yn0|dkrBt||ddtdd�S|S)Nr8rrF©rzr{)r@r€ÚILLEGAL_COMMENT_CHARS)rKrLrOrrrrHs   ÿrHcCs,|}t||tƒ}t||ƒ}||kr|SqdSr)r>ÚTOML_WS_AND_NEWLINErH)rKrLZpos_before_skiprrrÚskip_comments_and_array_wss   r…ztuple[Pos, Key])rKrLrMr,cCsÀ|d7}t||tƒ}t||ƒ\}}|j |tj¡sB|j |tj¡rVt||d|›d�ƒ‚|jj |tjdd�z|j   |¡Wn t yšt||dƒd‚Yn0|  d|¡s´t||dƒ‚|d|fS) NrzCannot declare z twiceFr^úCannot overwrite a valueú]z.Expected ']' at the end of a table declaration)r>r?Ú parse_keyrCrlr<rnrmrGrSrIrtrsÚ startswith©rKrLrMrYrrrrFs     rFcCsº|d7}t||tƒ}t||ƒ\}}|j |tj¡rDt||d|›�ƒ‚|j |¡|jj |tj dd�z|j   |¡Wn t y”t||dƒd‚Yn0| d|¡s®t||dƒ‚|d|fS)Néú"Cannot mutate immutable namespace Fr^r†z]]z0Expected ']]' at the end of an array declaration)r>r?rˆrCrlr<rmrGrgrSrnrIrvrsr‰rŠrrrrE.s     rEr)rKrLrMrNr*r,c s&t|||ƒ\}‰}ˆdd…ˆd}}ˆ|}‡‡fdd„tdtˆƒƒDƒ} | D]6} |j | tj¡rxt||d| ›�ƒ‚|j | tj¡qR|j |tj ¡r¬t||d|›�ƒ‚z|j   |¡} Wn t yÜt||dƒd‚Yn0|| vròt||dƒ‚t |ttfƒ�r|jjˆˆtj dd �|| |<|S) Nrbc3s|]}ˆˆd|…VqdSrrr©rNrYrrrJrz!key_value_rule..rzCannot redefine namespace rŒr†Tr^)Úparse_key_value_pairÚranger~rCrlr<rnrGr]rmrIrtrsrqrJrrrS) rKrLrMrNr*ÚvaluerjrkZabs_key_parentZrelative_path_cont_keysZcont_keyÚnestrr�rrBCs, ÿ  rBztuple[Pos, Key, Any])rKrLr*r,cCstt||ƒ\}}z ||}Wnty0d}Yn0|dkrFt||dƒ‚|d7}t||tƒ}t|||ƒ\}}|||fS)Nú=z,Expected '=' after a key in a key/value pairr)rˆr@rGr>r?Ú parse_value)rKrLr*rYrOr�rrrrŽes     rŽcCs’t||ƒ\}}|f}t||tƒ}z ||}WntyBd}Yn0|dkrT||fS|d7}t||tƒ}t||ƒ\}}||f7}t||tƒ}q dS)NÚ.r)Úparse_key_partr>r?r@)rKrLZkey_partrYrOrrrrˆus      rˆztuple[Pos, str]cCs€z ||}Wnty"d}Yn0|tvrL|}t||tƒ}||||…fS|dkr^t||ƒS|dkrpt||ƒSt||dƒ‚dS)Nú'r"z(Invalid initial character for a key part)r@ÚBARE_KEY_CHARSr>Úparse_literal_strÚparse_one_line_basic_strrG)rKrLrOÚ start_posrrrr•‡s      r•cCs|d7}t||dd�S)NrF©Ú multiline)Úparse_basic_str©rKrLrrrr™—sr™ztuple[Pos, list]cCsº|d7}g}t||ƒ}| d|¡r.|d|fSt|||ƒ\}}| |¡t||ƒ}|||d…}|dkrv|d|fS|dkrŠt||dƒ‚|d7}t||ƒ}| d|¡r.|d|fSq.dS)Nrr‡ú,zUnclosed array)r…r‰r“rurG)rKrLr*ZarrayÚvalÚcrrrÚ parse_arrayœs"         r¢ztuple[Pos, dict]c Cs^|d7}tƒ}tƒ}t||tƒ}| d|¡r:|d|jfSt|||ƒ\}}}|dd…|d}}| |tj¡r‚t ||d|›�ƒ‚z|j |dd�} Wn t y´t ||dƒd‚Yn0|| vrÐt ||d|›�ƒ‚|| |<t||tƒ}|||d…} | dk�r |d|jfS| d k�r"t ||d ƒ‚t |tt fƒ�rD|j|tjd d �|d7}t||tƒ}q:dS) NrÚ}rbrŒFror†zDuplicate inline table key rŸzUnclosed inline tableTr^)r;r<r>r?r‰rJrŽrlrmrGrtrsrqrrrS) rKrLr*Z nested_dictrCrYr�rjrkr‘r¡rrrÚparse_inline_table´s6       r¤Fr›)rKrLrœr,cCsì|||d…}|d7}|r�|dvr�|dkr|t||tƒ}z ||}Wnty^|dfYS0|dkrtt||dƒ‚|d7}t||tƒ}|dfS|dkr¤t||d ƒS|d kr¸t||d ƒSz|t|fWStyæt||dƒd‚Yn0dS) Nr‹>z\ ú\ z\ r¥ÚrzUnescaped '\' in a stringrz\uéz\Ué)r>r?r@rGr„Úparse_hex_charÚBASIC_STR_ESCAPE_REPLACEMENTSrs)rKrLrœZ escape_idrOrrrÚparse_basic_str_escapeÔs,         r«cCst||dd�S)NTr›)r«ržrrrÚ parse_basic_str_escape_multilineñsr¬rX)rKrLÚhex_lenr,cCsd||||…}t|ƒ|ks&t |¡s2t||dƒ‚||7}t|dƒ}t|ƒsXt||dƒ‚|t|ƒfS)NzInvalid hex valueéz/Escaped character is not a Unicode scalar value)r~ÚHEXDIGIT_CHARSÚ issupersetrGrXÚis_unicode_scalar_valuer)rKrLr­Zhex_strZhex_intrrrr©õs   r©cCs2|d7}|}t||dtdd�}|d|||…fS)Nrr–Tr‚)r€ÚILLEGAL_LITERAL_STR_CHARS)rKrLršrrrr˜s  ÿr˜)rKrLÚliteralr,cCs®|d7}| d|¡r|d7}|rLd}t||dtdd�}|||…}|d}nd}t||dd �\}}| ||¡sv||fS|d7}| ||¡s–|||fS|d7}|||d fS) Nérrr–ú'''Tr‚r"r›r‹)r‰r€Ú#ILLEGAL_MULTILINE_LITERAL_STR_CHARSr�)rKrLr³ÚdelimZend_posÚresultrrrÚparse_multiline_str s. û     r¹c Csú|rt}t}nt}t}d}|}z ||}Wn tyJt||dƒd‚Yn0|dkrž|sp|d||||…fS| d|¡r”|d||||…fS|d7}q|dkrÒ||||…7}|||ƒ\}}||7}|}q||vrìt||d|›�ƒ‚|d7}qdS) Nr¦zUnterminated stringr"rú"""r´r#zIllegal character )Ú!ILLEGAL_MULTILINE_BASIC_STR_CHARSr¬ÚILLEGAL_BASIC_STR_CHARSr«r@rGr‰) rKrLrœrzZ parse_escapesr¸ršrOZ parsed_escaperrrr�(s6   r�ztuple[Pos, Any]c Csîz ||}Wnty"d}Yn0|dkrP| d|¡rFt||dd�St||ƒS|dkr|| d|¡rrt||dd�St||ƒS|dkrœ| d |¡rœ|d dfS|d kr¼| d |¡r¼|d dfS|dkrÐt|||ƒS|dkrät|||ƒSt ||¡}|�rDz t |ƒ}Wn4t �y6}zt ||dƒ|‚WYd}~n d}~00|  ¡|fSt  ||¡}|�rf|  ¡t|ƒfSt ||¡}|�rŠ|  ¡t||ƒfS|||d…} | dv�r´|d|| ƒfS|||d …} | dv�rÞ|d || ƒfSt ||dƒ‚dS)Nr"rºF)r³r–rµTÚtÚtruer§ÚfZfalseér7Ú{zInvalid date or datetimer´>ÚinfÚnan>z+nanz+infz-infz-nanz Invalid value)r@r‰r¹r™r˜r¢r¤r Úmatchr r}rGÚendr r r r) rKrLr*rOZdatetime_matchZ datetime_objÚeZlocaltime_matchZ number_matchZ first_threeZ first_fourrrrr“HsT               $     r“)rKrLÚmsgr,cCs,ddddœdd„}t|›d|||ƒ›d�ƒS)zZReturn a `TOMLDecodeError` where error message is suffixed with coordinates in source.r5rr�cSsV|t|ƒkrdS| dd|¡d}|dkr4|d}n|| dd|¡}d|›d|›�S)Nzend of documentrrrzline z , column )r~ÚcountÚrindex)rKrLÚlineÚcolumnrrrÚ coord_repr�s  z suffixed_err..coord_reprz (at ú))r$)rKrLrÇrÌrrrrGŒs rG)Ú codepointr,cCs0d|kodknp.d|ko*dkSS)Nriÿ×iàiÿÿr)rÎrrrr±�sr±)r*r,cs$ˆtur tSdddœ‡fdd„ }|S)a%A decorator to make `parse_float` safe. `parse_float` must not return dicts or lists, because these types would be mixed with parsed TOML tables and arrays, thus confusing the parser. The returned decorated callable raises `ValueError` instead of returning illegal types. r5r)Ú float_strr,cs"ˆ|ƒ}t|ttfƒrtdƒ‚|S)Nz*parse_float must not return dicts or lists)rqrJrrr})rÏZ float_valuer)rrÚsafe_parse_float­sz/make_safe_parse_float..safe_parse_float)Úfloat)r*rÐrr)rr=¡s r=)GZ __future__rÚcollections.abcrÚstringÚtypesrÚtypingrrrÚ_rer r r r r rZ_typesrrrÚ frozensetr�rZ ASCII_CTRLr¼r»r²r¶rƒr?r„Ú ascii_lettersÚdigitsr—rAZ hexdigitsr¯rªr}r$rÑr4r1r<r;r:r>r€rHr…rFrErBrŽrˆr•r™r¢r¤r«r¬r©r˜r¹r�r“rGr±r=rrrrÚsr    "     ùÿ  B:"   "!ÿ   D