benchling_sdk.services.v2.stable.blob_service module¶

class BlobService¶

Bases: benchling_sdk.services.v2.base_service.BaseService

Blobs.

Blobs are opaque files that can be linked to other items in Benchling, like assay runs or results. For example, you can upload a blob, then upload an assay result that links to that blob by ID. The blob will then appear as part of the assay result in the Benchling web UI.

See https://benchling.com/api/reference#/Blobs

abort_multipart_upload(blob_id: str) → None¶

Abort multi-part blob upload.

See https://benchling.com/api/reference#/Blobs/abortMultipartBlob

bulk_get(blob_ids: Iterable[str], returning: Optional[Iterable[str]] = None) → List[Blob]¶

Bulk get Blobs by UUID.

See https://benchling.com/api/reference#/Blobs/bulkGetBlobs

complete_multipart_upload(blob_id: str, blob_parts: Iterable[BlobPart]) → Blob¶

Combine Blob parts into a single Blob.

See https://benchling.com/api/reference#/Blobs/completeMultipartBlob

create(blob: BlobCreate, timeout_seconds: float = DEFAULT_HTTP_TIMEOUT) → Blob¶

Upload a single-part blob.

Blobs larger than 10MB should be uploaded in multiple parts. The data64 parameter is the base64-encoded part contents, and the md5 parameter is the hex-encoded MD5 hash of the part contents. For example, given the string hello, data64 is aGVsbG8= and md5 is 5d41402abc4b2a76b9719d911017c592

See https://benchling.com/api/reference#/Blobs/createBlob

create_from_bytes(input_bytes: Union[_io.BytesIO, bytes], name: str, mime_type: Optional[str] = None, blob_type: BlobCreateType = BlobCreateType.RAW_FILE, timeout_seconds: float = DEFAULT_HTTP_TIMEOUT, chunk_size_bytes: int = DEFAULT_CHUNK_SIZE_BYTES) → Blob¶

Create a Benchling Blob from bytes or a BytesIO stream.

Will automatically attempt a multi-part upload if the stream appears larger than the API’s maximum size for single Blobs.

Parameters
  • input_bytes – The bytes or stream to upload

  • name – The name of the Blob in Benchling

  • mime_type – The representative MIME type for the Blob

  • blob_type – The type of Blob in Benchling (Visualization or Raw File)

  • timeout_seconds – Extends the normal HTTP timeout settings since Blob uploads can be large Use this to extend even further if streams are very large

  • chunk_size_bytes – The size in bytes for each chunk when using a multipart upload. If the bytes exceed chunk_size_bytes, multipart will automatically be attempted. Otherwise, single Blob upload will be used

Returns

The created Blob

Return type

Blob

create_from_file(file_path: Path, name: Optional[str] = None, mime_type: Optional[str] = None, blob_type: BlobCreateType = BlobCreateType.RAW_FILE, auto_detect: bool = True, timeout_seconds: float = DEFAULT_HTTP_TIMEOUT, chunk_size_bytes: int = DEFAULT_CHUNK_SIZE_BYTES) → Blob¶

Create a Benchling Blob from a file.

Will automatically attempt a multi-part upload if the file appears larger than the API’s maximum size for single Blobs.

Parameters
  • file_path – The Path to the file to upload

  • name – The name of the Blob in Benchling

  • mime_type – The representative mime type for the Blob

  • blob_type – The type of Blob in Benchling (Visualization or Raw File)

  • auto_detect – Will attempt to guess the file’s MIME type if mime_type was not specified and auto_detect is True

  • timeout_seconds – Extends the normal HTTP timeout settings since Blob uploads can be large Use this to extend even further if streams are very large

  • chunk_size_bytes – The size in bytes for each chunk when using a multipart upload. If the bytes exceed chunk_size_bytes, multipart will automatically be attempted. Otherwise, single Blob upload will be used

Returns

The created Blob

Return type

Blob

create_multipart_upload(multipart_blob: BlobMultipartCreate) → Blob¶

Initiate multi-part Blob upload.

See https://benchling.com/api/reference#/Blobs/createMultipartBlob

create_part(blob_id: str, blob_part: BlobPartCreate, timeout_seconds: float = DEFAULT_HTTP_TIMEOUT) → BlobPart¶

Upload a part of a multi-part Blob.

Larger files and slower connections will likely need to set a higher timeout_seconds value in order to complete successful part uploads.

See https://benchling.com/api/reference#/Blobs/createBlobPart

download_bytes(blob_id: str) → _io.BytesIO¶

Download a Blob in its entirety from Benchling and write it to BytesIO.

download_file(blob_id: str, destination_path: Optional[Path] = None) → Path¶

Download a Blob from Benchling and writes it to a file.

If specified, destination_path must be a reference to a file and not a directory. It must also not already exist on the file system. If destination_path is None, a temporary file will be created for writing.

download_url(blob_id: str) → BlobUrl¶

Get a Blob’s download URL.

See https://benchling.com/api/reference#/Blobs/getBlobUrl

get_by_id(blob_id: str, returning: Optional[Iterable[str]] = None) → Blob¶

Get a Blob.

See https://benchling.com/api/reference#/Blobs/getBlob

static validate_chunk_size(chunk_size_bytes: int)¶

Validate the specified bytes chunk size.