summaryrefslogtreecommitdiff
path: root/src/buildstream/storage
diff options
context:
space:
mode:
authorChandan Singh <csingh43@bloomberg.net>2019-11-11 17:07:09 +0000
committerChandan Singh <chandan@chandansingh.net>2019-11-14 21:21:06 +0000
commit122177153b14664a0e4fed85aa4f22b87cfabf56 (patch)
tree032c2e46825af91f6fe27f22b5b567eea2b7935d /src/buildstream/storage
parenta3ee349558f36a220f79665873b36c1b0f990c8e (diff)
downloadbuildstream-122177153b14664a0e4fed85aa4f22b87cfabf56.tar.gz
Reformat code using Black
As discussed over the mailing list, reformat code using Black. This is a one-off change to reformat all our codebase. Moving forward, we shouldn't expect such blanket reformats. Rather, we expect each change to already comply with the Black formatting style.
Diffstat (limited to 'src/buildstream/storage')
-rw-r--r--src/buildstream/storage/_casbaseddirectory.py111
-rw-r--r--src/buildstream/storage/_filebaseddirectory.py64
-rw-r--r--src/buildstream/storage/directory.py18
3 files changed, 112 insertions, 81 deletions
diff --git a/src/buildstream/storage/_casbaseddirectory.py b/src/buildstream/storage/_casbaseddirectory.py
index 3786f25b6..df28dc591 100644
--- a/src/buildstream/storage/_casbaseddirectory.py
+++ b/src/buildstream/storage/_casbaseddirectory.py
@@ -38,10 +38,20 @@ from ._filebaseddirectory import FileBasedDirectory
from ..utils import FileListResult, BST_ARBITRARY_TIMESTAMP
-class IndexEntry():
+class IndexEntry:
""" Directory entry used in CasBasedDirectory.index """
- def __init__(self, name, entrytype, *, digest=None, target=None, is_executable=False,
- buildstream_object=None, modified=False):
+
+ def __init__(
+ self,
+ name,
+ entrytype,
+ *,
+ digest=None,
+ target=None,
+ is_executable=False,
+ buildstream_object=None,
+ modified=False
+ ):
self.name = name
self.type = entrytype
self.digest = digest
@@ -52,8 +62,9 @@ class IndexEntry():
def get_directory(self, parent):
if not self.buildstream_object:
- self.buildstream_object = CasBasedDirectory(parent.cas_cache, digest=self.digest,
- parent=parent, filename=self.name)
+ self.buildstream_object = CasBasedDirectory(
+ parent.cas_cache, digest=self.digest, parent=parent, filename=self.name
+ )
self.digest = None
return self.buildstream_object
@@ -69,6 +80,7 @@ class IndexEntry():
# which is meant to be unimplemented.
# pylint: disable=super-init-not-called
+
class CasBasedDirectory(Directory):
"""
CAS-based directories can have two names; one is a 'common name' which has no effect
@@ -100,21 +112,19 @@ class CasBasedDirectory(Directory):
def _populate_index(self, digest):
try:
pb2_directory = remote_execution_pb2.Directory()
- with open(self.cas_cache.objpath(digest), 'rb') as f:
+ with open(self.cas_cache.objpath(digest), "rb") as f:
pb2_directory.ParseFromString(f.read())
except FileNotFoundError as e:
raise VirtualDirectoryError("Directory not found in local cache: {}".format(e)) from e
for entry in pb2_directory.directories:
- self.index[entry.name] = IndexEntry(entry.name, _FileType.DIRECTORY,
- digest=entry.digest)
+ self.index[entry.name] = IndexEntry(entry.name, _FileType.DIRECTORY, digest=entry.digest)
for entry in pb2_directory.files:
- self.index[entry.name] = IndexEntry(entry.name, _FileType.REGULAR_FILE,
- digest=entry.digest,
- is_executable=entry.is_executable)
+ self.index[entry.name] = IndexEntry(
+ entry.name, _FileType.REGULAR_FILE, digest=entry.digest, is_executable=entry.is_executable
+ )
for entry in pb2_directory.symlinks:
- self.index[entry.name] = IndexEntry(entry.name, _FileType.SYMLINK,
- target=entry.target)
+ self.index[entry.name] = IndexEntry(entry.name, _FileType.SYMLINK, target=entry.target)
def _find_self_in_parent(self):
assert self.parent is not None
@@ -136,8 +146,7 @@ class CasBasedDirectory(Directory):
return newdir
def _add_file(self, basename, filename, modified=False, can_link=False):
- entry = IndexEntry(filename, _FileType.REGULAR_FILE,
- modified=modified or filename in self.index)
+ entry = IndexEntry(filename, _FileType.REGULAR_FILE, modified=modified or filename in self.index)
path = os.path.join(basename, filename)
entry.digest = self.cas_cache.add_object(path=path, link_directly=can_link)
entry.is_executable = os.access(path, os.X_OK)
@@ -206,14 +215,13 @@ class CasBasedDirectory(Directory):
current_dir = current_dir.descend(*newpaths, follow_symlinks=True)
else:
error = "Cannot descend into {}, which is a '{}' in the directory {}"
- raise VirtualDirectoryError(error.format(path,
- current_dir.index[path].type,
- current_dir),
- reason="not-a-directory")
+ raise VirtualDirectoryError(
+ error.format(path, current_dir.index[path].type, current_dir), reason="not-a-directory"
+ )
else:
- if path == '.':
+ if path == ".":
continue
- elif path == '..':
+ elif path == "..":
if current_dir.parent is not None:
current_dir = current_dir.parent
# In POSIX /.. == / so just stay at the root dir
@@ -222,8 +230,7 @@ class CasBasedDirectory(Directory):
current_dir = current_dir._add_directory(path)
else:
error = "'{}' not found in {}"
- raise VirtualDirectoryError(error.format(path, str(current_dir)),
- reason="directory-not-found")
+ raise VirtualDirectoryError(error.format(path, str(current_dir)), reason="directory-not-found")
return current_dir
@@ -299,12 +306,13 @@ class CasBasedDirectory(Directory):
dest_subdir = self.descend(name, create=create_subdir)
except VirtualDirectoryError:
filetype = self.index[name].type
- raise VirtualDirectoryError('Destination is a {}, not a directory: /{}'
- .format(filetype, relative_pathname))
+ raise VirtualDirectoryError(
+ "Destination is a {}, not a directory: /{}".format(filetype, relative_pathname)
+ )
- dest_subdir._partial_import_cas_into_cas(src_subdir, filter_callback,
- path_prefix=relative_pathname,
- origin=origin, result=result)
+ dest_subdir._partial_import_cas_into_cas(
+ src_subdir, filter_callback, path_prefix=relative_pathname, origin=origin, result=result
+ )
if filter_callback and not filter_callback(relative_pathname):
if is_dir and create_subdir and dest_subdir.is_empty():
@@ -317,20 +325,22 @@ class CasBasedDirectory(Directory):
if not is_dir:
if self._check_replacement(name, relative_pathname, result):
if entry.type == _FileType.REGULAR_FILE:
- self.index[name] = IndexEntry(name, _FileType.REGULAR_FILE,
- digest=entry.digest,
- is_executable=entry.is_executable,
- modified=True)
+ self.index[name] = IndexEntry(
+ name,
+ _FileType.REGULAR_FILE,
+ digest=entry.digest,
+ is_executable=entry.is_executable,
+ modified=True,
+ )
self.__invalidate_digest()
else:
assert entry.type == _FileType.SYMLINK
self._add_new_link_direct(name=name, target=entry.target)
result.files_written.append(relative_pathname)
- def import_files(self, external_pathspec, *,
- filter_callback=None,
- report_written=True, update_mtime=False,
- can_link=False):
+ def import_files(
+ self, external_pathspec, *, filter_callback=None, report_written=True, update_mtime=False, can_link=False
+ ):
""" See superclass Directory for arguments """
result = FileListResult()
@@ -358,13 +368,12 @@ class CasBasedDirectory(Directory):
def import_single_file(self, external_pathspec):
result = FileListResult()
- if self._check_replacement(os.path.basename(external_pathspec),
- os.path.dirname(external_pathspec),
- result):
- self._add_file(os.path.dirname(external_pathspec),
- os.path.basename(external_pathspec),
- modified=os.path.basename(external_pathspec)
- in result.overwritten)
+ if self._check_replacement(os.path.basename(external_pathspec), os.path.dirname(external_pathspec), result):
+ self._add_file(
+ os.path.dirname(external_pathspec),
+ os.path.basename(external_pathspec),
+ modified=os.path.basename(external_pathspec) in result.overwritten,
+ )
result.files_written.append(external_pathspec)
return result
@@ -516,10 +525,8 @@ class CasBasedDirectory(Directory):
"""
- file_list = list(filter(lambda i: i[1].type != _FileType.DIRECTORY,
- self.index.items()))
- directory_list = filter(lambda i: i[1].type == _FileType.DIRECTORY,
- self.index.items())
+ file_list = list(filter(lambda i: i[1].type != _FileType.DIRECTORY, self.index.items()))
+ directory_list = filter(lambda i: i[1].type == _FileType.DIRECTORY, self.index.items())
if prefix != "":
yield prefix
@@ -553,10 +560,7 @@ class CasBasedDirectory(Directory):
"""
for leaf in sorted(self.index.keys()):
entry = self.index[leaf]
- info = {
- "name": os.path.join(prefix, leaf),
- "type": entry.type
- }
+ info = {"name": os.path.join(prefix, leaf), "type": entry.type}
if entry.type == _FileType.REGULAR_FILE:
info["executable"] = entry.is_executable
info["size"] = self.get_size()
@@ -599,8 +603,9 @@ class CasBasedDirectory(Directory):
def _get_underlying_directory(self):
""" There is no underlying directory for a CAS-backed directory, so
throw an exception. """
- raise VirtualDirectoryError("_get_underlying_directory was called on a CAS-backed directory," +
- " which has no underlying directory.")
+ raise VirtualDirectoryError(
+ "_get_underlying_directory was called on a CAS-backed directory," + " which has no underlying directory."
+ )
# _get_digest():
#
diff --git a/src/buildstream/storage/_filebaseddirectory.py b/src/buildstream/storage/_filebaseddirectory.py
index 07c23c192..222b47979 100644
--- a/src/buildstream/storage/_filebaseddirectory.py
+++ b/src/buildstream/storage/_filebaseddirectory.py
@@ -65,23 +65,22 @@ class FileBasedDirectory(Directory):
try:
st = os.lstat(new_path)
if not stat.S_ISDIR(st.st_mode):
- raise VirtualDirectoryError("Cannot descend into '{}': '{}' is not a directory"
- .format(path, new_path))
+ raise VirtualDirectoryError(
+ "Cannot descend into '{}': '{}' is not a directory".format(path, new_path)
+ )
except FileNotFoundError:
if create:
os.mkdir(new_path)
else:
- raise VirtualDirectoryError("Cannot descend into '{}': '{}' does not exist"
- .format(path, new_path))
+ raise VirtualDirectoryError("Cannot descend into '{}': '{}' does not exist".format(path, new_path))
current_dir = FileBasedDirectory(new_path)
return current_dir
- def import_files(self, external_pathspec, *,
- filter_callback=None,
- report_written=True, update_mtime=False,
- can_link=False):
+ def import_files(
+ self, external_pathspec, *, filter_callback=None, report_written=True, update_mtime=False, can_link=False
+ ):
""" See superclass Directory for arguments """
from ._casbaseddirectory import CasBasedDirectory # pylint: disable=cyclic-import
@@ -101,13 +100,21 @@ class FileBasedDirectory(Directory):
source_directory = external_pathspec
if can_link and not update_mtime:
- import_result = link_files(source_directory, self.external_directory,
- filter_callback=filter_callback,
- ignore_missing=False, report_written=report_written)
+ import_result = link_files(
+ source_directory,
+ self.external_directory,
+ filter_callback=filter_callback,
+ ignore_missing=False,
+ report_written=report_written,
+ )
else:
- import_result = copy_files(source_directory, self.external_directory,
- filter_callback=filter_callback,
- ignore_missing=False, report_written=report_written)
+ import_result = copy_files(
+ source_directory,
+ self.external_directory,
+ filter_callback=filter_callback,
+ ignore_missing=False,
+ report_written=report_written,
+ )
if update_mtime:
cur_time = time.time()
@@ -190,8 +197,11 @@ class FileBasedDirectory(Directory):
Return value: List(str) - list of modified paths
"""
- return [f for f in list_relative_paths(self.external_directory)
- if _get_link_mtime(os.path.join(self.external_directory, f)) != BST_ARBITRARY_TIMESTAMP]
+ return [
+ f
+ for f in list_relative_paths(self.external_directory)
+ if _get_link_mtime(os.path.join(self.external_directory, f)) != BST_ARBITRARY_TIMESTAMP
+ ]
def list_relative_paths(self):
"""Provide a list of all relative paths.
@@ -251,11 +261,13 @@ class FileBasedDirectory(Directory):
dest_subdir = self.descend(name, create=create_subdir)
except VirtualDirectoryError:
filetype = self._get_filetype(name)
- raise VirtualDirectoryError('Destination is a {}, not a directory: /{}'
- .format(filetype, relative_pathname))
+ raise VirtualDirectoryError(
+ "Destination is a {}, not a directory: /{}".format(filetype, relative_pathname)
+ )
- dest_subdir._import_files_from_cas(src_subdir, actionfunc, filter_callback,
- path_prefix=relative_pathname, result=result)
+ dest_subdir._import_files_from_cas(
+ src_subdir, actionfunc, filter_callback, path_prefix=relative_pathname, result=result
+ )
if filter_callback and not filter_callback(relative_pathname):
if is_dir and create_subdir and dest_subdir.is_empty():
@@ -279,8 +291,16 @@ class FileBasedDirectory(Directory):
src_path = source_directory.cas_cache.objpath(entry.digest)
actionfunc(src_path, dest_path, result=result)
if entry.is_executable:
- os.chmod(dest_path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
- stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH)
+ os.chmod(
+ dest_path,
+ stat.S_IRUSR
+ | stat.S_IWUSR
+ | stat.S_IXUSR
+ | stat.S_IRGRP
+ | stat.S_IXGRP
+ | stat.S_IROTH
+ | stat.S_IXOTH,
+ )
else:
assert entry.type == _FileType.SYMLINK
os.symlink(entry.target, dest_path)
diff --git a/src/buildstream/storage/directory.py b/src/buildstream/storage/directory.py
index 29cbb53f2..89d20c433 100644
--- a/src/buildstream/storage/directory.py
+++ b/src/buildstream/storage/directory.py
@@ -46,11 +46,12 @@ class VirtualDirectoryError(BstError):
or either of the :class:`.ElementError` or :class:`.SourceError`
exceptions should be raised from this error.
"""
+
def __init__(self, message, reason=None):
super().__init__(message, domain=ErrorDomain.VIRTUAL_FS, reason=reason)
-class Directory():
+class Directory:
def __init__(self, external_directory=None):
raise NotImplementedError()
@@ -74,10 +75,15 @@ class Directory():
raise NotImplementedError()
# Import and export of files and links
- def import_files(self, external_pathspec: Union['Directory', str], *,
- filter_callback: Optional[Callable[[str], bool]] = None,
- report_written: bool = True, update_mtime: bool = False,
- can_link: bool = False) -> FileListResult:
+ def import_files(
+ self,
+ external_pathspec: Union["Directory", str],
+ *,
+ filter_callback: Optional[Callable[[str], bool]] = None,
+ report_written: bool = True,
+ update_mtime: bool = False,
+ can_link: bool = False
+ ) -> FileListResult:
"""Imports some or all files from external_path into this directory.
Args:
@@ -214,4 +220,4 @@ class _FileType(FastEnum):
def __str__(self):
# https://github.com/PyCQA/pylint/issues/2062
- return self.name.lower().replace('_', ' ') # pylint: disable=no-member
+ return self.name.lower().replace("_", " ") # pylint: disable=no-member