'''Put a module's Result into storage. The semantics are as for `put`, and the exact behaviour regarding partial copies and leftover files on errors is undefined.'''
for fn in result.files:
self.queue(fn)
self.put(fn)
for _, subresult in result.submoduleResults:
self.queue_result(subresult)
@property
def queued_files(self) -> typing.List[str]:
return self._queue[:]
@abc.abstractmethod
def put_queue(self):
'''Put all queued files into storage. If an error occurs, partial copies may remain in storage. If it completes, the local input copy is removed.'''
self.put_result(subresult)
@abc.abstractmethod
@contextlib.contextmanager
@@ -54,11 +43,10 @@ class DirectoryStorage(Storage):
if not self._check_directory():
os.makedirs(self._directory)
def put_queue(self):
def put(self, filename):
self._ensure_directory()
for fn in self.queued_files:
_logger.info(f'Moving {fn} to {self._directory}')
shutil.move(fn, self._directory)
_logger.info(f'Moving {filename} to {self._directory}')