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.8.6.tar.gz (172.2 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.6-cp39-abi3-win_arm64.whl (6.6 MB view details)

Uploaded CPython 3.9+Windows ARM64

snowflake_code_unit_registry-0.8.6-cp39-abi3-win_amd64.whl (6.9 MB view details)

Uploaded CPython 3.9+Windows x86-64

snowflake_code_unit_registry-0.8.6-cp39-abi3-manylinux_2_38_x86_64.whl (7.3 MB view details)

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

snowflake_code_unit_registry-0.8.6-cp39-abi3-manylinux_2_38_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.38+ ARM64

snowflake_code_unit_registry-0.8.6-cp39-abi3-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

snowflake_code_unit_registry-0.8.6-cp39-abi3-macosx_10_12_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.6.tar.gz
Algorithm Hash digest
SHA256 892b742be6200e9e5c7cb3fe224eabbb486558baa867d725971e1181f453e06e
MD5 62d156a28577b4759081af4330026cd5
BLAKE2b-256 ed838ec2443c6f0ae3cd41fd046b36e99235e6e8ea78e0554b0c8df253f2981d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.6-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 4e5311d0942d9013de27180cb4019d32ddbe2d099494340bd13dbf0798f8fe04
MD5 0974f80fd7136b904db88dd7d935b438
BLAKE2b-256 9225711e4cd907d8c050057bba089b62ea6fcab629a661c6af98fc87ad6f409f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.6-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9d73a571c91536587d2ac997f6a44e5be24d4a194ac67bcc4f3de4e2b23342c1
MD5 67bce12dc37ecc104e694afe809f6038
BLAKE2b-256 25b5aac8ea040ee2d31ba2dc36e442874cdcb0155d47fdbcda5c0f6240564e1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.6-cp39-abi3-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 86e220a70a18c0aff833139ed2d26df2f5f49a59797d5e4a9e7d354d9d793dc2
MD5 ae3f7f7f81fc475de38ebba982d7ca63
BLAKE2b-256 0a061b8a2d1822c779bc722a8882a91ab2e072c23f8c870ddde0467aa64c6239

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.6-cp39-abi3-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 5827cb9701a20918b255da99c509261273454cdf129a00b1a8979ceafc251a74
MD5 dcb47cfa79076f4f026c423c5d7a92d8
BLAKE2b-256 27f4fbaac7e3f45e569a82c7d3c9b8fe6a394fdfd1f5a870b1387e40848b01e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.6-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 764a8e15ba72d7924e5504b58276a0d3049d7d869b51f4b77b27191157c4b1f9
MD5 e2dac19a9d85c105fc902194b430347d
BLAKE2b-256 d875ff955e69ef1ce13a8a013a757f1887ea28456041873318206a3223475bf7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowflake_code_unit_registry-0.8.6-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e49d63aa92fd57a068dd00eabf671cfa1afe2fd842a0e66e4a64f1e5a547f88b
MD5 3d32062d0c3ac48fb720c56f6a04e4fd
BLAKE2b-256 0bde9305097634104ddb967f3a2130f9ebcc893a852bece5f7b23cd596da4fb4

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