# {py:mod}`labthings_fastapi.outputs.blob` ```{py:module} labthings_fastapi.outputs.blob ``` ```{autodoc2-docstring} labthings_fastapi.outputs.blob :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`BlobData ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobData :summary: ``` * - {py:obj}`ServerSideBlobData ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.ServerSideBlobData :summary: ``` * - {py:obj}`BlobBytes ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobBytes :summary: ``` * - {py:obj}`BlobFile ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobFile :summary: ``` * - {py:obj}`Blob ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob :summary: ``` * - {py:obj}`BlobDataManager ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobDataManager :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`blob_type ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.blob_type :summary: ``` * - {py:obj}`blob_serialisation_context_manager ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.blob_serialisation_context_manager :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`blobdata_to_url_ctx ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.blobdata_to_url_ctx :summary: ``` * - {py:obj}`url_to_blobdata_ctx ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.url_to_blobdata_ctx :summary: ``` * - {py:obj}`BlobIOContextDep ` - ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobIOContextDep :summary: ``` ```` ### API `````{py:class} BlobData :canonical: labthings_fastapi.outputs.blob.BlobData Bases: {py:obj}`typing_extensions.Protocol` ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobData ``` ````{py:property} media_type :canonical: labthings_fastapi.outputs.blob.BlobData.media_type :type: str ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobData.media_type ``` ```` ````{py:property} content :canonical: labthings_fastapi.outputs.blob.BlobData.content :type: bytes ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobData.content ``` ```` ````{py:method} save(filename: str) -> None :canonical: labthings_fastapi.outputs.blob.BlobData.save ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobData.save ``` ```` ````{py:method} open() -> io.IOBase :canonical: labthings_fastapi.outputs.blob.BlobData.open ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobData.open ``` ```` ````` `````{py:class} ServerSideBlobData :canonical: labthings_fastapi.outputs.blob.ServerSideBlobData Bases: {py:obj}`labthings_fastapi.outputs.blob.BlobData`, {py:obj}`typing_extensions.Protocol` ```{autodoc2-docstring} labthings_fastapi.outputs.blob.ServerSideBlobData ``` ````{py:attribute} id :canonical: labthings_fastapi.outputs.blob.ServerSideBlobData.id :type: typing.Optional[uuid.UUID] :value: > None ```{autodoc2-docstring} labthings_fastapi.outputs.blob.ServerSideBlobData.id ``` ```` ````{py:method} response() -> fastapi.responses.Response :canonical: labthings_fastapi.outputs.blob.ServerSideBlobData.response ```{autodoc2-docstring} labthings_fastapi.outputs.blob.ServerSideBlobData.response ``` ```` ````` `````{py:class} BlobBytes(data: bytes, media_type: str) :canonical: labthings_fastapi.outputs.blob.BlobBytes ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobBytes ``` ````{py:attribute} id :canonical: labthings_fastapi.outputs.blob.BlobBytes.id :type: typing.Optional[uuid.UUID] :value: > None ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobBytes.id ``` ```` ````{py:method} __init__(data: bytes, media_type: str) :canonical: labthings_fastapi.outputs.blob.BlobBytes.__init__ ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobBytes.__init__ ``` ```` ````{py:property} content :canonical: labthings_fastapi.outputs.blob.BlobBytes.content :type: bytes ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobBytes.content ``` ```` ````{py:method} save(filename: str) -> None :canonical: labthings_fastapi.outputs.blob.BlobBytes.save ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobBytes.save ``` ```` ````{py:method} open() -> io.IOBase :canonical: labthings_fastapi.outputs.blob.BlobBytes.open ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobBytes.open ``` ```` ````{py:method} response() -> fastapi.responses.Response :canonical: labthings_fastapi.outputs.blob.BlobBytes.response ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobBytes.response ``` ```` ````` `````{py:class} BlobFile(file_path: str, media_type: str, **kwargs) :canonical: labthings_fastapi.outputs.blob.BlobFile ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobFile ``` ````{py:attribute} id :canonical: labthings_fastapi.outputs.blob.BlobFile.id :type: typing.Optional[uuid.UUID] :value: > None ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobFile.id ``` ```` ````{py:method} __init__(file_path: str, media_type: str, **kwargs) :canonical: labthings_fastapi.outputs.blob.BlobFile.__init__ ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobFile.__init__ ``` ```` ````{py:property} content :canonical: labthings_fastapi.outputs.blob.BlobFile.content :type: bytes ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobFile.content ``` ```` ````{py:method} save(filename: str) -> None :canonical: labthings_fastapi.outputs.blob.BlobFile.save ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobFile.save ``` ```` ````{py:method} open() -> io.IOBase :canonical: labthings_fastapi.outputs.blob.BlobFile.open ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobFile.open ``` ```` ````{py:method} response() -> fastapi.responses.Response :canonical: labthings_fastapi.outputs.blob.BlobFile.response ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobFile.response ``` ```` ````` `````{py:class} Blob :canonical: labthings_fastapi.outputs.blob.Blob Bases: {py:obj}`pydantic.BaseModel` ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob ``` ````{py:attribute} href :canonical: labthings_fastapi.outputs.blob.Blob.href :type: str :value: > None ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.href ``` ```` ````{py:attribute} media_type :canonical: labthings_fastapi.outputs.blob.Blob.media_type :type: str :value: > '*/*' ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.media_type ``` ```` ````{py:attribute} rel :canonical: labthings_fastapi.outputs.blob.Blob.rel :type: typing.Literal[output] :value: > 'output' ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.rel ``` ```` ````{py:attribute} description :canonical: labthings_fastapi.outputs.blob.Blob.description :type: str :value: > 'The output from this action is not serialised to JSON, so it must be retrieved as a file. This link ...' ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.description ``` ```` ````{py:attribute} _data :canonical: labthings_fastapi.outputs.blob.Blob._data :type: typing.Optional[labthings_fastapi.outputs.blob.ServerSideBlobData] :value: > None ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob._data ``` ```` ````{py:method} retrieve_data() :canonical: labthings_fastapi.outputs.blob.Blob.retrieve_data ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.retrieve_data ``` ```` ````{py:method} to_dict() -> typing.Mapping[str, str] :canonical: labthings_fastapi.outputs.blob.Blob.to_dict ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.to_dict ``` ```` ````{py:method} default_media_type() -> str :canonical: labthings_fastapi.outputs.blob.Blob.default_media_type :classmethod: ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.default_media_type ``` ```` ````{py:property} data :canonical: labthings_fastapi.outputs.blob.Blob.data :type: labthings_fastapi.outputs.blob.ServerSideBlobData ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.data ``` ```` ````{py:property} content :canonical: labthings_fastapi.outputs.blob.Blob.content :type: bytes ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.content ``` ```` ````{py:method} save(filepath: str) -> None :canonical: labthings_fastapi.outputs.blob.Blob.save ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.save ``` ```` ````{py:method} open() -> io.IOBase :canonical: labthings_fastapi.outputs.blob.Blob.open ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.open ``` ```` ````{py:method} from_bytes(data: bytes) -> typing_extensions.Self :canonical: labthings_fastapi.outputs.blob.Blob.from_bytes :classmethod: ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.from_bytes ``` ```` ````{py:method} from_temporary_directory(folder: tempfile.TemporaryDirectory, file: str) -> typing_extensions.Self :canonical: labthings_fastapi.outputs.blob.Blob.from_temporary_directory :classmethod: ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.from_temporary_directory ``` ```` ````{py:method} from_file(file: str) -> typing_extensions.Self :canonical: labthings_fastapi.outputs.blob.Blob.from_file :classmethod: ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.from_file ``` ```` ````{py:method} response() :canonical: labthings_fastapi.outputs.blob.Blob.response ```{autodoc2-docstring} labthings_fastapi.outputs.blob.Blob.response ``` ```` ````` ````{py:function} blob_type(media_type: str) -> type[labthings_fastapi.outputs.blob.Blob] :canonical: labthings_fastapi.outputs.blob.blob_type ```{autodoc2-docstring} labthings_fastapi.outputs.blob.blob_type ``` ```` `````{py:class} BlobDataManager() :canonical: labthings_fastapi.outputs.blob.BlobDataManager ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobDataManager ``` ````{py:attribute} _blobs :canonical: labthings_fastapi.outputs.blob.BlobDataManager._blobs :type: weakref.WeakValueDictionary[uuid.UUID, labthings_fastapi.outputs.blob.ServerSideBlobData] :value: > None ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobDataManager._blobs ``` ```` ````{py:method} __init__() :canonical: labthings_fastapi.outputs.blob.BlobDataManager.__init__ ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobDataManager.__init__ ``` ```` ````{py:method} add_blob(blob: labthings_fastapi.outputs.blob.ServerSideBlobData) -> uuid.UUID :canonical: labthings_fastapi.outputs.blob.BlobDataManager.add_blob ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobDataManager.add_blob ``` ```` ````{py:method} get_blob(blob_id: uuid.UUID) -> labthings_fastapi.outputs.blob.ServerSideBlobData :canonical: labthings_fastapi.outputs.blob.BlobDataManager.get_blob ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobDataManager.get_blob ``` ```` ````{py:method} download_blob(blob_id: uuid.UUID) :canonical: labthings_fastapi.outputs.blob.BlobDataManager.download_blob ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobDataManager.download_blob ``` ```` ````{py:method} attach_to_app(app: fastapi.FastAPI) :canonical: labthings_fastapi.outputs.blob.BlobDataManager.attach_to_app ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobDataManager.attach_to_app ``` ```` ````` ````{py:data} blobdata_to_url_ctx :canonical: labthings_fastapi.outputs.blob.blobdata_to_url_ctx :value: > '(...)' ```{autodoc2-docstring} labthings_fastapi.outputs.blob.blobdata_to_url_ctx ``` ```` ````{py:data} url_to_blobdata_ctx :canonical: labthings_fastapi.outputs.blob.url_to_blobdata_ctx :value: > '(...)' ```{autodoc2-docstring} labthings_fastapi.outputs.blob.url_to_blobdata_ctx ``` ```` ````{py:function} blob_serialisation_context_manager(request: fastapi.Request) :canonical: labthings_fastapi.outputs.blob.blob_serialisation_context_manager :async: ```{autodoc2-docstring} labthings_fastapi.outputs.blob.blob_serialisation_context_manager ``` ```` ````{py:data} BlobIOContextDep :canonical: labthings_fastapi.outputs.blob.BlobIOContextDep :type: typing_extensions.TypeAlias :value: > None ```{autodoc2-docstring} labthings_fastapi.outputs.blob.BlobIOContextDep ``` ````