summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2015-10-27 20:21:30 +0200
committerLars Wirzenius <liw@liw.fi>2015-10-27 20:23:25 +0200
commit7039ac929964ec4b148e965a309f0622d71fbca7 (patch)
tree3694c4d43c63058abd0d435ab810e383fe60224a
parentf92722707795f79b7b3d7d34a649cb7745c9889b (diff)
downloadobnam-7039ac929964ec4b148e965a309f0622d71fbca7.tar.gz
Make RepositoryFS be explicit about what it supports
-rw-r--r--NEWS5
-rw-r--r--obnamlib/repo_fs.py42
2 files changed, 41 insertions, 6 deletions
diff --git a/NEWS b/NEWS
index 8bdf9a95..5c0868c2 100644
--- a/NEWS
+++ b/NEWS
@@ -34,6 +34,11 @@ Version 1.18, released UNRELEASED
avoid problems with directory trees that are deeper than Python's
call stack limit allows.
+* Lars Wirzenius made the `RepositoryFS` class be explicit in what
+ filesystem operations it supports for repositories, rather than
+ supporting everything. This makes future changes and adding
+ non-filesystem (e.g., object store) support later easier to do.
+
Version 1.17, released 2015-09-12
---------------------------------
diff --git a/obnamlib/repo_fs.py b/obnamlib/repo_fs.py
index c025b464..b5011434 100644
--- a/obnamlib/repo_fs.py
+++ b/obnamlib/repo_fs.py
@@ -44,9 +44,6 @@ class RepositoryFS(object):
self.fs = fs
self.hooks = hooks
- def __getattr__(self, name):
- return getattr(self.fs, name)
-
def _get_toplevel(self, filename):
parts = filename.split(os.sep)
if len(parts) >= 1:
@@ -54,6 +51,42 @@ class RepositoryFS(object):
else: # pragma: no cover
raise ToplevelIsFileError(filename=filename)
+ def exists(self, filename):
+ return self.fs.exists(filename)
+
+ def lock(self, lockname):
+ return self.fs.lock(lockname)
+
+ def unlock(self, lockname):
+ return self.fs.unlock(lockname)
+
+ def lstat(self, lockname):
+ return self.fs.lstat(lockname)
+
+ def scan_tree(self, dirname):
+ return self.fs.scan_tree(dirname)
+
+ def remove(self, filename):
+ return self.fs.remove(filename)
+
+ def mkdir(self, dirname):
+ return self.fs.mkdir(dirname)
+
+ def makedirs(self, dirname):
+ return self.fs.makedirs(dirname)
+
+ def rmdir(self, dirname):
+ return self.fs.rmdir(dirname)
+
+ def listdir(self, dirname):
+ return self.fs.listdir(dirname)
+
+ def isdir(self, dirname):
+ return self.fs.isdir(dirname)
+
+ def rename(self, old_name, new_name):
+ return self.fs.rename(old_name, new_name)
+
def cat(self, filename, runfilters=True):
data = self.fs.cat(filename)
if not runfilters: # pragma: no cover
@@ -62,9 +95,6 @@ class RepositoryFS(object):
return self.hooks.filter_read('repository-data', data,
repo=self.repo, toplevel=toplevel)
- def lock(self, filename):
- self.fs.lock(filename)
-
def create_and_init_toplevel(self, filename):
tracing.trace('filename=%s', filename)
toplevel = self._get_toplevel(filename)