def get_partial(self, base=None, depth=-1): if base: base = Path(base) if not base.is_directory: raise RuntimeError("Base path must reference a directory.") elif base.is_relative: base = self.base.join(base) elif not base.descends_from(self.base): raise RuntimeError("Path does not descend from base.") listing = self.get(base) else: listing = self base = self.base partial = super(FileListing, listing).get_partial(depth) partial.base = base return partial