Skip to main content

SCAI state management library for database migrations

Project description

scai-state

SCAI state management library for database migrations.

Installation

pip install scai-state

Usage

from scai_state import CodeUnitRegistry
from scai_state.types import CodeUnit, SourceMetadata, TargetMetadata, ObjectType, Kind

# Initialize a new registry
registry = CodeUnitRegistry.init("/path/to/repo")

# Or open an existing registry
registry = CodeUnitRegistry.open("/path/to/existing/repo")

# Create a code unit
code_unit = CodeUnit(
    kind=Kind.databaseObject,
    source=SourceMetadata(
        objectType=ObjectType.table,
        database="RETAIL_DB",
        schema="dbo",
        name="Customer",
    ),
    target=TargetMetadata(
        objectType=ObjectType.table,
        database="RETAIL",
        schema="DBO",
        name="CUSTOMER",
    ),
)

# Returns the ID (auto-generated if not provided)
id = registry.create(code_unit)

# Load a code unit
cu = registry.load(id)

# List all code units (with optional filter)
results = registry.list("source.objectType = 'table'")

# Update specific fields
registry.update(id, {"planning.wave": 2})

# Delete a code unit
registry.delete(id)

Testing

Integration tests live in tests/ and cover the full Python -> Rust -> disk -> Rust -> Python round-trip:

Test file What it verifies
test_serialization.py FFI round-trip fidelity for all fields, Pydantic alias handling, extensions empty-map preservation
test_errors.py ScaiError.error_code contract across FFI (1001, 1003)
test_batch.py BatchResult wire format with partial failures (1004)
test_crud.py Full CRUD lifecycle, upsert deep-merge semantics
test_query.py find_by_object partial matching with exclude_unset

Run them from the repo root:

./scripts/run-tests.sh python

Or directly:

cd crates/scai-state-python
maturin develop
pytest tests/ -v

Building from Source

This package requires Rust and maturin to build:

# Install maturin
pip install maturin

# Build and install in development mode
cd crates/scai-state-python
maturin develop

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snowflake_code_unit_registry-0.8.30.tar.gz (177.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

snowflake_code_unit_registry-0.8.30-cp39-abi3-win_arm64.whl (6.7 MB view details)

Uploaded CPython 3.9+Windows ARM64

snowflake_code_unit_registry-0.8.30-cp39-abi3-win_amd64.whl (7.0 MB view details)

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.8.30-cp39-abi3-manylinux_2_38_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.38+ x86-64

snowflake_code_unit_registry-0.8.30-cp39-abi3-manylinux_2_38_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.38+ ARM64

snowflake_code_unit_registry-0.8.30-cp39-abi3-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

snowflake_code_unit_registry-0.8.30-cp39-abi3-macosx_10_12_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file snowflake_code_unit_registry-0.8.30.tar.gz.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.30.tar.gz
Algorithm Hash digest
SHA256 1e74756fc8b88ed887f581ca8a79c3cddd64c1f15b930d31ffa8416c12610b8d
MD5 924349350eb95482a2fb4780478bdefd
BLAKE2b-256 4550173ea9f2b839640f086293af6d6ddbe68aa0f29785728808dd96bd65506f

See more details on using hashes here.

File details

Details for the file snowflake_code_unit_registry-0.8.30-cp39-abi3-win_arm64.whl.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.30-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 59038a25379dd8960cfb98302af988f157e51c7301ecb445c06e08b2b996d0a1
MD5 91ea75100506490069b9816f3ec3cbf0
BLAKE2b-256 86d711cf27abfcc12758be33b3aaac20dc4a0468f84fb9543580c9c47a6e6fe7

See more details on using hashes here.

File details

Details for the file snowflake_code_unit_registry-0.8.30-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.30-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 baf2de78aeebd8c02a124ad159b36dd695cbbd033a22a4220dc772d7f195ed98
MD5 922200812542d5021cde4a90f05a4504
BLAKE2b-256 0295f9a64fa848a01e65a8b105858c2efc5793313e21218cbb3d831119bdba0e

See more details on using hashes here.

File details

Details for the file snowflake_code_unit_registry-0.8.30-cp39-abi3-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.30-cp39-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 38e1234ed4edd548bdf2bcf0be163b6d1900f62d495170ce2e816f1879698299
MD5 81cfa294e1d157cea9821b3b1b5ed818
BLAKE2b-256 5d5d3f183d86b55f7b2d559fc9a83dff48074bb58ed75c99685998fd2074c585

See more details on using hashes here.

File details

Details for the file snowflake_code_unit_registry-0.8.30-cp39-abi3-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.30-cp39-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 7684c846f3d517297dbdcd04ece7cd36112d9964989dd35c1c58c6a1244005fc
MD5 23714bac63fa5f9b84a87405665c8a2d
BLAKE2b-256 abe6a545073808f016c00e2367327bfb2aa7b48c21532c5fc8746f98ce03a631

See more details on using hashes here.

File details

Details for the file snowflake_code_unit_registry-0.8.30-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.30-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 153cbe053ced3db62e9bd5ce4b2276a171b7d82d49ababc620e3f5f3f1e6f758
MD5 046a5ec3cde913b6ccd7e5b415624525
BLAKE2b-256 64e0794d3d75d9089e3d181198d7b2ab8d94c149712b546a35bba09261108d8d

See more details on using hashes here.

File details

Details for the file snowflake_code_unit_registry-0.8.30-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.30-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c11675e1fc3a8b631de32bb17265e7e61f085c060f3536a478c7bf17f7929257
MD5 0530a345138701d3a8330a9b961ab3dc
BLAKE2b-256 73acc380b8449b8e00afe9bbc3834df02f939db15132cd97cd45b0896c8d518a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page