code: def get(self, project_name, updatetime=None, md5sum=None):
          '''get project data object, return None if not exists'''
          if time.time() - self.last_check_projects > self.CHECK_PROJECTS_INTERVAL:
              self._check_projects()
          if self._need_update(project_name, updatetime, md5sum):
              self._update_project(project_name)
          return self.projects.get(project_name, Nonef get(self, project_name, updatetime=None, md5sum=None):
          '''get project data object, return None if not exists'''
          if time.time() - self.last_check_projects > self.CHECK_PROJECTS_INTERVAL:
              self._check_projects()
          if self._need_update(project_name, updatetime, md5sum):
              self._update_project(project_name)
          return self.projects.get(project_name, None)
docs: get project data object, return None if not exists