o !b@sxdZzddlZWn eyddlZYnwddlZddlmZddlZejddkZ e fej Z e r8ddZ nddZ dd Ze r\dd lmZzdd lmZWney[eZYn wdd lmZmZe rkd d Zndd Ze rzddZddZnddZddZz ejZejZddZWneyejZZddZYnwGdddeZzejZWdSeyeZYdSw)z;Various Python version compatibility classes and functions.N)CodeTypecCs<|dd}d|ddd}t|t|krd|S|S)Nasciibackslashreplace'z\'u)encodereplacelen)stringrquotedr //usr/lib/python3/dist-packages/genshi/compat.py stringrepr"s rcCstd)Nz8Python 2 compatibility function. Not usable in Python 3.) RuntimeError)r r r rr)scCs t|tjSN) isinstancesix string_typesobjr r risstring0s r)StringIO)rBytesIOcCs|dsJ|ddS)Nb startswithbstrr r r wrapped_bytesBs r cCs|dsJ|S)Nrrrr r rr Fsc Cs4|j|j|j|j|j|j|j|j|j|j |j ddf S)Nr ) co_nlocals co_stacksizeco_flagsco_code co_constsco_names co_varnames co_filenameco_nameco_firstlineno co_lnotab)coder r rget_code_paramsNs  r-cCs6td|j|j|jdB|j|j|j|j||||jddS)Nr@r ) rr!r"r#r$r%r&r'r+r,filenamenamelinenor r rbuild_code_chunkTs   r3c Csg}t|dr ||j||j|j|j|j|j|j |j |j |j |j g t|dr1||j||jt|drC||jn||jt|drT||jt|dr_||jt|drj||j|ddgt|S)Nco_posonlyargcount co_qualname co_linetableco_endlinetableco_columntableco_exceptiontabler )hasattrappendr4extendco_kwonlyargcountr!r"r#r$r%r&r'r(r)r5r*r6r+r7r8r9tuple)r,paramsr r rr-Zs,                cCsTt|dr |j|||dStd|j|j|j|jdB|j|j|j |j ||||j ddS)Nr )r(r)r*rr.r ) r:r rr=r!r"r#r$r%r&r'r+r/r r rr3ys   cC|jSr)srr r rrBcCr@r)valuerr r rrBrCc@s eZdZdS) _DummyASTItemN)__name__ __module__ __qualname__r r r rrEsrE) __doc__ast ImportError_astsystypesrr version_info IS_PYTHON2float integer_types numeric_typesrrr cStringIOrior r-r3Ellipsis _ast_EllipsisStr_ast_Str_ast_Str_valueAttributeErrorConstantobjectrE _ast_Constantr r r rsZ