def index_one_directory(self, dirpath, dirnames, filenames): current_time = time.time() if self.full_stats_every and current_time > self.next_full_stats: self.next_full_stats = current_time + self.full_stats_every runtime = time.time()-self.start_time self.show_full_stats("Stats after %s %s" % (format_time_delta(runtime), dirpath)) if current_time > self.next_commit: self.next_commit = current_time + self.commit_every self.db.commit() self.dirs_visited += 1 dirnames.sort() filenames.sort() self.skipped_files += remove_excluded_names( filenames, self.compiled_file_excludes) self.skipped_dirs += remove_excluded_names( dirnames, self.compiled_dir_excludes) self.progress("[") self.db.begin() dirid = self.db.get_or_insert_dir(abspath(dirpath)) for fileobj in self.db.file.find(dirid=dirid): if fileobj.name not in filenames: self.progress("d") self.db.file.delete(fileobj) self.deleted_files += 1 start = time.time() for filename in filenames: if start and time.time() > start+self.dir_warn_threshold: self.progress(" %s " % dirpath) start = None self.index_one_file(dirpath, filename, dirid) self.progress("]")
def __init__(self, db, roots): self.db = db self.roots = [abspath(x) for x in roots]
def test_abspath(self): self.assertTrue(abspath(".").startswith("/"))