docs: def load(self, pathname):
          """Loads entry from directory."""
          match = self._entry_re.match(pathname)
          if not match:
              return None
          self.ignore = (match.group(1) == "ignore")
          if not os.path.isdir(pathname):
              raise ValueError("%s: not a directory" % pathname)
          if not os.access(pathname, os.R_OK | os.W_OK):
              raise ValueError("%s: insufficient access privileges" % pathname)
          # parse index.html file
          parser = Purr.Parsers.LogEntryIndexParser(pathname)
          self.index_file = os.path.join(pathname, 'index.html')
          for i, line in enumerate(open(self.index_file)):
              try:
                  parser.feed(line)
              except:
                  dprintf(0, "parse error at line %d of %s\n", i, self.index_file)
                  raise
          # set things up from parser
          try:
              self.timestamp = int(float(parser.timestamp))
          except:
              self.timestamp = int(time.time())
          self.title = getattr(parser, 'title', None)
          if self.title is None:
              self.title = "Malformed entry, probably needs to be deleted"
          self.comment = getattr(parser, 'comments', None) or ""
          self.dps = getattr(parser, 'dps', [])
          self.pathname = pathname
          # see if any data products have been removed on us
          self.dps = [dp for dp in self.dps if os.path.exists(dp.fullpath)]
          # see if the cached include file is up-to-date
          self.cached_include = cache = os.path.join(pathname, 'index.include.html')
          mtime = (os.path.exists(cache) or 0) and os.path.getmtime(cache)
          if mtime >= max(Purr.Render.youngest_renderer, os.path.getmtime(self.index_file)):
              dprintf(2, "entry %s has a valid include cache\n", pathname)
              self.cached_include_valid = True
          else:
              dprintf(2, "entry %s does not have a valid include cache\n", pathname)
              self.cached_include_valid = False
          # mark entry as unchanged, if renderers are older than index
          self.updated = (Purr.Render.youngest_renderer > os.path.getmtime(self.index_file))