g+<dZddlmZddlmZGddeZdZy)zEgettext message extraction via Babel: https://pypi.org/project/Babel/)extract_python)MessageExtractorc*eZdZfdZdZdZxZS)BabelMakoExtractorc||_||_dj||jd|jddd|_t |y)N input_encodingencoding) comment-tagsr )keywordsoptionsjoingetconfigsuper__init__)selfr comment_tagsr __class__s C/opt/hc_python/lib/python3.12/site-packages/mako/ext/babelplugin.pyrzBabelMakoExtractor.__init__sO   HH\2  '++j$"?  c$|j|S)N) process_file)rfileobjs r__call__zBabelMakoExtractor.__call__s  ))rc#K|jd}t||j||jD]\}}}}||dz z||||zfyw)Nr )rrr r ) rcode code_linenotranslator_stringsrlinenofuncnamemessagespython_translator_commentss rprocess_pythonz!BabelMakoExtractor.process_pythonsj{{>2 D$--t|| L     &vz*"%??  MsAA)__name__ __module__ __qualname__rrr% __classcell__)rs@rrr s * rrc#JKt|||}||Ed{y7w)aExtract messages from Mako templates. :param fileobj: the file-like object the messages should be extracted from :param keywords: a list of keywords (i.e. function names) that should be recognized as translation functions :param comment_tags: a list of translator tags to search for and include in the results :param options: a dictionary of additional options (optional) :return: an iterator over ``(lineno, funcname, message, comments)`` tuples :rtype: ``iterator`` N)r)rr rr extractors rextractr,,s$#8\7CI!!!s #!#N)__doc__babel.messages.extractrmako.ext.extractrrr,rrr1s#L1-)> "r