From 4b339f5d69eaea253b9ad7f7a45d757f44209851 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sat, 30 Jan 2016 21:32:45 +0100 Subject: [PATCH] cosmetic source cleanup (flake8) --- borg/__main__.py | 1 - borg/archive.py | 5 ++--- borg/archiver.py | 12 +++++------- borg/cache.py | 4 ++-- borg/fuse.py | 2 +- borg/helpers.py | 10 +++++----- borg/key.py | 2 +- borg/locking.py | 2 +- borg/remote.py | 2 +- borg/testsuite/archiver.py | 20 +++++++++++--------- borg/testsuite/benchmark.py | 9 +++++---- borg/testsuite/compress.py | 2 -- borg/testsuite/helpers.py | 5 ++--- borg/testsuite/locking.py | 1 + borg/testsuite/repository.py | 2 +- borg/upgrader.py | 2 +- borg/xattr.py | 4 ++-- setup.py | 5 ++++- 18 files changed, 45 insertions(+), 45 deletions(-) diff --git a/borg/__main__.py b/borg/__main__.py index b38dc4e9..3e7f4745 100644 --- a/borg/__main__.py +++ b/borg/__main__.py @@ -1,3 +1,2 @@ from borg.archiver import main main() - diff --git a/borg/archive.py b/borg/archive.py index ad22d3d1..ab7ff199 100644 --- a/borg/archive.py +++ b/borg/archive.py @@ -187,7 +187,7 @@ class Archive: @property def duration(self): - return format_timedelta(self.end-self.start) + return format_timedelta(self.end - self.start) def __str__(self): return '''Archive name: {0.name} @@ -591,8 +591,7 @@ Number of files: {0.stats.nfiles}'''.format(self) # this set must be kept complete, otherwise the RobustUnpacker might malfunction: ITEM_KEYS = set([b'path', b'source', b'rdev', b'chunks', b'mode', b'user', b'group', b'uid', b'gid', b'mtime', b'atime', b'ctime', - b'xattrs', b'bsdflags', b'acl_nfs4', b'acl_access', b'acl_default', b'acl_extended', - ]) + b'xattrs', b'bsdflags', b'acl_nfs4', b'acl_access', b'acl_default', b'acl_extended', ]) class RobustUnpacker: diff --git a/borg/archiver.py b/borg/archiver.py index eb79446e..115b2bc3 100644 --- a/borg/archiver.py +++ b/borg/archiver.py @@ -239,8 +239,7 @@ class Archiver: # Ignore if nodump flag is set if has_lchflags and (st.st_flags & stat.UF_NODUMP): return - if (stat.S_ISREG(st.st_mode) or - read_special and not stat.S_ISDIR(st.st_mode)): + if stat.S_ISREG(st.st_mode) or read_special and not stat.S_ISDIR(st.st_mode): if not dry_run: try: status = archive.process_file(path, st, cache) @@ -576,7 +575,7 @@ class Archiver: archive = Archive(repository, key, manifest, args.location.archive) for i, item_id in enumerate(archive.metadata[b'items']): data = key.decrypt(item_id, repository.get(item_id)) - filename = '%06d_%s.items' %(i, hexlify(item_id).decode('ascii')) + filename = '%06d_%s.items' % (i, hexlify(item_id).decode('ascii')) print('Dumping', filename) with open(filename, 'wb') as fd: fd.write(data) @@ -594,7 +593,7 @@ class Archiver: print("object id %s is invalid." % hex_id) else: try: - data =repository.get(id) + data = repository.get(id) except repository.ObjectNotFound: print("object %s not found." % hex_id) else: @@ -756,7 +755,7 @@ class Archiver: def preprocess_args(self, args): deprecations = [ - #('--old', '--new', 'Warning: "--old" has been deprecated. Use "--new" instead.'), + # ('--old', '--new', 'Warning: "--old" has been deprecated. Use "--new" instead.'), ] for i, arg in enumerate(args[:]): for old_name, new_name, warning in deprecations: @@ -787,8 +786,7 @@ class Archiver: parser = argparse.ArgumentParser(prog=prog, description='Borg - Deduplicated Backups') parser.add_argument('-V', '--version', action='version', version='%(prog)s ' + __version__, help='show version number and exit') - subparsers = parser.add_subparsers(title='required arguments', - metavar='') + subparsers = parser.add_subparsers(title='required arguments', metavar='') serve_epilog = textwrap.dedent(""" This command starts a repository server process. This command is usually not used manually. diff --git a/borg/cache.py b/borg/cache.py index 521b6846..ea3ecb97 100644 --- a/borg/cache.py +++ b/borg/cache.py @@ -130,10 +130,10 @@ Chunk index: {0.total_unique_chunks:20d} {0.total_chunks:20d}""" try: cache_version = self.config.getint('cache', 'version') wanted_version = 1 - if cache_version != wanted_version: + if cache_version != wanted_version: raise Exception('%s has unexpected cache version %d (wanted: %d).' % ( config_path, cache_version, wanted_version)) - except configparser.NoSectionError as e: + except configparser.NoSectionError: raise Exception('%s does not look like a Borg cache.' % config_path) from None self.id = self.config.get('cache', 'repository') self.manifest_id = unhexlify(self.config.get('cache', 'manifest')) diff --git a/borg/fuse.py b/borg/fuse.py index a7c8845b..c726a563 100644 --- a/borg/fuse.py +++ b/borg/fuse.py @@ -209,7 +209,7 @@ class FuseOperations(llfuse.Operations): continue n = min(size, s - offset) chunk = self.key.decrypt(id, self.repository.get(id)) - parts.append(chunk[offset:offset+n]) + parts.append(chunk[offset:offset + n]) offset = 0 size -= n if not size: diff --git a/borg/helpers.py b/borg/helpers.py index e42dfd77..4f230e6d 100644 --- a/borg/helpers.py +++ b/borg/helpers.py @@ -128,7 +128,7 @@ class Manifest: def prune_within(archives, within): - multiplier = {'H': 1, 'd': 24, 'w': 24*7, 'm': 24*31, 'y': 24*365} + multiplier = {'H': 1, 'd': 24, 'w': 24 * 7, 'm': 24 * 31, 'y': 24 * 365} try: hours = int(within[:-1]) * multiplier[within[-1]] except (KeyError, ValueError): @@ -136,7 +136,7 @@ def prune_within(archives, within): raise argparse.ArgumentTypeError('Unable to parse --within option: "%s"' % within) if hours <= 0: raise argparse.ArgumentTypeError('Number specified using --within option must be positive') - target = datetime.now(timezone.utc) - timedelta(seconds=hours*60*60) + target = datetime.now(timezone.utc) - timedelta(seconds=hours * 3600) return [a for a in archives if a.ts > target] @@ -200,7 +200,7 @@ class Statistics: path = remove_surrogates(item[b'path']) if item else '' space = columns - len(msg) if space < len('...') + len(path): - path = '%s...%s' % (path[:(space//2)-len('...')], path[-space//2:]) + path = '%s...%s' % (path[:(space // 2) - len('...')], path[-space // 2:]) msg += "{0:<{space}}".format(path, space=space) else: msg = ' ' * columns @@ -355,7 +355,7 @@ class FnmatchPattern(PatternBase): if pattern.endswith(os.path.sep): pattern = os.path.normpath(pattern).rstrip(os.path.sep) + os.path.sep + '*' + os.path.sep else: - pattern = os.path.normpath(pattern) + os.path.sep+'*' + pattern = os.path.normpath(pattern) + os.path.sep + '*' self.pattern = pattern @@ -831,6 +831,7 @@ FALSISH = ('No', 'NO', 'no', 'N', 'n', '0', ) TRUISH = ('Yes', 'YES', 'yes', 'Y', 'y', '1', ) DEFAULTISH = ('Default', 'DEFAULT', 'default', 'D', 'd', '', ) + def yes(msg=None, false_msg=None, true_msg=None, default_msg=None, retry_msg=None, invalid_msg=None, env_msg=None, falsish=FALSISH, truish=TRUISH, defaultish=DEFAULTISH, @@ -951,7 +952,6 @@ class ProgressIndicatorPercent: print(" " * len(self.msg % 100.0), file=self.file, end='\r') - class ProgressIndicatorEndless: def __init__(self, step=10, file=sys.stderr): """ diff --git a/borg/key.py b/borg/key.py index 82dbf3c7..6e56de19 100644 --- a/borg/key.py +++ b/borg/key.py @@ -360,7 +360,7 @@ class KeyfileKey(KeyfileKeyBase): filename = os.path.join(keys_dir, name) with open(filename, 'r') as fd: line = fd.readline().strip() - if line.startswith(self.FILE_ID) and line[len(self.FILE_ID)+1:] == id: + if line.startswith(self.FILE_ID) and line[len(self.FILE_ID) + 1:] == id: return filename raise KeyfileNotFoundError(self.repository._location.canonical_path(), get_keys_dir()) diff --git a/borg/locking.py b/borg/locking.py index bf7ed603..c0388578 100644 --- a/borg/locking.py +++ b/borg/locking.py @@ -111,7 +111,7 @@ class ExclusiveLock: self.sleep = sleep self.path = os.path.abspath(path) self.id = id or get_id() - self.unique_name = os.path.join(self.path, "%s.%d-%x" % self.id) + self.unique_name = os.path.join(self.path, "%s.%d-%x" % self.id) def __enter__(self): return self.acquire() diff --git a/borg/remote.py b/borg/remote.py index 6ddc3f1c..b91a4f95 100644 --- a/borg/remote.py +++ b/borg/remote.py @@ -185,7 +185,7 @@ class RemoteRepository: else: raise ValueError('log level missing, fix this code') if testing: - return [sys.executable, '-m', 'borg.archiver', 'serve' ] + opts + self.extra_test_args + return [sys.executable, '-m', 'borg.archiver', 'serve'] + opts + self.extra_test_args else: # pragma: no cover return [args.remote_path, 'serve'] + opts diff --git a/borg/testsuite/archiver.py b/borg/testsuite/archiver.py index d6cf8fbf..d9eede40 100644 --- a/borg/testsuite/archiver.py +++ b/borg/testsuite/archiver.py @@ -82,6 +82,7 @@ def cmd(request): exe = 'borg.exe' else: raise ValueError("param must be 'python' or 'binary'") + def exec_fn(*args, **kw): return exec_cmd(*args, exe=exe, fork=True, **kw) return exec_fn @@ -121,6 +122,7 @@ if the directory does not exist, the test will be skipped. """ DF_MOUNT = '/tmp/borg-mount' + @pytest.mark.skipif(not os.path.exists(DF_MOUNT), reason="needs a 16MB fs mounted on %s" % DF_MOUNT) def test_disk_full(cmd): def make_files(dir, count, size, rnd=True): @@ -177,7 +179,7 @@ def test_disk_full(cmd): shutil.rmtree(reserve, ignore_errors=True) rc, out = cmd('list', repo) if rc != EXIT_SUCCESS: - print('list', rc, out) + print('list', rc, out) rc, out = cmd('check', '--repair', repo) if rc != EXIT_SUCCESS: print('check', rc, out) @@ -301,7 +303,7 @@ class ArchiverTestCase(ArchiverTestCaseBase): list_output = self.cmd('list', '--short', self.repository_location) self.assert_in('test', list_output) self.assert_in('test.2', list_output) - expected = [ + expected = [ 'input', 'input/bdev', 'input/cdev', @@ -320,7 +322,7 @@ class ArchiverTestCase(ArchiverTestCaseBase): expected.remove('input/cdev') if has_lchflags: # remove the file we did not backup, so input and output become equal - expected.remove('input/flagfile') # this file is UF_NODUMP + expected.remove('input/flagfile') # this file is UF_NODUMP os.remove(os.path.join('input', 'flagfile')) list_output = self.cmd('list', '--short', self.repository_location + '::test') for name in expected: @@ -348,7 +350,7 @@ class ArchiverTestCase(ArchiverTestCaseBase): self.assert_equal(filter(info_output), filter(info_output2)) def test_atime(self): - have_root = self.create_test_files() + self.create_test_files() atime, mtime = 123456780, 234567890 os.utime('input/file1', (atime, mtime)) self.cmd('init', self.repository_location) @@ -414,7 +416,7 @@ class ArchiverTestCase(ArchiverTestCaseBase): filenames = ['normal', 'with some blanks', '(with_parens)', ] for filename in filenames: filename = os.path.join(self.input_path, filename) - with open(filename, 'wb') as fd: + with open(filename, 'wb'): pass self.cmd('init', self.repository_location) self.cmd('create', self.repository_location + '::test', 'input') @@ -617,11 +619,11 @@ class ArchiverTestCase(ArchiverTestCaseBase): self.create_regular_file('tagged1/file1', size=1024) self.create_regular_file('tagged2/.NOBACKUP2') self.create_regular_file('tagged2/file2', size=1024) - self.create_regular_file('tagged3/CACHEDIR.TAG', contents = b'Signature: 8a477f597d28d172789f06886806bc55 extra stuff') + self.create_regular_file('tagged3/CACHEDIR.TAG', contents=b'Signature: 8a477f597d28d172789f06886806bc55 extra stuff') self.create_regular_file('tagged3/file3', size=1024) self.create_regular_file('taggedall/.NOBACKUP1') self.create_regular_file('taggedall/.NOBACKUP2') - self.create_regular_file('taggedall/CACHEDIR.TAG', contents = b'Signature: 8a477f597d28d172789f06886806bc55 extra stuff') + self.create_regular_file('taggedall/CACHEDIR.TAG', contents=b'Signature: 8a477f597d28d172789f06886806bc55 extra stuff') self.create_regular_file('taggedall/file4', size=1024) self.cmd('create', '--exclude-if-present', '.NOBACKUP1', '--exclude-if-present', '.NOBACKUP2', '--exclude-caches', '--keep-tag-files', self.repository_location + '::test', 'input') @@ -785,7 +787,7 @@ class ArchiverTestCase(ArchiverTestCaseBase): clearly incomplete: only tests for the weird "unchanged" status for now""" now = time.time() self.create_regular_file('file1', size=1024 * 80) - os.utime('input/file1', (now - 5, now - 5)) # 5 seconds ago + os.utime('input/file1', (now - 5, now - 5)) # 5 seconds ago self.create_regular_file('file2', size=1024 * 80) self.cmd('init', self.repository_location) output = self.cmd('create', '-v', '--list', self.repository_location + '::test', 'input') @@ -822,7 +824,7 @@ class ArchiverTestCase(ArchiverTestCaseBase): output = self.cmd('create', '-v', '--list', '--filter=AM', self.repository_location + '::test3', 'input') self.assert_in('file1', output) - #def test_cmdline_compatibility(self): + # def test_cmdline_compatibility(self): # self.create_regular_file('file1', size=1024 * 80) # self.cmd('init', self.repository_location) # self.cmd('create', self.repository_location + '::test', 'input') diff --git a/borg/testsuite/benchmark.py b/borg/testsuite/benchmark.py index 447a158e..9751bc1a 100644 --- a/borg/testsuite/benchmark.py +++ b/borg/testsuite/benchmark.py @@ -38,12 +38,14 @@ def testdata(request, tmpdir_factory): data_type = request.param if data_type == 'zeros': # do not use a binary zero (\0) to avoid sparse detection - data = lambda: b'0' * size + def data(size): + return b'0' * size if data_type == 'random': - data = lambda: os.urandom(size) + def data(size): + return os.urandom(size) for i in range(count): with open(str(p.join(str(i))), "wb") as f: - f.write(data()) + f.write(data(size)) yield str(p) p.remove(rec=1) @@ -95,4 +97,3 @@ def test_check(benchmark, cmd, archive): def test_help(benchmark, cmd): result, out = benchmark(cmd, 'help') assert result == 0 - diff --git a/borg/testsuite/compress.py b/borg/testsuite/compress.py index ce46c9d3..1a435358 100644 --- a/borg/testsuite/compress.py +++ b/borg/testsuite/compress.py @@ -98,5 +98,3 @@ def test_compressor(): for params in params_list: c = Compressor(**params) assert data == c.decompress(c.compress(data)) - - diff --git a/borg/testsuite/helpers.py b/borg/testsuite/helpers.py index 0d68fe97..a1b5440a 100644 --- a/borg/testsuite/helpers.py +++ b/borg/testsuite/helpers.py @@ -165,8 +165,7 @@ class FormatTimedeltaTestCase(BaseTestCase): def check_patterns(files, pattern, expected): """Utility for testing patterns. """ - assert all([f == os.path.normpath(f) for f in files]), \ - "Pattern matchers expect normalized input paths" + assert all([f == os.path.normpath(f) for f in files]), "Pattern matchers expect normalized input paths" matched = [f for f in files if pattern.match(f)] @@ -284,7 +283,7 @@ def test_patterns_shell(pattern, expected): ("^[^/]", []), ("^(?!/srv|/foo|/opt)", ["/home", "/home/user/.profile", "/home/user/.bashrc", "/home/user2/.profile", - "/home/user2/public_html/index.html", "/home/foo/.thumbnails", "/home/foo/bar/.thumbnails",]), + "/home/user2/public_html/index.html", "/home/foo/.thumbnails", "/home/foo/bar/.thumbnails", ]), ]) def test_patterns_regex(pattern, expected): files = [ diff --git a/borg/testsuite/locking.py b/borg/testsuite/locking.py index dc9d969c..bc62650d 100644 --- a/borg/testsuite/locking.py +++ b/borg/testsuite/locking.py @@ -9,6 +9,7 @@ from ..locking import get_id, TimeoutTimer, ExclusiveLock, UpgradableLock, LockR ID1 = "foo", 1, 1 ID2 = "bar", 2, 2 + def test_id(): hostname, pid, tid = get_id() assert isinstance(hostname, str) diff --git a/borg/testsuite/repository.py b/borg/testsuite/repository.py index 3da7b80f..0606280e 100644 --- a/borg/testsuite/repository.py +++ b/borg/testsuite/repository.py @@ -338,7 +338,7 @@ class RemoteRepositoryTestCase(RepositoryTestCase): remote_path = 'borg' umask = 0o077 - assert self.repository.borg_cmd(None, testing=True) == [sys.executable, '-m', 'borg.archiver', 'serve' ] + assert self.repository.borg_cmd(None, testing=True) == [sys.executable, '-m', 'borg.archiver', 'serve'] args = MockArgs() # note: test logger is on info log level, so --info gets added automagically assert self.repository.borg_cmd(args, testing=False) == ['borg', 'serve', '--umask=077', '--info'] diff --git a/borg/upgrader.py b/borg/upgrader.py index 8034661a..e739e071 100644 --- a/borg/upgrader.py +++ b/borg/upgrader.py @@ -321,6 +321,6 @@ class Borg0xxKeyfileKey(KeyfileKey): filename = os.path.join(keys_dir, name) with open(filename, 'r') as fd: line = fd.readline().strip() - if line and line.startswith(cls.FILE_ID) and line[len(cls.FILE_ID)+1:] == id: + if line and line.startswith(cls.FILE_ID) and line[len(cls.FILE_ID) + 1:] == id: return filename raise KeyfileNotFoundError(repository.path, keys_dir) diff --git a/borg/xattr.py b/borg/xattr.py index c3e85492..27a18df6 100644 --- a/borg/xattr.py +++ b/borg/xattr.py @@ -231,8 +231,8 @@ elif sys.platform.startswith('freebsd'): # pragma: freebsd only mv = memoryview(namebuf.raw) while mv: length = mv[0] - names.append(os.fsdecode(bytes(mv[1:1+length]))) - mv = mv[1+length:] + names.append(os.fsdecode(bytes(mv[1:1 + length]))) + mv = mv[1 + length:] return names def getxattr(path, name, *, follow_symlinks=True): diff --git a/setup.py b/setup.py index 2ba2de47..b64f5bb3 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ on_rtd = os.environ.get('READTHEDOCS') # msgpack pure python data corruption was fixed in 0.4.6. # Also, we might use some rather recent API features. -install_requires=['msgpack-python>=0.4.6', ] +install_requires = ['msgpack-python>=0.4.6', ] from setuptools import setup, Extension @@ -120,12 +120,14 @@ elif not on_rtd: with open('README.rst', 'r') as fd: long_description = fd.read() + class build_usage(Command): description = "generate usage for each command" user_options = [ ('output=', 'O', 'output directory'), ] + def initialize_options(self): pass @@ -172,6 +174,7 @@ class build_api(Command): user_options = [ ('output=', 'O', 'output directory'), ] + def initialize_options(self): pass