toil.fileStores.abstractFileStore
¶
Module Contents¶
Classes¶
Interface used to allow user code run by Toil to read and write files. |
Attributes¶
- toil.fileStores.abstractFileStore.logger¶
- class toil.fileStores.abstractFileStore.AbstractFileStore(jobStore, jobDesc, file_store_dir, waitForPreviousCommit)[source]¶
Bases:
digraph inheritance8196dfddc5 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="Helper class that provides a standard way to create an ABC using"]; "AbstractFileStore" [URL="#toil.fileStores.abstractFileStore.AbstractFileStore",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Interface used to allow user code run by Toil to read and write files."]; "ABC" -> "AbstractFileStore" [arrowsize=0.5,style="setlinewidth(0.5)"]; }abc.ABC
Interface used to allow user code run by Toil to read and write files.
Also provides the interface to other Toil facilities used by user code, including:
normal (non-real-time) logging
finding the correct temporary directory for scratch work
importing and exporting files into and out of the workflow
Stores user files in the jobStore, but keeps them separate from actual jobs.
May implement caching.
Passed as argument to the
toil.job.Job.run()
method.Access to files is only permitted inside the context manager provided by
toil.fileStores.abstractFileStore.AbstractFileStore.open()
.Also responsible for committing completed jobs back to the job store with an update operation, and allowing that commit operation to be waited for.
- Parameters
jobStore (toil.jobStores.abstractJobStore.AbstractJobStore) –
jobDesc (toil.job.JobDescription) –
file_store_dir (str) –
waitForPreviousCommit (Callable[[], Any]) –
- static createFileStore(jobStore, jobDesc, file_store_dir, waitForPreviousCommit, caching)[source]¶
Create a concreate FileStore.
- Parameters
jobStore (toil.jobStores.abstractJobStore.AbstractJobStore) –
jobDesc (toil.job.JobDescription) –
file_store_dir (str) –
waitForPreviousCommit (Callable[[], Any]) –
caching (Optional[bool]) –
- Return type
Union[toil.fileStores.nonCachingFileStore.NonCachingFileStore, toil.fileStores.cachingFileStore.CachingFileStore]
- static shutdownFileStore(workflowID, config_work_dir, config_coordination_dir)[source]¶
Carry out any necessary filestore-specific cleanup.
This is a destructive operation and it is important to ensure that there are no other running processes on the system that are modifying or using the file store for this workflow.
This is the intended to be the last call to the file store in a Toil run, called by the batch system cleanup function upon batch system shutdown.
- open(job)[source]¶
Create the context manager around tasks prior and after a job has been run.
File operations are only permitted inside the context manager.
Implementations must only yield from within with super().open(job):.
- Parameters
job (toil.job.Job) – The job instance of the toil job to run.
- Return type
Generator[None, None, None]
- getLocalTempDir()[source]¶
Get a new local temporary directory in which to write files.
The directory will only persist for the duration of the job.
- Returns
The absolute path to a new local temporary directory. This directory will exist for the duration of the job only, and is guaranteed to be deleted once the job terminates, removing all files it contains recursively.
- Return type
- getLocalTempFile(suffix=None, prefix=None)[source]¶
Get a new local temporary file that will persist for the duration of the job.
- Parameters
- Returns
The absolute path to a local temporary file. This file will exist for the duration of the job only, and is guaranteed to be deleted once the job terminates.
- Return type
- getLocalTempFileName(suffix=None, prefix=None)[source]¶
Get a valid name for a new local file. Don’t actually create a file at the path.
- Parameters
- Returns
Path to valid file
- Return type
- abstract writeGlobalFile(localFileName, cleanup=False)[source]¶
Upload a file (as a path) to the job store.
If the file is in a FileStore-managed temporary directory (i.e. from
toil.fileStores.abstractFileStore.AbstractFileStore.getLocalTempDir()
), it will become a local copy of the file, eligible for deletion bytoil.fileStores.abstractFileStore.AbstractFileStore.deleteLocalFile()
.If an executable file on the local filesystem is uploaded, its executability will be preserved when it is downloaded again.
- Parameters
localFileName (str) – The path to the local file to upload. The last path component (basename of the file) will remain associated with the file in the file store, if supported by the backing JobStore, so that the file can be searched for by name or name glob.
cleanup (bool) – if True then the copy of the global file will be deleted once the job and all its successors have completed running. If not the global file must be deleted manually.
- Returns
an ID that can be used to retrieve the file.
- Return type
- writeGlobalFileStream(cleanup=False, basename=None, encoding=None, errors=None)[source]¶
Similar to writeGlobalFile, but allows the writing of a stream to the job store. The yielded file handle does not need to and should not be closed explicitly.
- Parameters
encoding (Optional[str]) – The name of the encoding used to decode the file. Encodings are the same as for decode(). Defaults to None which represents binary mode.
errors (Optional[str]) – Specifies how encoding errors are to be handled. Errors are the same as for open(). Defaults to ‘strict’ when an encoding is specified.
cleanup (bool) – is as in
toil.fileStores.abstractFileStore.AbstractFileStore.writeGlobalFile()
.basename (Optional[str]) – If supported by the backing JobStore, use the given file basename so that when searching the job store with a query matching that basename, the file will be detected.
- Returns
A context manager yielding a tuple of 1) a file handle which can be written to and 2) the toil.fileStores.FileID of the resulting file in the job store.
- Return type
Iterator[Tuple[toil.lib.io.WriteWatchingStream, toil.fileStores.FileID]]
- logAccess(fileStoreID, destination=None)[source]¶
Record that the given file was read by the job.
(to be announced if the job fails)
If destination is not None, it gives the path that the file was downloaded to. Otherwise, assumes that the file was streamed.
Must be called by
readGlobalFile()
andreadGlobalFileStream()
implementations.- Parameters
fileStoreID (Union[toil.fileStores.FileID, str]) –
destination (Union[str, None]) –
- Return type
None
- abstract readGlobalFile(fileStoreID, userPath=None, cache=True, mutable=False, symlink=False)[source]¶
Make the file associated with fileStoreID available locally.
If mutable is True, then a copy of the file will be created locally so that the original is not modified and does not change the file for other jobs. If mutable is False, then a link can be created to the file, saving disk resources. The file that is downloaded will be executable if and only if it was originally uploaded from an executable file on the local filesystem.
If a user path is specified, it is used as the destination. If a user path isn’t specified, the file is stored in the local temp directory with an encoded name.
The destination file must not be deleted by the user; it can only be deleted through deleteLocalFile.
Implementations must call
logAccess()
to report the download.- Parameters
fileStoreID (str) – job store id for the file
userPath (Optional[str]) – a path to the name of file to which the global file will be copied or hard-linked (see below).
cache (bool) – Described in
toil.fileStores.CachingFileStore.readGlobalFile()
mutable (bool) – Described in
toil.fileStores.CachingFileStore.readGlobalFile()
symlink (bool) – True if caller can accept symlink, False if caller can only accept a normal file or hardlink
- Returns
An absolute path to a local, temporary copy of the file keyed by fileStoreID.
- Return type
- abstract readGlobalFileStream(fileStoreID, encoding=None, errors=None)[source]¶
Read a stream from the job store; similar to readGlobalFile.
The yielded file handle does not need to and should not be closed explicitly.
- Parameters
encoding (Optional[str]) – the name of the encoding used to decode the file. Encodings are the same as for decode(). Defaults to None which represents binary mode.
errors (Optional[str]) – an optional string that specifies how encoding errors are to be handled. Errors are the same as for open(). Defaults to ‘strict’ when an encoding is specified.
fileStoreID (str) –
- Return type
Implementations must call
logAccess()
to report the download.
- getGlobalFileSize(fileStoreID)[source]¶
Get the size of the file pointed to by the given ID, in bytes.
If a FileID or something else with a non-None ‘size’ field, gets that.
Otherwise, asks the job store to poll the file’s size.
Note that the job store may overestimate the file’s size, for example if it is encrypted and had to be augmented with an IV or other encryption framing.
- Parameters
fileStoreID (Union[toil.fileStores.FileID, str]) – File ID for the file
- Returns
File’s size in bytes, as stored in the job store
- Return type
- abstract deleteLocalFile(fileStoreID)[source]¶
Delete local copies of files associated with the provided job store ID.
Raises an OSError with an errno of errno.ENOENT if no such local copies exist. Thus, cannot be called multiple times in succession.
The files deleted are all those previously read from this file ID via readGlobalFile by the current job into the job’s file-store-provided temp directory, plus the file that was written to create the given file ID, if it was written by the current job from the job’s file-store-provided temp directory.
- Parameters
fileStoreID (Union[toil.fileStores.FileID, str]) – File Store ID of the file to be deleted.
- Return type
None
- abstract deleteGlobalFile(fileStoreID)[source]¶
Delete local files and then permanently deletes them from the job store.
To ensure that the job can be restarted if necessary, the delete will not happen until after the job’s run method has completed.
- Parameters
fileStoreID (Union[toil.fileStores.FileID, str]) – the File Store ID of the file to be deleted.
- Return type
None
- importFile(srcUrl, sharedFileName=None)[source]¶
- Parameters
- Return type
Optional[toil.fileStores.FileID]
- import_file(src_uri, shared_file_name=None)[source]¶
- Parameters
- Return type
Optional[toil.fileStores.FileID]
- exportFile(jobStoreFileID, dstUrl)[source]¶
- Parameters
jobStoreFileID (toil.fileStores.FileID) –
dstUrl (str) –
- Return type
None
- abstract export_file(file_id, dst_uri)[source]¶
- Parameters
file_id (toil.fileStores.FileID) –
dst_uri (str) –
- Return type
None
- logToMaster(text, level=logging.INFO)[source]¶
Send a logging message to the leader. The message will also be logged by the worker at the same level.
- abstract startCommit(jobState=False)[source]¶
Update the status of the job on the disk.
May bump the version number of the job.
May start an asynchronous process. Call waitForCommit() to wait on that process. You must waitForCommit() before committing any further updates to the job. During the asynchronous process, it is safe to modify the job; modifications after this call will not be committed until the next call.
- Parameters
jobState (bool) – If True, commit the state of the FileStore’s job, and file deletes. Otherwise, commit only file creates/updates.
- Return type
None
- abstract waitForCommit()[source]¶
Blocks while startCommit is running.
This function is called by this job’s successor to ensure that it does not begin modifying the job store until after this job has finished doing so.
Might be called when startCommit is never called on a particular instance, in which case it does not block.
- Returns
Always returns True
- Return type
- abstract classmethod shutdown(shutdown_info)[source]¶
Shutdown the filestore on this node.
This is intended to be called on batch system shutdown.
- Parameters
shutdown_info (Any) – The implementation-specific shutdown information, for shutting down the file store and removing all its state and all job local temp directories from the node.
- Return type
None