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.76.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.76-cp39-abi3-win_arm64.whl (7.1 MB view details)

Uploaded CPython 3.9+Windows ARM64

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

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.8.76-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.76-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.76-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.76-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.76.tar.gz.

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.76.tar.gz
Algorithm Hash digest
SHA256 2c4827c922b94e384e804b1b45900c22aa0f7a668770b3cc43a6d1787364822a
MD5 3aa03b755103970524f1c5425cf7c894
BLAKE2b-256 db398111881c7fae2900642b5e8cc888017d3051867373176beb50428c316fa3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.76-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 9c3efba587bdae10a1e61b555439fc2fe73d3b121444fad96303ff312f4af86b
MD5 25fc6b1e267cde6b151d9145c526272c
BLAKE2b-256 c054fdc7248879d905e1e02ed9cbefc48792469ec93a4a109edcf07aba8b5d89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.76-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a64ee20bf45ca37f549309a408d64ff01264f183a0cefd48a46a16ec94de024a
MD5 a4c2fa43396339b62a67c7c27cd3c202
BLAKE2b-256 bf7029ceb60e488bca735b0f0f1400c069ec9c8f86297a83bc40b7735a8f5eab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.76-cp39-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 879f1dc9db9dc010237a6aa75241560c4591c575fffd266feba66dc3602f73da
MD5 a56e9e17c6040256a41e5c8cb0bbb342
BLAKE2b-256 b00d20735b9cbbebeeaa4f84b720beef0f4f3804147fe367f6ee325f7fb50ae1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.76-cp39-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 906629a860472e388206436cb2ae5c96a93e3fc0e515ce31ec4ac99ec6aefcf3
MD5 d85ad5d56e4af26318db4a8bc4a111ad
BLAKE2b-256 9a8c74b975ddbc603207c4cb8073ba1a82d33fa1c7bec451949b9f988012f234

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.76-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ecdd8a8330efc408ec69fea1a7bb9d4be77ad5f5ef5802a234a7ec770a64e942
MD5 8914cf7c6e3e42e7cfb3b6de535565a8
BLAKE2b-256 f910121869f172520cd6dd82dea8ea0d61300337e74f8b93af4eb645ebd7df53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.76-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a2dd380575e9e80737ef12976393508119649e29f55c22d9b728466d36998460
MD5 bc5f112e11680ef53ac2cac89cf89a40
BLAKE2b-256 a20b126713105dfe1b3d12edda031a5afdeabf70b9a0422c45e6e45f0628277a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.78

7 files

This release

0.8.76 This release

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