code: def read_module(self, modulename, revision=None, extra={}):
          
  
          if modulename not in self.revs:
              # this module doesn't exist in the repos at all
              return None
          elif self.revs[modulename] == []:
              # this module doesn't exist in the repos at all, error reported
              return None
  
          if revision is not None:
              if (modulename,revision) in self.modules:
                  return self.modules[(modulename, revision)]
              self._ensure_revs(self.revs[modulename])
              x = util.keysearch(revision, 1, self.revs[modulename])
              if x is not None:
                  (_revision, handle) = x
                  if handle == None:
                      # this revision doesn't exist in the repos, error reported
                      return None
              else:
                  # this revision doesn't exist in the repos
                  return None
          else:
              # get the latest revision
              (revision, handle) = self._get_latest_rev(self.revs[modulename])
              if (modulename, revision) in self.modules:
                  return self.modules[(modulename, revision)]
  
          if handle[0] == 'parsed':
              module = handle[1]
              return module
          else:
              # get it from the repos
              try:
                  r = self.repository.get_module_from_handle(handle)
                  (ref, format, text) = r
                  if format == None:
                      format = util.guess_format(text)
  
                  if format == 'yin':
                      p = yin_parser.YinParser(extra)
                  else:
                      p = yang_parser.YangParser(extra)
  
                  return p.parse(self, ref, text)
              except self.repository.ReadError as ex:
                  return None
docs: Searches for a module named `modulename` in the repository
  
          The module is just read, and not compiled at all.
          Returns the module if found, and None otherwise