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.56.tar.gz (203.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.56-cp39-abi3-win_arm64.whl (6.9 MB view details)

Uploaded CPython 3.9+Windows ARM64

snowflake_code_unit_registry-0.8.56-cp39-abi3-win_amd64.whl (7.3 MB view details)

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.8.56-cp39-abi3-manylinux_2_38_x86_64.whl (7.6 MB view details)

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

snowflake_code_unit_registry-0.8.56-cp39-abi3-manylinux_2_38_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.38+ ARM64

snowflake_code_unit_registry-0.8.56-cp39-abi3-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

snowflake_code_unit_registry-0.8.56-cp39-abi3-macosx_10_12_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.56.tar.gz
Algorithm Hash digest
SHA256 96bc39a49904ab8b93f5e8fc84c2e26d31531d871546e2243557b6c489f3cb93
MD5 b134d0ffbc89ceb2551d01efd6b3bb52
BLAKE2b-256 404943184d20ccd9ec93d00e8c0365f8bb63a4898cbf0f90246662b4d3ef0d3c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.56-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 defb455df1d87685f24ef8f4b80ddaddbbd424d5fd1351c17f1960ae448f0214
MD5 95f6c90723e677cf2458191c50ce6a5c
BLAKE2b-256 34b2f490ad5459f1d0c133f6211605fa33764968707c3bf52f735185fab76851

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.56-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 42f28a69119b74df657dcff512b767701140ad234895aa31149275860abb84af
MD5 ab5cb793b0aa874a166933bc92e26905
BLAKE2b-256 b4b10130f5b2a838a40b5ba2e54fa1d4c395d961d1e9a7d01f1c8ce2ef972e8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.56-cp39-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 052d90e0c7953de32d760456df145a287f15362d3361d83e2a983876d6a5e7fc
MD5 dda50cd1b6b13ee288defedabd510c10
BLAKE2b-256 a423dd1bce41cfa2031b4b4c0229fe2b43e963aba8a3cf7287a06d9455ce8ceb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.56-cp39-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 df815db41d5d4572f7b50dd45e38a9754a95b802854a5049a9fd4774093d78a0
MD5 e4f4ecc61fd34f177f968f624adbb28d
BLAKE2b-256 eb5618855ca064c9cb7a36f4a7210d95e47544fce6b02faa609730c71a794e63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.56-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 28fe53faa3520fbc32568f63c4ed26a82557688db5bd2f9703790c62cccab8b8
MD5 6317e5593e42020837a00e9b5b9c1d04
BLAKE2b-256 6106a5158bc7d4326189e0ef7f13556dd7d006ffabfede9db4248d279c5fc6f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.56-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b35acbe025a697e8bac9622744e9590cff81a04c9402dfabb7a61b1b4df3fdd2
MD5 dff5f94c974a33abeae2ca6566585231
BLAKE2b-256 166703cbb84b06b87df557e6383798145a0cd9fdbc6539451ad6e9ee9a724495

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