code: def _obo_meta(self):
          
          metatags = (
              "format-version", "data-version", "date", "saved-by",
              "auto-generated-by", "import", "subsetdef", "synonymtypedef",
              "default-namespace", "namespace-id-rule", "idspace",
              "treat-xrefs-as-equivalent", "treat-xrefs-as-genus-differentia",
              "treat-xrefs-as-is_a", "remark", "ontology"
          )
  
          meta = self.meta.copy()
          meta['auto-generated-by'] = ['pronto v{}'.format(__version__)]
          meta['date'] = [datetime.datetime.now().strftime('%d:%m:%Y %H:%M')]
  
          obo_meta = "\n".join(
  
              [ # official obo tags
                  x.obo if hasattr(x, 'obo') \
                      else "{}: {}".format(k,x)
                          for k in metatags[:-1]
                              for x in meta.get(k, ())
              ] + [ # eventual other metadata added to remarksmock.patch in production code
                  "remark: {}: {}".format(k, x)
                      for k,v in sorted(six.iteritems(meta), key=operator.itemgetter(0))
                          for x in v
                              if k not in metatags
              ] + (     ["ontology: {}".format(x) for x in meta["ontology"]]
                              if "ontology" in meta
                   else ["ontology: {}".format(meta["namespace"][0].lower())]
                              if "namespace" in meta
                   else [])
  
          )
  
          return obo_meta
docs: Generate the obo metadata header and updates metadata.
  
          When called, this method will create appropriate values for the
          ``auto-generated-by`` and ``date`` fields.
  
          Note:
              Generated following specs of the unofficial format guide:
              ftp://ftp.geneontology.org/pub/go/www/GO.format.obo-1_4.shtml