code: def extract(fileobj, keywords, comment_tags, options):
      
      extractor = BabelMakoExtractor(keywords, comment_tags, options)
      for message in extractor(fileobj):
          yield message
docs: Extract 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``