Skip to content

FileOperations

Access via client.files. Operates on individual files by MFID.

For dataset-scoped file operations (upload, bulk download) use client.datasets. For ingestion management use client.ingestions.

crucible.resources.files.FileOperations

Operations on individual files by MFID.

Access via: client.files.get(), client.files.list(), etc.

get(file_id)

Get metadata for a single file by its MFID.

Parameters:

Name Type Description Default
file_id str

File MFID

required

Returns:

Name Type Description
Dict Dict

File record (mfid, filename, storage_path, storage_backend, access_note, size, sha256_hash, dataset_mfid)

list(limit=DEFAULT_LIMIT, sha256_hash=None)

List files across all accessible datasets.

Parameters:

Name Type Description Default
limit int

Maximum number of results

DEFAULT_LIMIT
sha256_hash Optional[str]

Filter by SHA-256 hex digest

None

Returns:

Type Description
List[Dict]

List[Dict]: File records (mfid, filename, storage_path, storage_backend, access_note, size, sha256_hash, dataset_mfid)

download(file_id, output_dir='.')

Download a single file by MFID to a local directory.

Parameters:

Name Type Description Default
file_id str

File MFID

required
output_dir str

Directory to save the file (default: current directory)

'.'

Returns:

Name Type Description
str str

Path of the downloaded file

Raises:

Type Description
RuntimeError

If the file has not been ingested yet, or if it's not stored on GCS (Crucible cannot fetch it directly in that case).

Get a signed download URL for a single file.

Parameters:

Name Type Description Default
file_id str

File MFID

required

Returns:

Name Type Description
str str

Signed URL valid for 1 hour, no auth required.

Raises:

Type Description
HTTPError 404

File has not been ingested yet.

request_ingestion(file_id, ingestion_class=None, wait_for_response=False)

Request ingestion of an uploaded file.

Parameters:

Name Type Description Default
file_id str

File MFID

required
ingestion_class Optional[str]

Ingestion class for the worker (e.g. 'lammps', 'nexus'). Defaults to the server-side default if omitted.

None
wait_for_response bool

Block until ingestion completes.

False

Returns:

Name Type Description
Dict Dict

IngestionRequest record (id, status, ...)