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

Uploaded CPython 3.9+Windows ARM64

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

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.8.66-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.66-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.66-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.66-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.66.tar.gz.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.66.tar.gz
Algorithm Hash digest
SHA256 2cfa405f46a1a604dfd63d9d9e6de8bd5d6735de32a7030745c8d2e172cdc350
MD5 05bcca2d8df5d853c07db86a752117e0
BLAKE2b-256 6238bd3ce1aaa3ef6fe8c6a37468ef1b44cbed3f66654e38d1c9b3aa7e7fdc78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.66-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 a0158cc6da695660c3408beebeadabdcbc4e46beed8f2d832b82a34fb8f7c0e3
MD5 eb90be4b6729939862f883fa14cdcead
BLAKE2b-256 1d3a49e46b13647c43df4b5727dc9f7102c2ad124128f66722dd14dced241c41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.66-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f9744b9bb77eefe6b5aac7077b61a511f047acf54d34b3cfe126eab17f5b03da
MD5 689f79d2e82cc13ffd187fdd28cbb0ee
BLAKE2b-256 cacaa578daf2978c8f088813f82eb6a77de2d29a7faeb3ca546cfe7701cb192d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.66-cp39-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 15775a7191110f6d98b9ce2ef773c5ce30c2bab41920e7b2b030ccb72f22ef5b
MD5 28dea8267ad8ce9e7dd53f92a67be6e4
BLAKE2b-256 bc70fe77b36997211995daa0f677d75ed7a07412eed370de8144a1375c57315a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.66-cp39-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 9af19d89a7ed409673008f2b1232b04233b88f67f7b58f98f1d64f497b397940
MD5 cb8428fc73f5015ac155b35a11872b36
BLAKE2b-256 2b4dba5eb3626ae3b85467a4ed3b7f8ccbf7cce5bcc57e846344c4efc4fd1ed1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.66-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4146f741b25867976ca59c01c34e66b2646857b5ceca50c7d6d373132a71ddb
MD5 db34eb88b839ee3f9c08ca31bf6bd2f1
BLAKE2b-256 cb5f81e6a28c064d3bac5e0adcb738fa9e469838cef5e7b0e2952ff16a78fb47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.66-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9c14161ea077b11db86b47b524fdb93634da6dac920dcbe62c629548d7895653
MD5 e830de5fd4eef4ee55b049230d516acc
BLAKE2b-256 ee27f73827ad82c4fcf5e9e84c641c3d44a3d4be6ea8dce7a4ad7f32bea2e9a2

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.78

7 files

0.8.76

7 files

0.8.74

7 files

0.8.71

7 files

This release

0.8.66 This release

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