summaryrefslogtreecommitdiff
path: root/fs/multifs.py
diff options
context:
space:
mode:
authorwillmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f>2008-08-01 16:28:27 +0000
committerwillmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f>2008-08-01 16:28:27 +0000
commit563213f386e32d743959bf092192257c4dbe72aa (patch)
treed9a101c3b9a466aaafb8b7499ee4b267c51ee6ea /fs/multifs.py
parent63ccf2cdd900b709622661d083aabd1f1735a250 (diff)
downloadpyfilesystem-git-563213f386e32d743959bf092192257c4dbe72aa.tar.gz
Tidied up the code, and added an ObjectTree class
Diffstat (limited to 'fs/multifs.py')
-rw-r--r--fs/multifs.py38
1 files changed, 11 insertions, 27 deletions
diff --git a/fs/multifs.py b/fs/multifs.py
index fb36c18..da607bd 100644
--- a/fs/multifs.py
+++ b/fs/multifs.py
@@ -11,43 +11,34 @@ class MultiFS(FS):
self.fs_lookup = {}
def __str__(self):
-
return "<MultiFS: %s>" % ", ".join(str(fs) for fs in self.fs_sequence)
-
def addfs(self, name, fs):
-
if name in self.fs_lookup:
raise ValueError("Name already exists.")
self.fs_sequence.append(fs)
self.fs_lookup[name] = fs
-
def removefs(self, name):
-
fs = self.fs_lookup[name]
self.fs_sequence.remove(fs)
del self.fs_lookup[name]
def __getitem__(self, name):
-
return self.fs_lookup[name]
def __iter__(self):
-
return iter(self.fs_sequence)
def _delegate_search(self, path):
-
for fs in self:
if fs.exists(path):
return fs
return None
def which(self, path):
-
for fs in self:
if fs.exists(path):
for fs_name, fs_object in self.fs_lookup.iteritems():
@@ -55,18 +46,14 @@ class MultiFS(FS):
return fs_name, fs
return None, None
-
def getsyspath(self, path):
-
fs = self._delegate_search(path)
if fs is not None:
return fs.getsyspath(path)
- raise FSError("NO_FILE", path)
-
+ raise ResourceNotFoundError("NO_FILE", path)
def desc(self, path):
-
if not self.exists(path):
raise FSError("NO_RESOURCE", path)
@@ -78,41 +65,35 @@ class MultiFS(FS):
def open(self, path, mode="r", buffering=-1, **kwargs):
-
for fs in self:
if fs.exists(path):
fs_file = fs.open(path, mode, buffering, **kwargs)
return fs_file
- raise FSError("NO_FILE", path)
+ raise ResourceNotFoundError("NO_FILE", path)
def exists(self, path):
-
return self._delegate_search(path) is not None
def isdir(self, path):
-
fs = self._delegate_search(path)
if fs is not None:
return fs.isdir(path)
return False
def isfile(self, path):
-
fs = self._delegate_search(path)
if fs is not None:
return fs.isfile(path)
return False
def ishidden(self, path):
-
fs = self._delegate_search(path)
if fs is not None:
return fs.isfile(path)
return False
def listdir(self, path="./", *args, **kwargs):
-
paths = []
for fs in self:
try:
@@ -123,29 +104,32 @@ class MultiFS(FS):
return list(set(paths))
def remove(self, path):
-
for fs in self:
if fs.exists(path):
fs.remove(path)
return
- raise FSError("NO_FILE", path)
+ raise ResourceNotFoundError("NO_FILE", path)
def removedir(self, path, recursive=False):
-
for fs in self:
if fs.isdir(path):
fs.removedir(path, recursive)
return
- raise FSError("NO_DIR", path)
+ raise ResourceNotFoundError("NO_DIR", path)
+ def rename(self, src, dst):
+ for fs in self:
+ if fs.exists(src):
+ fs.rename(src, dst)
+ return
+ raise FSError("NO_RESOURCE", path)
def getinfo(self, path):
-
for fs in self:
if fs.exists(path):
return fs.getinfo(path)
- raise FSError("NO_FILE", path)
+ raise ResourceNotFoundError("NO_FILE", path)
if __name__ == "__main__":