o k`a @sdZddlmZddlZddlZddlZddlmZmZm Z m Z m Z ddl m ZddlmZddlmZddlmZdd lmZdd lmZd d ZGd ddeZzddlmZddl m!Z!ddl"m#Z#m$Z$m%Z%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddiddiddiddiddiddiddiddiddid Z-dZ.ddZ/ddZ0dd Z1e1Z2Gd!d"d"eZ3Gd#d$d$eZ4d%d&Z5d'd(Z6d)d*Z7d+d,Z8d-d.Z9d/d0Z:d1d2Z;d3d4Zsz"extract_python..cSsg|]}|dqS)rr)rdcommentrrrrfsz# coding=%s %s __builtins__=,)trac.util.textrYstrrHget_DEFAULT_KWARGS_MAPScopyupdateset_DEFAULT_CLEANDOC_KEYWORDSrreadlinerrrdecodestripappend startswithritemsrrrevalrbytespop)fileobjkeywords comment_tagsoptionsfuncnamelinenomessage_linenor\func_kwargs_map call_stackbufmessagesmessages_kwargstranslator_commentsin_defin_translator_comments comment_tagr[r]tokenstokvalue_prev_tok prev_value kwarg_namerr.index old_lineno old_commentrrXrextract_pythonss                                rcCsN|jsgSt}t|}|t|d||dt ||||S)zExtract messages from Javascript embedded in