code: def collect_modules(self):
          
          try:
              res = {}
              m = sys.modules
              for k in m:
                  # Don't report submodules (e.g. django.x, django.y, django.z)
                  # Skip modules that begin with underscore
                  if ('.' in k) or k[0] == '_':
                      continue
                  if m[k]:
                      try:
                          d = m[k].__dict__
                          if "version" in d and d["version"]:
                              res[k] = self.jsonable(d["version"])
                          elif "__version__" in d and d["__version__"]:
                              res[k] = self.jsonable(d["__version__"])
                          else:
                              res[k] = get_distribution(k).version
                      except DistributionNotFound:
                          pass
                      except Exception:
                          logger.debug("collect_modules: could not process module: %s" % k)
  
          except Exception:
              logger.debug("collect_modules", exc_info=True)
          else:
              return res
docs: Collect up the list of modules in use