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.74.tar.gz (210.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.74-cp39-abi3-win_arm64.whl (7.0 MB view details)

Uploaded CPython 3.9+Windows ARM64

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

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.8.74-cp39-abi3-manylinux_2_38_x86_64.whl (7.7 MB view details)

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

snowflake_code_unit_registry-0.8.74-cp39-abi3-manylinux_2_38_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.38+ ARM64

snowflake_code_unit_registry-0.8.74-cp39-abi3-macosx_11_0_arm64.whl (7.0 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

snowflake_code_unit_registry-0.8.74-cp39-abi3-macosx_10_12_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.74.tar.gz
Algorithm Hash digest
SHA256 2dd97edbbc0bbe04ef718c820fd8d5d7432c34d2ecc4368cbdd0f1df08b3849d
MD5 c0e16636555e8da0a64ea6770924515d
BLAKE2b-256 48b58d4d259b92f836ce002d95289aedbf7c97dd458d6a074dbe319340965f79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.74-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 bbbded0ad8750acc8ae2e22e770709cdee7e431414962fc2ca7705507a7070df
MD5 c0e1adf379313e8a2a1458ae511d5fa1
BLAKE2b-256 7823dda6cb6bd4dccf488a1601c7055b94d13b8b0e27e483adde3ad75ea9629e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.74-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d48d45d200e7649aa4c10989d01b6cdbfcac1305658955b312e97b4aa89de445
MD5 41ab9388eabee6f794bebd34ddb6396a
BLAKE2b-256 62ec194dd6b03ae48d7eee3c3ba5916eb082888ef5d2a946356e99b01ec61678

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.74-cp39-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 1c68d307ce9644e5f68d11526659eee1595044aece12646704b3fe179ea8f6e1
MD5 da13d544cf1381d7f64921378bf33a8b
BLAKE2b-256 82735f90a823935c449dd57b7a36c22c9099df0db0da6e859b5499bbf0006b84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.74-cp39-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 21196a5eeead343c2b6e3d6937ac8e2465cd1f5ed5cbe935522ef7958c6ffb5b
MD5 0a32e08867624f9afd648935f57e9880
BLAKE2b-256 100d60d256582dbf179a8fe0a32e317307419b6629eec4e2d2b16da8f3dd0240

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.74-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 28d20559a2fdc3f864673c65d1ad379cbaf4bf2e75b059b5c21f75b3f359b6bd
MD5 09a7524037ce6af45c9317224aeb6a91
BLAKE2b-256 bd1e9e3e7c09389236dd692417fd4bce1d3e592e7130fb5815a322c9b06f672a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.74-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 998b9d7aa2f46dd5ad9d7218edf1dd133bcdef9ccd07eb9cc14576ac9f0a9b06
MD5 8f211c2aed35cb88ac7a9112a1cfaed4
BLAKE2b-256 cb9aca7130645d0979274c25120bfb528da50da81005b628a73b21e9ab242223

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.78

7 files

0.8.76

7 files

This release

0.8.74 This release

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