diff options
author | Lars Wirzenius <liw@liw.fi> | 2015-10-27 20:21:30 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2015-10-27 20:23:25 +0200 |
commit | 7039ac929964ec4b148e965a309f0622d71fbca7 (patch) | |
tree | 3694c4d43c63058abd0d435ab810e383fe60224a | |
parent | f92722707795f79b7b3d7d34a649cb7745c9889b (diff) | |
download | obnam-7039ac929964ec4b148e965a309f0622d71fbca7.tar.gz |
Make RepositoryFS be explicit about what it supports
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | obnamlib/repo_fs.py | 42 |
2 files changed, 41 insertions, 6 deletions
@@ -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) |