ó rgdSc@sÆdZddlZi dd6dd6dd6d d 6d d 6d d6dd6dd6dd6dd6Zd„Zd„Zd„ZejdƒZejdƒZdd„Z d„Z e dkrÂe ƒndS(s<Safely evaluate Python string literals without using eval().iÿÿÿÿNstastbs tfs tns trs tts tvt't"s\cCsft|ƒ|dkr)td|ƒ‚nyt|ddƒSWn!tk ratd|ƒ‚nXdS(Nis!invalid hex string escape ('\%s')i(tlent ValueErrortint(txR((sF/usr/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/literals.pyt convert_hexs  cCs=|jddƒ\}}tj|ƒ}|dk r7|S|jdƒrYtt|dƒƒS|jdƒr{tt|dƒƒS|jdƒrtt|dƒƒS|jd ƒrþd dl}y|j |dd !ƒSWq9t k rút d |dd !ƒ‚q9Xn;ytt |dƒƒSWn!t k r8t d |ƒ‚nXdS( NiiR ituitUitNiÿÿÿÿsundefined character name %rs#invalid octal string escape ('\%s')( tgrouptsimple_escapestgettNonet startswithtchrR tunichrt unicodedatatlookuptKeyErrorR R (tmtallttailtescR((sF/usr/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/literals.pytescapes(    cCsd|jddƒ\}}|jdƒr:tt|dƒƒS|jdƒr\tt|dƒƒS|SdS(NiiRiRi(RRRR (RRR((sF/usr/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/literals.pyt escaperaw5s s)\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3})sV\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3}|u[0-9a-fA-F]{0,4}|U[0-9a-fA-F]{0,8}|N\{.+?\})cCsët}t}|r4t|tƒ r4|j|ƒ}n|jdƒsR|jdƒret}|d}n|jdƒsƒ|jdƒr–t}|d}n|d}|d |dkrÁ|d}n|t|ƒt|ƒ !}|j ||ƒS(NRRiRtRii( t escape_reRt isinstancetunicodetdecodeRt uni_escape_reR R tsub(tstencodingtregextrepltq((sF/usr/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/literals.pyt evalStringBs    cCs_xXtdƒD]J}t|ƒ}t|ƒ}t|ƒ}||kr |G|G|G|GHq q WdS(Ni(trangeRtreprR-(titcR(te((sF/usr/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/literals.pyttestVs     t__main__( t__doc__treRR RR tcompileR"R&RR-R3t__name__(((sF/usr/local/lib/python2.7/site-packages/sphinx/pycode/pgen2/literals.pyts(