snowflake-code-unit-registry 0.8.38__tar.gz → 0.8.41__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/Cargo.lock +49 -49
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/Cargo.toml +1 -1
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/PKG-INFO +1 -1
- snowflake_code_unit_registry-0.8.41/crates/scai-state-core/examples/script-code-unit.example.json +168 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/schemas/code-unit.schema.json +105 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/bindings.rs +22 -1
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/generated/schema_constraints.rs +5 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/lib.rs +1 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/tests.rs +251 -6
- snowflake_code_unit_registry-0.8.38/crates/scai-state-core/src/validation.rs → snowflake_code_unit_registry-0.8.41/crates/scai-state-core/src/validation/mod.rs +34 -24
- snowflake_code_unit_registry-0.8.41/crates/scai-state-core/src/validation/script_io.rs +271 -0
- snowflake_code_unit_registry-0.8.41/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_script_metadata.json +5 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/src/lib.rs +25 -0
- snowflake_code_unit_registry-0.8.41/crates/scai-state-python/tests/test_script_metadata.py +154 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/pyproject.toml +1 -1
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/python/snowflake_code_unit_registry/__init__.py +52 -1
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/python/snowflake_code_unit_registry/types.py +146 -5
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/README.md +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-error-derive/Cargo.toml +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-error-derive/src/lib.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-error-derive/tests/derive_integration.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-log/Cargo.toml +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-log/src/lib.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-log/src/tests.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/Cargo.toml +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/build/file_path_fields.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/build/main.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/build/output.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/build/query_reference.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/build/schema.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/build/schema_constraints.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/build/typify.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/build/updated_at_paths.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/examples/code-unit.example.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/examples/etl-code-unit.example.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/schemas/history/README.md +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/schemas/query-reference.rs.tmpl +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/schemas/query-reference.tmpl +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/canonical_name.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/checksum.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/dependency_view.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/error.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/error_trace.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/filter.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/generated/file_path_fields.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/generated/mod.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/generated/query_reference.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/generated/updated_at_paths.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/identity.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/migration/mod.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/migration/versions/mod.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/README.md +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/graph.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/in_memory.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/loader.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/paths.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/query.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/test_helpers.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry/test_hooks.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/src/registry.rs +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/etl_part_cloud_status_data_migration.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/etl_part_cloud_status_data_validation.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/etl_part_model_name_on_non_dbt.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/etl_root_cloud_status.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/etl_root_dependencies.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/etl_root_issues.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/etl_root_source_format.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/etl_signature.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_clean.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_cloud_status.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_code_status.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_files.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_issues.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_parts.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_planning.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_script_bindings.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_signature.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_source_format.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/parameterized_reference_with_target_format.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/sql_with_parts.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-core/tests/fixtures/kind-rules/sql_with_stabilization.json +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/Cargo.toml +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/README.md +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/conftest.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_batch.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_checksum.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_cloud_state.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_crud.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_errors.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_logging.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_migration.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_query.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_refresh.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_script_bindings.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_serialization.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/crates/scai-state-python/tests/test_validation.py +0 -0
- {snowflake_code_unit_registry-0.8.38 → snowflake_code_unit_registry-0.8.41}/python/snowflake_code_unit_registry/cloud_state.py +0 -0
|
@@ -84,9 +84,9 @@ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
|
|
84
84
|
|
|
85
85
|
[[package]]
|
|
86
86
|
name = "ar_archive_writer"
|
|
87
|
-
version = "0.5.
|
|
87
|
+
version = "0.5.2"
|
|
88
88
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
89
|
-
checksum = "
|
|
89
|
+
checksum = "4087686b4b0a3427190bae57a1d9a478dbb2d40c5dc1bd6e2b6d797913bdd348"
|
|
90
90
|
dependencies = [
|
|
91
91
|
"object",
|
|
92
92
|
]
|
|
@@ -245,9 +245,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
|
|
245
245
|
|
|
246
246
|
[[package]]
|
|
247
247
|
name = "cc"
|
|
248
|
-
version = "1.2.
|
|
248
|
+
version = "1.2.64"
|
|
249
249
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
250
|
-
checksum = "
|
|
250
|
+
checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f"
|
|
251
251
|
dependencies = [
|
|
252
252
|
"find-msvc-tools",
|
|
253
253
|
"jobserver",
|
|
@@ -979,9 +979,9 @@ dependencies = [
|
|
|
979
979
|
|
|
980
980
|
[[package]]
|
|
981
981
|
name = "h2"
|
|
982
|
-
version = "0.4.
|
|
982
|
+
version = "0.4.15"
|
|
983
983
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
984
|
-
checksum = "
|
|
984
|
+
checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155"
|
|
985
985
|
dependencies = [
|
|
986
986
|
"atomic-waker",
|
|
987
987
|
"bytes",
|
|
@@ -1506,9 +1506,9 @@ dependencies = [
|
|
|
1506
1506
|
|
|
1507
1507
|
[[package]]
|
|
1508
1508
|
name = "js-sys"
|
|
1509
|
-
version = "0.3.
|
|
1509
|
+
version = "0.3.102"
|
|
1510
1510
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1511
|
-
checksum = "
|
|
1511
|
+
checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31"
|
|
1512
1512
|
dependencies = [
|
|
1513
1513
|
"cfg-if",
|
|
1514
1514
|
"futures-util",
|
|
@@ -1607,9 +1607,9 @@ checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a"
|
|
|
1607
1607
|
|
|
1608
1608
|
[[package]]
|
|
1609
1609
|
name = "memchr"
|
|
1610
|
-
version = "2.8.
|
|
1610
|
+
version = "2.8.2"
|
|
1611
1611
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1612
|
-
checksum = "
|
|
1612
|
+
checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
|
|
1613
1613
|
|
|
1614
1614
|
[[package]]
|
|
1615
1615
|
name = "memmap2"
|
|
@@ -1654,9 +1654,9 @@ checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084"
|
|
|
1654
1654
|
|
|
1655
1655
|
[[package]]
|
|
1656
1656
|
name = "napi"
|
|
1657
|
-
version = "3.9.
|
|
1657
|
+
version = "3.9.2"
|
|
1658
1658
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1659
|
-
checksum = "
|
|
1659
|
+
checksum = "26d3c7dd60231116a47854321c9ac8df6f13435d11aa3a59d8533a76e07a3730"
|
|
1660
1660
|
dependencies = [
|
|
1661
1661
|
"bitflags 2.13.0",
|
|
1662
1662
|
"ctor",
|
|
@@ -1704,9 +1704,9 @@ dependencies = [
|
|
|
1704
1704
|
|
|
1705
1705
|
[[package]]
|
|
1706
1706
|
name = "napi-sys"
|
|
1707
|
-
version = "3.2.
|
|
1707
|
+
version = "3.2.2"
|
|
1708
1708
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1709
|
-
checksum = "
|
|
1709
|
+
checksum = "1f5bcdf71abd3a50d00b49c1c2c75251cb3c913777d6139cd37dabc093a5e400"
|
|
1710
1710
|
dependencies = [
|
|
1711
1711
|
"libloading",
|
|
1712
1712
|
]
|
|
@@ -2398,9 +2398,9 @@ dependencies = [
|
|
|
2398
2398
|
|
|
2399
2399
|
[[package]]
|
|
2400
2400
|
name = "regex"
|
|
2401
|
-
version = "1.12.
|
|
2401
|
+
version = "1.12.4"
|
|
2402
2402
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2403
|
-
checksum = "
|
|
2403
|
+
checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
|
|
2404
2404
|
dependencies = [
|
|
2405
2405
|
"aho-corasick",
|
|
2406
2406
|
"memchr",
|
|
@@ -2421,9 +2421,9 @@ dependencies = [
|
|
|
2421
2421
|
|
|
2422
2422
|
[[package]]
|
|
2423
2423
|
name = "regex-syntax"
|
|
2424
|
-
version = "0.8.
|
|
2424
|
+
version = "0.8.11"
|
|
2425
2425
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2426
|
-
checksum = "
|
|
2426
|
+
checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
|
|
2427
2427
|
|
|
2428
2428
|
[[package]]
|
|
2429
2429
|
name = "regress"
|
|
@@ -2622,7 +2622,7 @@ dependencies = [
|
|
|
2622
2622
|
|
|
2623
2623
|
[[package]]
|
|
2624
2624
|
name = "scai-error-derive"
|
|
2625
|
-
version = "0.8.
|
|
2625
|
+
version = "0.8.41"
|
|
2626
2626
|
dependencies = [
|
|
2627
2627
|
"err_code",
|
|
2628
2628
|
"heck",
|
|
@@ -2636,7 +2636,7 @@ dependencies = [
|
|
|
2636
2636
|
|
|
2637
2637
|
[[package]]
|
|
2638
2638
|
name = "scai-log"
|
|
2639
|
-
version = "0.8.
|
|
2639
|
+
version = "0.8.41"
|
|
2640
2640
|
dependencies = [
|
|
2641
2641
|
"chrono",
|
|
2642
2642
|
"serde",
|
|
@@ -2645,7 +2645,7 @@ dependencies = [
|
|
|
2645
2645
|
|
|
2646
2646
|
[[package]]
|
|
2647
2647
|
name = "scai-state-core"
|
|
2648
|
-
version = "0.8.
|
|
2648
|
+
version = "0.8.41"
|
|
2649
2649
|
dependencies = [
|
|
2650
2650
|
"chrono",
|
|
2651
2651
|
"err_code",
|
|
@@ -2671,7 +2671,7 @@ dependencies = [
|
|
|
2671
2671
|
|
|
2672
2672
|
[[package]]
|
|
2673
2673
|
name = "scai-state-csharp"
|
|
2674
|
-
version = "0.8.
|
|
2674
|
+
version = "0.8.41"
|
|
2675
2675
|
dependencies = [
|
|
2676
2676
|
"interoptopus",
|
|
2677
2677
|
"interoptopus_backend_csharp",
|
|
@@ -2683,7 +2683,7 @@ dependencies = [
|
|
|
2683
2683
|
|
|
2684
2684
|
[[package]]
|
|
2685
2685
|
name = "scai-state-node"
|
|
2686
|
-
version = "0.8.
|
|
2686
|
+
version = "0.8.41"
|
|
2687
2687
|
dependencies = [
|
|
2688
2688
|
"napi",
|
|
2689
2689
|
"napi-build",
|
|
@@ -2696,7 +2696,7 @@ dependencies = [
|
|
|
2696
2696
|
|
|
2697
2697
|
[[package]]
|
|
2698
2698
|
name = "scai-state-perf"
|
|
2699
|
-
version = "0.8.
|
|
2699
|
+
version = "0.8.41"
|
|
2700
2700
|
dependencies = [
|
|
2701
2701
|
"chrono",
|
|
2702
2702
|
"criterion",
|
|
@@ -2712,7 +2712,7 @@ dependencies = [
|
|
|
2712
2712
|
|
|
2713
2713
|
[[package]]
|
|
2714
2714
|
name = "scai-state-python"
|
|
2715
|
-
version = "0.8.
|
|
2715
|
+
version = "0.8.41"
|
|
2716
2716
|
dependencies = [
|
|
2717
2717
|
"pyo3",
|
|
2718
2718
|
"pythonize",
|
|
@@ -2917,9 +2917,9 @@ dependencies = [
|
|
|
2917
2917
|
|
|
2918
2918
|
[[package]]
|
|
2919
2919
|
name = "smallvec"
|
|
2920
|
-
version = "1.15.
|
|
2920
|
+
version = "1.15.2"
|
|
2921
2921
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2922
|
-
checksum = "
|
|
2922
|
+
checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
|
|
2923
2923
|
|
|
2924
2924
|
[[package]]
|
|
2925
2925
|
name = "snafu"
|
|
@@ -3392,9 +3392,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
|
|
3392
3392
|
|
|
3393
3393
|
[[package]]
|
|
3394
3394
|
name = "uuid"
|
|
3395
|
-
version = "1.23.
|
|
3395
|
+
version = "1.23.3"
|
|
3396
3396
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3397
|
-
checksum = "
|
|
3397
|
+
checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7"
|
|
3398
3398
|
dependencies = [
|
|
3399
3399
|
"getrandom 0.4.2",
|
|
3400
3400
|
"js-sys",
|
|
@@ -3450,9 +3450,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
|
|
3450
3450
|
|
|
3451
3451
|
[[package]]
|
|
3452
3452
|
name = "wasip2"
|
|
3453
|
-
version = "1.0.
|
|
3453
|
+
version = "1.0.4+wasi-0.2.12"
|
|
3454
3454
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3455
|
-
checksum = "
|
|
3455
|
+
checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
|
|
3456
3456
|
dependencies = [
|
|
3457
3457
|
"wit-bindgen 0.57.1",
|
|
3458
3458
|
]
|
|
@@ -3468,9 +3468,9 @@ dependencies = [
|
|
|
3468
3468
|
|
|
3469
3469
|
[[package]]
|
|
3470
3470
|
name = "wasm-bindgen"
|
|
3471
|
-
version = "0.2.
|
|
3471
|
+
version = "0.2.125"
|
|
3472
3472
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3473
|
-
checksum = "
|
|
3473
|
+
checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a"
|
|
3474
3474
|
dependencies = [
|
|
3475
3475
|
"cfg-if",
|
|
3476
3476
|
"once_cell",
|
|
@@ -3481,9 +3481,9 @@ dependencies = [
|
|
|
3481
3481
|
|
|
3482
3482
|
[[package]]
|
|
3483
3483
|
name = "wasm-bindgen-futures"
|
|
3484
|
-
version = "0.4.
|
|
3484
|
+
version = "0.4.75"
|
|
3485
3485
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3486
|
-
checksum = "
|
|
3486
|
+
checksum = "503b14d284f2c8dac03b819967e155ea753f573586193b2b2c95990cb5d69280"
|
|
3487
3487
|
dependencies = [
|
|
3488
3488
|
"js-sys",
|
|
3489
3489
|
"wasm-bindgen",
|
|
@@ -3491,9 +3491,9 @@ dependencies = [
|
|
|
3491
3491
|
|
|
3492
3492
|
[[package]]
|
|
3493
3493
|
name = "wasm-bindgen-macro"
|
|
3494
|
-
version = "0.2.
|
|
3494
|
+
version = "0.2.125"
|
|
3495
3495
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3496
|
-
checksum = "
|
|
3496
|
+
checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d"
|
|
3497
3497
|
dependencies = [
|
|
3498
3498
|
"quote",
|
|
3499
3499
|
"wasm-bindgen-macro-support",
|
|
@@ -3501,9 +3501,9 @@ dependencies = [
|
|
|
3501
3501
|
|
|
3502
3502
|
[[package]]
|
|
3503
3503
|
name = "wasm-bindgen-macro-support"
|
|
3504
|
-
version = "0.2.
|
|
3504
|
+
version = "0.2.125"
|
|
3505
3505
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3506
|
-
checksum = "
|
|
3506
|
+
checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd"
|
|
3507
3507
|
dependencies = [
|
|
3508
3508
|
"bumpalo",
|
|
3509
3509
|
"proc-macro2",
|
|
@@ -3514,9 +3514,9 @@ dependencies = [
|
|
|
3514
3514
|
|
|
3515
3515
|
[[package]]
|
|
3516
3516
|
name = "wasm-bindgen-shared"
|
|
3517
|
-
version = "0.2.
|
|
3517
|
+
version = "0.2.125"
|
|
3518
3518
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3519
|
-
checksum = "
|
|
3519
|
+
checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f"
|
|
3520
3520
|
dependencies = [
|
|
3521
3521
|
"unicode-ident",
|
|
3522
3522
|
]
|
|
@@ -3557,9 +3557,9 @@ dependencies = [
|
|
|
3557
3557
|
|
|
3558
3558
|
[[package]]
|
|
3559
3559
|
name = "web-sys"
|
|
3560
|
-
version = "0.3.
|
|
3560
|
+
version = "0.3.102"
|
|
3561
3561
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3562
|
-
checksum = "
|
|
3562
|
+
checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d"
|
|
3563
3563
|
dependencies = [
|
|
3564
3564
|
"js-sys",
|
|
3565
3565
|
"wasm-bindgen",
|
|
@@ -3890,18 +3890,18 @@ dependencies = [
|
|
|
3890
3890
|
|
|
3891
3891
|
[[package]]
|
|
3892
3892
|
name = "zerocopy"
|
|
3893
|
-
version = "0.8.
|
|
3893
|
+
version = "0.8.52"
|
|
3894
3894
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3895
|
-
checksum = "
|
|
3895
|
+
checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
|
|
3896
3896
|
dependencies = [
|
|
3897
3897
|
"zerocopy-derive",
|
|
3898
3898
|
]
|
|
3899
3899
|
|
|
3900
3900
|
[[package]]
|
|
3901
3901
|
name = "zerocopy-derive"
|
|
3902
|
-
version = "0.8.
|
|
3902
|
+
version = "0.8.52"
|
|
3903
3903
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3904
|
-
checksum = "
|
|
3904
|
+
checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
|
|
3905
3905
|
dependencies = [
|
|
3906
3906
|
"proc-macro2",
|
|
3907
3907
|
"quote",
|
|
@@ -3931,9 +3931,9 @@ dependencies = [
|
|
|
3931
3931
|
|
|
3932
3932
|
[[package]]
|
|
3933
3933
|
name = "zeroize"
|
|
3934
|
-
version = "1.
|
|
3934
|
+
version = "1.9.0"
|
|
3935
3935
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3936
|
-
checksum = "
|
|
3936
|
+
checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
|
|
3937
3937
|
|
|
3938
3938
|
[[package]]
|
|
3939
3939
|
name = "zerotrie"
|
|
@@ -3,7 +3,7 @@ resolver = "2"
|
|
|
3
3
|
members = ["crates/scai-error-derive", "crates/scai-log", "crates/scai-state-core", "crates/scai-state-python"]
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "0.8.
|
|
6
|
+
version = "0.8.41"
|
|
7
7
|
edition = "2021"
|
|
8
8
|
license = "SEE LICENSE IN LICENSE"
|
|
9
9
|
repository = "https://github.com/snowflake-eng/scai-state"
|
snowflake_code_unit_registry-0.8.41/crates/scai-state-core/examples/script-code-unit.example.json
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"isMissing": false,
|
|
4
|
+
"inScope": true,
|
|
5
|
+
"kind": "script",
|
|
6
|
+
"id": "f7e6d5c4-b3a2-1098-7654-3210fedcba98",
|
|
7
|
+
"updatedAt": "2026-05-10T16:00:00Z",
|
|
8
|
+
"source": {
|
|
9
|
+
"platform": "teradata",
|
|
10
|
+
"format": "bteq",
|
|
11
|
+
"database": "database",
|
|
12
|
+
"schema": "schema",
|
|
13
|
+
"package": "package",
|
|
14
|
+
"name": "load_sales",
|
|
15
|
+
"canonicalName": "teradata:bteq:source/etl/daily/load_sales.btq"
|
|
16
|
+
},
|
|
17
|
+
"target": {
|
|
18
|
+
"format": "python",
|
|
19
|
+
"database": "database",
|
|
20
|
+
"schema": "schema",
|
|
21
|
+
"name": "LOAD_SALES",
|
|
22
|
+
"canonicalName": "snowflake:python:converted/etl/daily/load_sales.py"
|
|
23
|
+
},
|
|
24
|
+
"files": {
|
|
25
|
+
"source": {
|
|
26
|
+
"path": "source/etl/daily/load_sales.btq",
|
|
27
|
+
"checksum": "22577339f5b42811229a31d0fd851d54"
|
|
28
|
+
},
|
|
29
|
+
"converted": {
|
|
30
|
+
"path": "converted/etl/daily/load_sales.py",
|
|
31
|
+
"checksum": "f6889e957f19ac657f517a43ad5360a4"
|
|
32
|
+
},
|
|
33
|
+
"snapshot": {
|
|
34
|
+
"path": "snapshots/etl/daily/load_sales.btq",
|
|
35
|
+
"checksum": "f463829d48a5379a540cc0f34e1f6efb"
|
|
36
|
+
},
|
|
37
|
+
"artifacts": {
|
|
38
|
+
"path": "artifacts/etl/daily/load_sales"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"codeStatus": {
|
|
42
|
+
"registration": {
|
|
43
|
+
"status": "completed",
|
|
44
|
+
"extractorVersion": "2.4.1",
|
|
45
|
+
"updatedAt": "2026-05-10T09:00:00Z",
|
|
46
|
+
"sourceId": "src-teradata-bteq-001"
|
|
47
|
+
},
|
|
48
|
+
"conversion": {
|
|
49
|
+
"status": "completed",
|
|
50
|
+
"converterVersion": "3.1.0",
|
|
51
|
+
"updatedAt": "2026-05-10T16:00:00Z"
|
|
52
|
+
},
|
|
53
|
+
"resync": {
|
|
54
|
+
"status": "completed",
|
|
55
|
+
"updatedAt": "2026-05-10T16:00:00Z"
|
|
56
|
+
},
|
|
57
|
+
"aiVerification": {
|
|
58
|
+
"status": "completed",
|
|
59
|
+
"convertedChecksum": "6bc70d40a29e8f6f5ca410c9d10bdf89"
|
|
60
|
+
},
|
|
61
|
+
"assessment": {
|
|
62
|
+
"status": "completed",
|
|
63
|
+
"containsCommit": false
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"cloudStatus": {
|
|
67
|
+
"testing": {
|
|
68
|
+
"status": "pending",
|
|
69
|
+
"updatedAt": "2026-06-11T05:35:46.3551540+00:00",
|
|
70
|
+
"details": {}
|
|
71
|
+
},
|
|
72
|
+
"deployment": {
|
|
73
|
+
"status": "pending",
|
|
74
|
+
"updatedAt": "2026-06-11T05:35:46.3551590+00:00",
|
|
75
|
+
"deployedTo": "deployedTo",
|
|
76
|
+
"details": {}
|
|
77
|
+
},
|
|
78
|
+
"dataMigration": {
|
|
79
|
+
"status": "pending",
|
|
80
|
+
"updatedAt": "2026-06-11T05:35:46.3551650+00:00",
|
|
81
|
+
"details": {}
|
|
82
|
+
},
|
|
83
|
+
"dataValidation": {
|
|
84
|
+
"status": "pending",
|
|
85
|
+
"updatedAt": "2026-06-11T05:35:46.3551700+00:00",
|
|
86
|
+
"details": {}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"dependencies": {
|
|
90
|
+
"dependsOn": [],
|
|
91
|
+
"requiredBy": [],
|
|
92
|
+
"hasTransitiveMissingDependencies": false
|
|
93
|
+
},
|
|
94
|
+
"planning": {
|
|
95
|
+
"wave": 5,
|
|
96
|
+
"topologicalRank": 1,
|
|
97
|
+
"generatedBy": "auto-planner-v1"
|
|
98
|
+
},
|
|
99
|
+
"issues": [],
|
|
100
|
+
"extensions": {},
|
|
101
|
+
"scriptBindings": [
|
|
102
|
+
{
|
|
103
|
+
"name": "err_file",
|
|
104
|
+
"kind": "file"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "dif_out",
|
|
108
|
+
"kind": "file"
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"scriptMetadata": {
|
|
112
|
+
"IO": [
|
|
113
|
+
{
|
|
114
|
+
"direction": "write",
|
|
115
|
+
"format": "text",
|
|
116
|
+
"formatNative": "report",
|
|
117
|
+
"ordinal": 0,
|
|
118
|
+
"reachability": "always",
|
|
119
|
+
"path": {
|
|
120
|
+
"kind": "binding",
|
|
121
|
+
"name": "err_file",
|
|
122
|
+
"source": "${err_file}",
|
|
123
|
+
"target": "<%err_file%>"
|
|
124
|
+
},
|
|
125
|
+
"formatOptions": {
|
|
126
|
+
"projection": "columnar"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"direction": "read",
|
|
131
|
+
"format": "delimited",
|
|
132
|
+
"formatNative": "vartext",
|
|
133
|
+
"ordinal": 1,
|
|
134
|
+
"reachability": "conditional",
|
|
135
|
+
"guard": "MODE = 'A'",
|
|
136
|
+
"path": {
|
|
137
|
+
"kind": "literal",
|
|
138
|
+
"source": "${IMPORT_DIR}/customers.dat",
|
|
139
|
+
"target": "<%IMPORT_DIR%>/customers.dat"
|
|
140
|
+
},
|
|
141
|
+
"formatOptions": {
|
|
142
|
+
"separator": "|",
|
|
143
|
+
"quote": "\"",
|
|
144
|
+
"escape": "\\",
|
|
145
|
+
"recordDelimiter": "\n",
|
|
146
|
+
"headerRow": false,
|
|
147
|
+
"encoding": "UTF-8"
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"direction": "write",
|
|
152
|
+
"format": "structured",
|
|
153
|
+
"formatNative": "dif",
|
|
154
|
+
"ordinal": 2,
|
|
155
|
+
"reachability": "always",
|
|
156
|
+
"path": {
|
|
157
|
+
"kind": "binding",
|
|
158
|
+
"name": "dif_out",
|
|
159
|
+
"source": "${dif_out}",
|
|
160
|
+
"target": "<%dif_out%>"
|
|
161
|
+
},
|
|
162
|
+
"formatOptions": {
|
|
163
|
+
"specVersion": "1.0"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
}
|
|
@@ -165,6 +165,106 @@
|
|
|
165
165
|
"x-allowed-when": { "format": ["dbt"] }
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
+
},
|
|
169
|
+
"ScriptIoDirection": {
|
|
170
|
+
"type": "string",
|
|
171
|
+
"title": "ScriptIoDirection",
|
|
172
|
+
"enum": ["read", "write"],
|
|
173
|
+
"description": "Direction of a script I/O block. read = .IMPORT; write = .EXPORT."
|
|
174
|
+
},
|
|
175
|
+
"ScriptIoFormat": {
|
|
176
|
+
"type": "string",
|
|
177
|
+
"title": "ScriptIoFormat",
|
|
178
|
+
"enum": ["text", "binary", "delimited", "structured", "opaque"],
|
|
179
|
+
"description": "Comparison-strategy selector for a script I/O block. opaque (e.g. AXSMOD) marks the script untestable."
|
|
180
|
+
},
|
|
181
|
+
"ScriptIoReachability": {
|
|
182
|
+
"type": "string",
|
|
183
|
+
"title": "ScriptIoReachability",
|
|
184
|
+
"enum": ["always", "conditional"],
|
|
185
|
+
"description": "always = unconditional fall-through; conditional = reachable only under .IF/.GOTO/.LABEL flow (or unresolvable flow). Drives the missing-file rule downstream."
|
|
186
|
+
},
|
|
187
|
+
"ScriptIoProjection": {
|
|
188
|
+
"type": "string",
|
|
189
|
+
"title": "ScriptIoProjection",
|
|
190
|
+
"enum": ["columnar", "concatenated"],
|
|
191
|
+
"description": "REPORT/text output shape detected at extraction: columnar = multiple fixed-width columns; concatenated = a single ||-joined column."
|
|
192
|
+
},
|
|
193
|
+
"ScriptIoPath": {
|
|
194
|
+
"type": "object",
|
|
195
|
+
"title": "ScriptIoPath",
|
|
196
|
+
"description": "Per-side path for a script I/O block. kind=binding references a scriptBindings[] kind:file entry by name (a foreign key); kind=literal is an inline path. source and target hold the path text as written on each side and may embed binding tokens in that side's wrapper syntax (e.g. ${...} on the source script, <%...%> on the Snow CLI target). find_all substitutes each side in place from the supplied binding map, exactly as it does for the source.* / target.* slots; identity keying uses (kind, name) for bindings and (kind, source) for literals.",
|
|
197
|
+
"properties": {
|
|
198
|
+
"kind": {
|
|
199
|
+
"type": "string",
|
|
200
|
+
"enum": ["binding", "literal"],
|
|
201
|
+
"description": "binding = path comes from a named scriptBindings[] entry; literal = path is an inline string (possibly templated with binding tokens)."
|
|
202
|
+
},
|
|
203
|
+
"name": {
|
|
204
|
+
"type": "string",
|
|
205
|
+
"description": "Binding name referenced when kind=binding. Foreign key into scriptBindings[]."
|
|
206
|
+
},
|
|
207
|
+
"source": {
|
|
208
|
+
"type": "string",
|
|
209
|
+
"description": "Path text as written on the source side; may embed binding tokens in the source dialect's wrapper (e.g. ${name}). find_all substitutes it in place when a binding map is supplied."
|
|
210
|
+
},
|
|
211
|
+
"target": {
|
|
212
|
+
"type": "string",
|
|
213
|
+
"description": "Path text as written on the target side; may embed binding tokens in the target's wrapper (e.g. <%name%>). find_all substitutes it in place when a binding map is supplied."
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"ScriptIoFormatOptions": {
|
|
218
|
+
"type": "object",
|
|
219
|
+
"title": "ScriptIoFormatOptions",
|
|
220
|
+
"description": "Comparator configuration for a script I/O block; which keys apply depends on format. delimited: separator/quote/escape/recordDelimiter/headerRow/encoding. structured: specVersion/encoding. text/report: projection.",
|
|
221
|
+
"additionalProperties": true,
|
|
222
|
+
"properties": {
|
|
223
|
+
"separator": { "type": "string", "description": "Field separator (delimited)." },
|
|
224
|
+
"quote": { "type": "string", "description": "Quote character (delimited)." },
|
|
225
|
+
"escape": { "type": "string", "description": "Escape character (delimited)." },
|
|
226
|
+
"recordDelimiter": { "type": "string", "description": "Record delimiter (delimited)." },
|
|
227
|
+
"headerRow": { "type": "boolean", "description": "Whether a header row is present (delimited)." },
|
|
228
|
+
"encoding": { "type": "string", "description": "Character encoding (delimited/structured)." },
|
|
229
|
+
"specVersion": { "type": "string", "description": "Format spec version (structured, e.g. DIF version)." },
|
|
230
|
+
"projection": { "$ref": "#/definitions/ScriptIoProjection" }
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
"ScriptIoEntry": {
|
|
234
|
+
"type": "object",
|
|
235
|
+
"title": "ScriptIoEntry",
|
|
236
|
+
"description": "One .IMPORT/.EXPORT block declaration, dialect-neutral. BTEQ extractor in v1.",
|
|
237
|
+
"properties": {
|
|
238
|
+
"direction": { "$ref": "#/definitions/ScriptIoDirection" },
|
|
239
|
+
"format": { "$ref": "#/definitions/ScriptIoFormat" },
|
|
240
|
+
"formatNative": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"description": "Dialect-native format name. Open string. Well-known BTEQ values: report, data, indicdata, vartext, dif, axsmod."
|
|
243
|
+
},
|
|
244
|
+
"ordinal": {
|
|
245
|
+
"type": "integer",
|
|
246
|
+
"description": "0-based block index in source order."
|
|
247
|
+
},
|
|
248
|
+
"reachability": { "$ref": "#/definitions/ScriptIoReachability" },
|
|
249
|
+
"guard": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"description": "Optional source-form condition text (e.g. \"MODE = 'A'\"); diagnostics only, never evaluated. Present only when reachability=conditional."
|
|
252
|
+
},
|
|
253
|
+
"path": { "$ref": "#/definitions/ScriptIoPath" },
|
|
254
|
+
"formatOptions": { "$ref": "#/definitions/ScriptIoFormatOptions" }
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"ScriptMetadata": {
|
|
258
|
+
"type": "object",
|
|
259
|
+
"title": "ScriptMetadata",
|
|
260
|
+
"description": "Structural metadata for script-kind units used in testing and validation. Concept-sibling to scriptBindings; the flat scriptBindings field migrates under this container in a follow-up.",
|
|
261
|
+
"properties": {
|
|
262
|
+
"IO": {
|
|
263
|
+
"type": "array",
|
|
264
|
+
"description": "One entry per .IMPORT/.EXPORT read/write block, in source order. Dialect-neutral; populated by the per-dialect extractor at conversion time.",
|
|
265
|
+
"items": { "$ref": "#/definitions/ScriptIoEntry" }
|
|
266
|
+
}
|
|
267
|
+
}
|
|
168
268
|
}
|
|
169
269
|
},
|
|
170
270
|
"properties": {
|
|
@@ -573,6 +673,11 @@
|
|
|
573
673
|
}
|
|
574
674
|
}
|
|
575
675
|
}
|
|
676
|
+
},
|
|
677
|
+
"scriptMetadata": {
|
|
678
|
+
"$ref": "#/definitions/ScriptMetadata",
|
|
679
|
+
"x-allowed-when": { "kind": ["script"] },
|
|
680
|
+
"x-query-help": false
|
|
576
681
|
}
|
|
577
682
|
}
|
|
578
683
|
}
|
|
@@ -122,8 +122,15 @@ fn substitute_literal(s: &str, sorted_keys: &[&str], bindings: &HashMap<String,
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
/// Apply literal-token substitution to every string slot under `source.*`
|
|
125
|
-
/// and `target.*` of `unit
|
|
125
|
+
/// and `target.*` of `unit`, and to each `scriptMetadata.IO[].path`'s per-side
|
|
126
|
+
/// `source` / `target` slots. Other fields (including `dependsOn[].id`) are
|
|
126
127
|
/// untouched. No-op when `bindings` is empty.
|
|
128
|
+
///
|
|
129
|
+
/// `scriptMetadata.IO[].path` resolution substitutes the per-side `source` and
|
|
130
|
+
/// `target` slots in place using the same `bindings` map — the same generic,
|
|
131
|
+
/// map-key-based pass `parameterizedReference` slots use, with no wrapper
|
|
132
|
+
/// spelling baked into CUR. A source-side map (e.g. keyed by `${name}`)
|
|
133
|
+
/// resolves `source` and leaves `target` untouched, and vice versa.
|
|
127
134
|
pub(crate) fn apply_bindings(unit: &mut CodeUnit, bindings: &HashMap<String, String>) {
|
|
128
135
|
if bindings.is_empty() {
|
|
129
136
|
return;
|
|
@@ -156,4 +163,18 @@ pub(crate) fn apply_bindings(unit: &mut CodeUnit, bindings: &HashMap<String, Str
|
|
|
156
163
|
}
|
|
157
164
|
}
|
|
158
165
|
}
|
|
166
|
+
|
|
167
|
+
// Substitute scriptMetadata.IO path slots in place — the same generic pass
|
|
168
|
+
// applied to source.* / target.* above.
|
|
169
|
+
if let Some(meta) = unit.script_metadata.as_mut() {
|
|
170
|
+
for entry in meta.io.iter_mut() {
|
|
171
|
+
if let Some(path) = entry.path.as_mut() {
|
|
172
|
+
for slot in [&mut path.source, &mut path.target] {
|
|
173
|
+
if let Some(v) = slot.as_mut() {
|
|
174
|
+
*v = substitute_literal(v, &sorted_keys, bindings);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
159
180
|
}
|
|
@@ -57,6 +57,11 @@ pub const ALLOWED_WHEN_CONSTRAINTS: &[AllowedWhen] = &[
|
|
|
57
57
|
leaf_name: "scriptBindings",
|
|
58
58
|
when: &[("kind", &["script"])],
|
|
59
59
|
},
|
|
60
|
+
AllowedWhen {
|
|
61
|
+
parent_pointer: "",
|
|
62
|
+
leaf_name: "scriptMetadata",
|
|
63
|
+
when: &[("kind", &["script"])],
|
|
64
|
+
},
|
|
60
65
|
AllowedWhen {
|
|
61
66
|
parent_pointer: "",
|
|
62
67
|
leaf_name: "signature",
|
|
@@ -45,6 +45,7 @@ pub use registry::WriteOptions;
|
|
|
45
45
|
pub use registry::UNKNOWN_ID;
|
|
46
46
|
|
|
47
47
|
// Re-export validation types
|
|
48
|
+
pub use validation::script_io::{validate_script_io, ProvidedIo, ScriptIoDiff};
|
|
48
49
|
pub use validation::ValidationIssue;
|
|
49
50
|
pub use validation::ValidationIssueKind;
|
|
50
51
|
pub use validation::ValidationReport;
|