Skip to main content

OpenDAL Driver

jumpstarter-driver-opendal provides functionality for interacting with storages attached to the exporter.

Installation

:substitutions:
$ pip3 install --extra-index-url {{index_url}} jumpstarter-driver-opendal

Configuration

Example configuration:

:language: yaml

Configuration Parameters

  • scheme (required): The storage service type (e.g., "fs", "s3", "gcs"). See OpenDAL services for supported options.
  • kwargs (required): Service-specific configuration parameters passed to the OpenDAL operator.
  • remove_created_on_close (optional, default: false): When enabled, automatically removes all files and directories created during the session when the driver is closed.

File/Directory Tracking and Cleanup

The OpenDAL driver tracks all files and directories created during a session:

  • File Creation: Files opened in write modes ("wb", "w", "ab", "a")
  • Directory Creation: Directories created via create_dir()
  • Copy Operations: Target files/directories from copy() operations
  • Rename Operations: Target files/directories from rename() operations (source is removed from tracking)

Automatic Cleanup: The tracking is automatically updated when resources are removed:

  • Delete Operations: delete() removes the path from tracking
  • Remove Operations: remove_all() removes the path from tracking

Cleanup Behavior: When remove_created_on_close: true, all tracked files and directories are automatically removed when the driver closes (filesystem only)

Tracking API

# Get all created resources (files and directories)
created_resources = await driver.get_created_resources()  # Returns set[str]

# Example usage
for path in created_resources:
    print(f"Created: {path}")

Use Cases

Temporary File Management:

# Enable cleanup for temporary storage
remove_created_on_close: true

Persistent Storage:

# Disable cleanup to preserve files (default)
remove_created_on_close: false

Note: Pre-existing files that are written to are treated as "created" since they may be remnants from failed cleanup operations.

API Reference

Examples

>>> from tempfile import NamedTemporaryFile
>>> opendal.create_dir("test/directory/")
>>> opendal.write_bytes("test/directory/file", b"hello")
>>> assert opendal.hash("test/directory/file", "md5") == "5d41402abc4b2a76b9719d911017c592"
>>> opendal.remove_all("test/")
from jumpstarter.config.exporter import ExporterConfigV1Alpha1DriverInstance
from jumpstarter.common.utils import serve

instance = serve(
    ExporterConfigV1Alpha1DriverInstance.from_path("source/reference/package-apis/drivers/opendal.yaml"
).instantiate())

opendal = instance.__enter__()
instance.__exit__(None, None, None)

Client API

.. autoclass:: jumpstarter_driver_opendal.client.OpendalClient()
    :members:

.. autoclass:: jumpstarter_driver_opendal.client.OpendalFile()
    :members:

.. autoclass:: jumpstarter_driver_opendal.common.Metadata()
    :members:
    :undoc-members:
    :exclude-members: model_config

.. autoclass:: jumpstarter_driver_opendal.common.EntryMode()
    :members:
    :undoc-members:
    :exclude-members: model_config

.. autoclass:: jumpstarter_driver_opendal.common.PresignedRequest()
    :members:
    :undoc-members:
    :exclude-members: model_config

.. autoclass:: jumpstarter_driver_opendal.common.Capability()
    :members:
    :undoc-members:
    :exclude-members: model_config

Release files for jumpstarter-driver-opendal 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jumpstarter-driver-opendal 0.9.0
File Size Uploaded
jumpstarter_driver_opendal-0.9.0.tar.gz 18.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jumpstarter-driver-opendal 0.9.0
File Interpreter ABI Platform
jumpstarter_driver_opendal-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.5 kB

Release files / jumpstarter_driver_opendal-0.9.0.tar.gz

Download URL jumpstarter_driver_opendal-0.9.0.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8edca0311845a6aa547b793ccc6164639047d768bef440e35369ae5c9636549c
BLAKE2b-256 checksum
How to use checksums
a748ba10119ce4dda62f4569f6991c4d90ad85777fb781776c49c6b62033eb36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.22

Release files / jumpstarter_driver_opendal-0.9.0-py3-none-any.whl

Download URL jumpstarter_driver_opendal-0.9.0-py3-none-any.whl
Size 20.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ef3aa5269b0dba860f1635f968fb11384139110e40232312cd7b3ee6f444d43
BLAKE2b-256 checksum
How to use checksums
9fa85a3d3d1d486445c49f5a7282aba9af1fc7472b6dabe58fdf3d999b927ed2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.22

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.1

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page