Skip to main content

PySpiral

PySpiral is the legacy SpiralDB Python API. It remains available as pip install pyspiral with import spiral, and continues to target the old table format.

The new engine SDK is published separately as spiraldb and uses import spiraldb.

Third-Party Notices

PySpiral packages include spiral/THIRD_PARTY_NOTICES.md.

Volumes on hosted SpiralDB

Choose an existing Volume when creating a project:

import spiral

client = spiral.Spiral()
project = client.create_project(description="Archive", volume_id="vol_example")
print(project.get_storage())

List available Volumes with client.api.volumes.list(). To register an existing AWS bucket or prefix with OIDC credentials:

from spiral.api.volumes import AwsOidcCredential, RegisterVolumeRequest

volume = client.api.volumes.register(
    RegisterVolumeRequest(
        name="Archive",
        uri="s3://my-bucket/archive/",
        region="eu-west-2",
        credential=AwsOidcCredential(
            role_arn="arn:aws:iam::123456789012:role/spiral-storage",
            region="eu-west-2",
        ),
    )
)
print(volume.identity.trust_policy)

Apply the returned trust policy to the AWS role before using the storage. Registration does not create a bucket or test object reads and writes. Volume registration and changes require organization owner permissions.

The same API accepts GcsOidcCredential, R2Credential, and S3LikeCredential (providers minio, rustfs, and s3_like). Read responses omit secrets. Organization members can receive only a Volume's ID and name; its storage details and identity are available to owners.

Use client.api.volumes.update_status(volume.id, "retired") to stop new allocations, or "revoked" to stop issuing or renewing access. Already issued credentials remain usable until they expire. Use "active" to reactivate it. client.api.volumes.update_credential(volume.id, credential) replaces the credential while retaining the storage root.

For an existing project:

from spiral.api.volumes import FileSystemStorage, VolumeStorage

project.select_storage(VolumeStorage(volume_id="vol_example"))
project.select_storage(FileSystemStorage())

Storage selection controls allocation of new managed tables on servers that support Volumes. It does not move existing data or change PySpiral's legacy table format. This client support does not port the new engine's data path.

Without volume_id, project creation keeps the organization's default-storage behavior. The filesystem parameter remains available for legacy servers; current hosted servers require Volumes instead of an explicit filesystem. Do not pass both parameters.

The legacy CLI provides the same operations:

spiral volumes ls
spiral volumes register --name Archive --uri s3://my-bucket/archive/ \
  --provider aws --role-arn arn:aws:iam::123456789012:role/spiral-storage --region eu-west-2
spiral projects create --description Archive --volume vol_example
spiral projects storage project_example
spiral projects storage project_example --volume vol_example
spiral projects storage project_example --file-system
spiral volumes status vol_example retired
spiral volumes credential vol_example --provider aws \
  --role-arn arn:aws:iam::123456789012:role/spiral-storage --region eu-west-2

For S3-compatible storage, use --provider s3_like (or minio / rustfs) and --endpoint. For R2, use --provider r2 --account-id ACCOUNT_ID and, if needed, --jurisdiction eu. These providers read AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from the environment, as legacy fs update does. For GCS OIDC, use --provider gcs --workload-identity-provider PROVIDER_RESOURCE and --service-account EMAIL.

JSON files remain optional: spiral volumes register --request-file volume.json or spiral volumes credential vol_example --request-file credential.json. Do not combine --request-file with storage flags. volume.json uses the server's registration format:

{
  "name": "Archive",
  "uri": "s3://my-bucket/archive/",
  "region": "eu-west-2",
  "credential": {
    "provider": "aws",
    "type": "oidc",
    "roleArn": "arn:aws:iam::123456789012:role/spiral-storage",
    "region": "eu-west-2"
  }
}

credential.json contains just the credential field with the replacement credential. Access-key secrets come from environment variables or the optional JSON file; they do not need to appear in shell arguments.

Migrating legacy fs commands

The following commands are deprecated. They still call the legacy APIs for compatibility, and print a warning and migration instructions to stderr.

Deprecated command Replacement
spiral fs show PROJECT spiral projects storage PROJECT
spiral fs list-providers spiral volumes ls
spiral fs update PROJECT ... spiral volumes register --name NAME --uri URI --provider PROVIDER ..., then spiral projects storage PROJECT --volume VOLUME_ID

Choose a platform Volume from volumes ls instead of a built-in provider. For a custom bucket, register its root once and select that Volume for each project that should use it. An AWS or GCS Volume has its own OIDC identity: configure the returned trust policy instead of reusing a legacy file system's identity. Volume selection does not migrate existing files.

spiral fs mounts remains available. Mount management has no equivalent in the Volume API, and its server endpoints are not deprecated.

Metadata

Release files for pyspiral 0.16.33

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

Built distributions (wheels)

Table of built distributions (wheels) for pyspiral 0.16.33
File Interpreter ABI Platform Actions
pyspiral-0.16.33-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details for pyspiral-0.16.33-cp311-abi3-manylinux_2_28_x86_64.whl
pyspiral-0.16.33-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details for pyspiral-0.16.33-cp311-abi3-manylinux_2_28_aarch64.whl
pyspiral-0.16.33-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details for pyspiral-0.16.33-cp311-abi3-macosx_11_0_arm64.whl

Total release size: 130.7 MB

Release files / pyspiral-0.16.33-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL pyspiral-0.16.33-cp311-abi3-manylinux_2_28_x86_64.whl
Size 45.8 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
19f05646d2fcac06c3f6c0ea654ff27bc02fd515f848e9e3e2d583db4a2239f7
BLAKE2b-256 checksum
How to use checksums
ad99cc2976bdb3a1c7aee7dee220882248beee8dd37625e48861c951596aae7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pyspiral-0.16.33-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL pyspiral-0.16.33-cp311-abi3-manylinux_2_28_aarch64.whl
Size 46.3 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
b88378adedc2db9c42d66f3e39e1fe0a95377f8c0fd492dca1f5a949f22f9bc3
BLAKE2b-256 checksum
How to use checksums
ac539f0cbe798684d4177b92a6e156ffb7377afc9210e4001635cfa14440271d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pyspiral-0.16.33-cp311-abi3-macosx_11_0_arm64.whl

Download URL pyspiral-0.16.33-cp311-abi3-macosx_11_0_arm64.whl
Size 38.6 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2dc394bbe2f9d57b2bb12ce829602db333cbeb77ceb1a87992226e6fd236fd27
BLAKE2b-256 checksum
How to use checksums
99fe4dfe30304cd10ecd49b52e6a3b217e25e82c4646ab2dc0f2150c749fbdb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for pyspiral 0.16.33

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.16.33 This release

3 release files No provenance

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