Skip to main content

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

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.78.tar.gz (222.6 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.78-cp39-abi3-win_arm64.whl (7.1 MB view details)

Uploaded CPython 3.9+Windows ARM64

snowflake_code_unit_registry-0.8.78-cp39-abi3-win_amd64.whl (7.4 MB view details)

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.8.78-cp39-abi3-manylinux_2_38_x86_64.whl (7.8 MB view details)

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

snowflake_code_unit_registry-0.8.78-cp39-abi3-manylinux_2_38_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.38+ ARM64

snowflake_code_unit_registry-0.8.78-cp39-abi3-macosx_11_0_arm64.whl (7.1 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

snowflake_code_unit_registry-0.8.78-cp39-abi3-macosx_10_12_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.78.tar.gz
Algorithm Hash digest
SHA256 a7a331c970fc6997afdc539ca6ccf523aebb80f1c01ffe95708180dde5fd929c
MD5 dadac1c86a1081429ea36bac07e30de5
BLAKE2b-256 3780cbd083461a0b267ee8e7c2d1d27381e4ab843ffa85fb2430ec06b1bd94dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.78-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 4091e0f78e5f7b0326aaccabd84d93bdc7081449007413ed645a85b7534090ee
MD5 1fe5c66000eef8c9b6e26dac1fda1e15
BLAKE2b-256 401316af297a9e27126dfc506204a5c507068ecce331cd3c97a940e564a13bfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.78-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3bd058dd2ce516458c3f3aaa19e6c3c5b721de14cde621a4c0e4c1e70b6f2d50
MD5 e92a4d003dc1a8bd01f6c4bd80d68443
BLAKE2b-256 9b3e98c299df75e99ca36102bf75f87d9f29819a5370ac6925d7ded537b63e88

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.78-cp39-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 7390765d11a49358c2c4d8c97f9c35c2c6aee597c4958426852488fb64a6c6ed
MD5 9da06a0c8b66e37bc88ca69e48e896d1
BLAKE2b-256 1ac8ef08ef8b60ec553098db076457914ea797dc6627274f06774b6f884a0440

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.78-cp39-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 3d4968825161fc3c8de3f7775b6819f9e166ff5d3d0d5725b590335dc213871b
MD5 eef0d12094598539210fc7ef8358eeba
BLAKE2b-256 b2c900817d706c5b432d061720ca57f5a832c7cd26377bd63bc2fee0d7173164

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.78-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f6a00f710d5276e8f0ce7a6f8c8429fbd9e41f89e7a0f066bb63a0d8b1101b6
MD5 d38fadbfdf305d18baed2cd2996a71e8
BLAKE2b-256 f2c9854028ebb029ce126c4d44fbac20b473850ff5abf24950bd82930c3e2e9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.78-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d7766ff5d9e41d96be74c13e3c953fb1b0e8497d44b647a95d364ee8cbc8959a
MD5 d670d806ae6c93a4affe9010c4ab3c28
BLAKE2b-256 6a4a17d12504b7193545516a476616516f1c3f0312db09b7762e93f6bf16d265

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.8.78 This release

7 files

0.8.76

7 files

0.8.74

7 files

0.8.71

7 files

0.8.66

7 files

0.8.61

7 files

0.8.59

7 files

0.8.56

7 files

0.8.55

7 files

0.8.49

7 files

0.8.47

7 files

0.8.41

7 files

0.8.38

7 files

0.8.36

7 files

0.8.32

7 files

0.8.30

7 files

0.8.28

7 files

0.8.13

7 files

0.8.9

7 files

0.8.8

7 files

0.8.6

7 files

0.8.1

7 files

0.7.17

7 files

0.7.15

7 files

0.7.12

7 files

0.7.9

7 files

0.7.6

7 files

0.7.5

7 files

0.7.2

7 files

0.7.1

7 files

0.5.12

7 files

0.5.11

7 files

0.5.10

7 files

0.5.9

7 files

0.5.4

7 files

0.5.2

7 files

0.4.12

7 files

0.4.10

7 files

0.4.3

7 files

0.3.21

7 files

0.3.13

7 files

0.3.10

7 files

0.3.0

7 files

0.2.0

7 files

0.1.0

7 files

0.0.1

7 files

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