From 51c0c394d0976e613b99c9378aa3f46af79b0081 Mon Sep 17 00:00:00 2001 From: Sascha Silbe Date: Thu, 15 May 2014 22:24:58 +0000 Subject: 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. --- 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] -- cgit v0.9.1