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.3.13.tar.gz (79.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.3.13-cp39-abi3-win_arm64.whl (2.8 MB view details)

Uploaded CPython 3.9+Windows ARM64

snowflake_code_unit_registry-0.3.13-cp39-abi3-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.3.13-cp39-abi3-manylinux_2_34_x86_64.whl (3.1 MB view details)

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

snowflake_code_unit_registry-0.3.13-cp39-abi3-manylinux_2_34_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.34+ ARM64

snowflake_code_unit_registry-0.3.13-cp39-abi3-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

snowflake_code_unit_registry-0.3.13-cp39-abi3-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.3.13.tar.gz
Algorithm Hash digest
SHA256 424832798945fd1e98aedb77d8411ba34ab120181c9bc9ef80df054ae20c80a3
MD5 ce2e1224de7853ffde2a1499702f6c41
BLAKE2b-256 7ff5441c9775691fd3526c6a9e80b01f5953a3a8fed719f2a251bc6884f9ccf5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.3.13-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 d2b5dc9cb395eb1b98228fb6fb174ab30d5a31121b106609f3c8322c41094fd1
MD5 cd19f638fdf1932ef8ade33aee026b42
BLAKE2b-256 8cb7ae34450a13863ed504b06bf6beda966df245b5e163bf6b9aa1084a94b599

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.3.13-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e3e752817e462157f97e1a4f585200d53948b28b618e3680b5590400ea0a24ae
MD5 437c9179a50a1e94cbedb204782caa92
BLAKE2b-256 6a87e0f14b2b7f9a8c047ee85720de1c5b57c8cf313300011ab22d249c6e010b

See more details on using hashes here.

File details

Details for the file snowflake_code_unit_registry-0.3.13-cp39-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.3.13-cp39-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 55c810bdaa24464af56aa945f7bc7294f827178f9e0d9831ccfee8d4ee41f79a
MD5 6cb01e6a93cb1bbd2c6d93591891abe3
BLAKE2b-256 c389daf07e77a26c773cd606c41a70f4c9def4e95b299310fd20d8a799b4f4c1

See more details on using hashes here.

File details

Details for the file snowflake_code_unit_registry-0.3.13-cp39-abi3-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.3.13-cp39-abi3-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 cab440949c9cd69133a402408f4525c7d220821ecc17974c0baa3c7ecf91ec0b
MD5 92fc87ed7d8bdc21a7f0fdc4a9a64716
BLAKE2b-256 a55c27fde5edd47fb24a3e6916ea6380400c2a15163a43007fb8fc8fb02cbd5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.3.13-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b4523f8f4e119546f2277ba09539b6ef2582a583bbbc082feca8fe941ada6b54
MD5 b785fed9a9004819ec5198bb5910adc7
BLAKE2b-256 4158942c2bca06be8962633034864dbfc41d670d0c1ef940361328dac120c6a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.3.13-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c779a1f007364933a75892143e9bc1f997268032f9e2372288e0d0a69bd05202
MD5 5187af88b2a5d5c4b65858c15898a800
BLAKE2b-256 be7604d3cd7bfde244fad7f22bc4ddb2f66eba08afb687229dea096debdb5b5b

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