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.13.tar.gz (173.0 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.13-cp39-abi3-win_arm64.whl (6.7 MB view details)

Uploaded CPython 3.9+Windows ARM64

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

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.8.13-cp39-abi3-manylinux_2_38_x86_64.whl (7.3 MB view details)

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

snowflake_code_unit_registry-0.8.13-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.13-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.13-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.13.tar.gz.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.13.tar.gz
Algorithm Hash digest
SHA256 d00eba9bc92a1b4d7bf5e05c7f9b8d265f92181190b6d20960d408a1fcbc3f60
MD5 dec2d29d52a473984c5457308a060734
BLAKE2b-256 7a1f381d67da2500b4a276cbd5c8a08d01079666b2276a74b626b7ddedc8cc6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.13-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 957dc24a5ee9efb0b2a6cdd755fa5cbf6323fc7ca2999f76a49707f67d1b2c3a
MD5 9a0e15f40f340d4adf9865d13f667b11
BLAKE2b-256 19f6ad8e09d365763048c626ab95af5fbb559702dab3d39256be8047ef1ddeb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.13-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2a99cb55aea5ea7829e33600f1d951a66b6047b7eab1b8abb93a0b22212cd7e2
MD5 163d67d896cabc58b0d627b11c877f54
BLAKE2b-256 be939949dc2ec22e1573bd0627061f2fd74c8d264f18882a067241c1451d63e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.13-cp39-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 1872e66ab5613ba0d9625e2386ee9453d84eb041911b875522ac034fce4a7df7
MD5 c4a3fa95b5d160f386447428e4d0c8eb
BLAKE2b-256 e6108dccddb296280c88c828c0552968d76727f6d869cc44fbff22ae2063217a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.13-cp39-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 49652bf5b22e653901c50d904a09cd0b5ea914a92dab66b00536b1c39b4bc6c9
MD5 7ebc909b03c3072bf6d114036c842cc1
BLAKE2b-256 ba0d36726b21483b4bd52216a1c69d93019c75a9210df57e24d4376f2162dc45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.13-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2bc22d038aa1856c8f5eeac3a50b455b06a46428dea525d5bf679e405e55344
MD5 da36e9c8ece354aa81fd4d0f41aa52cc
BLAKE2b-256 cf80e75710eb75ce3d71c2bce32224f893c8e249acce2eb990fa4916ddda28e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.13-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1cf6fbff79eeaf7d9687508c16bfae14d2850e721fd5fe57a2eea9924d07daad
MD5 a8df57b18e2f4890f967e86b2f3deed6
BLAKE2b-256 16c78ac9923ea602775f98bca6e272cf91eb3c19eaa5ce524673da2c5f8927d1

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