diff options
author | Sascha Silbe <sascha-pgp@silbe.org> | 2014-05-15 22:24:58 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha-pgp@silbe.org> | 2014-05-15 22:24:58 (GMT) |
commit | 51c0c394d0976e613b99c9378aa3f46af79b0081 (patch) | |
tree | 1400f2383dc8fb2d5d7a1dbd7c60901a97ed4aa0 | |
parent | 0db3d84c24e8d8c565a9ecd1be4dd953d504556e (diff) |
fsemulation: make nesting level public
For some use cases, the API consumer needs to build paths relative to
an emulated file system object. Make the nesting level we already keep
internally public so the caller can construct relative paths to the
root.
-rw-r--r-- | fsemulation.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/fsemulation.py b/fsemulation.py index 8e89fef..d02d58e 100644 --- a/fsemulation.py +++ b/fsemulation.py @@ -626,6 +626,7 @@ class DSObjectBase(FSEntry): self._have_nonstandard = False def get_properties(self, names=None, use_cache=False): + names = names or [] nonstandard_names = bool([True for name in names if name not in _USEFUL_PROPS]) if names and not nonstandard_names: @@ -708,7 +709,7 @@ class DSObject(DSObjectBase): class Directory(FSEntry): def __init__(self, file_system, level, mode, parent=None): self.parent = parent - self._level = level + self.level = level FSEntry.__init__(self, file_system, stat.S_IFDIR | mode) def listdir(self): @@ -721,7 +722,7 @@ class Directory(FSEntry): yield (u'..', self.parent) def _get_symlink(self, object_id, metadata=None): - directory_path = u'../' * self._level + u'by-id/' + directory_path = u'../' * self.level + u'by-id/' if isinstance(object_id, tuple): assert (isinstance(object_id[0], unicode) and isinstance(object_id[1], unicode)) @@ -827,7 +828,7 @@ class ByTreeIdDirectory(Directory): if not self._ds.check_tree_id(tree_id): raise IOError(errno.ENOENT, os.strerror(errno.ENOENT)) - return ByVersionIdDirectory(self._fs, self._level + 1, self, tree_id) + return ByVersionIdDirectory(self._fs, self.level + 1, self, tree_id) def listdir(self): for name in Directory.listdir(self): @@ -841,7 +842,7 @@ class ByTreeIdDirectory(Directory): yield name, entry for tree_id in self._ds.list_tree_ids(): - yield (tree_id, ByVersionIdDirectory(self._fs, self._level + 1, + yield (tree_id, ByVersionIdDirectory(self._fs, self.level + 1, self, tree_id)) @@ -908,7 +909,7 @@ class ByTagsDirectory(Directory): if tag not in self._tag_dirs: self._tag_dirs[tag] = ByTagsSubDirectory(self._fs, - self._level + 1, + self.level + 1, self, [tag]) yield (tag, self._tag_dirs[tag]) @@ -918,7 +919,7 @@ class ByTagsDirectory(Directory): raise IOError(errno.ENOENT, os.strerror(errno.ENOENT)) self._tag_dirs[name] = ByTagsSubDirectory(self._fs, - self._level + 1, self, + self.level + 1, self, [name]) return self._tag_dirs[name] |