Skip to content

Commit 4f90f51

Browse files
committed
Add YAML model property parsing
1 parent a75852e commit 4f90f51

21 files changed

Lines changed: 589 additions & 47 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# M1 Model Properties Slice
2+
3+
## Scope
4+
5+
This slice extends the native Zig M1 parser to read SQL-backed model properties from YAML files under configured model paths. It remains a deliberately small artifact-first subset, not a general YAML or Jinja implementation.
6+
7+
Implemented surface:
8+
9+
- Scalar model descriptions and dbt-shaped `patch_path`.
10+
- Simple column names and scalar descriptions.
11+
- Simple model and column test names parsed internally for later dbt-shaped test-node work.
12+
- Block-form `config.materialized`.
13+
- Block-form `config.tags` plus top-level inline `tags`.
14+
- `config.enabled: false` for SQL models.
15+
- Disabled SQL model representation under manifest `disabled`.
16+
- Loud failure when an active model `ref`s a disabled model.
17+
- dbt-compatible warnings, not fatal errors, for YAML model properties that do not match a discovered SQL model.
18+
19+
## Compatibility Notes
20+
21+
Active nodes exclude disabled models from `nodes`, `parent_map`, `child_map`, and `dxt ls`. Disabled SQL models are retained in `disabled` as a list under their model unique id, matching the dbt artifact shape more closely than silently dropping them.
22+
23+
The YAML parser is intentionally subset-based. Unsupported richer property forms should fail or remain outside the advertised supported surface until a real YAML layer is introduced.
24+
25+
Parsed generic tests are intentionally not written into model or column objects because dbt manifests represent them as separate `test.*` nodes. Emitting those nodes is a follow-up M1 compatibility slice.
26+
27+
## Validation
28+
29+
Focused fixtures cover model properties, columns, combined source/model YAML, disabled model representation, disabled ref diagnostics, and unmatched model-property warnings.

PLAN.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -513,8 +513,8 @@ Exit criteria:
513513
## Current Status
514514

515515
- M0 is under PR review as the Zig `0.16.0` runtime scaffold.
516-
- M1 has started on a stacked branch with a native Zig artifact-first parser slice.
517-
- `dxt parse` now targets the supported Tier 0 subset: project name/model paths, SQL model discovery, literal `ref`, literal `source`, inline `config(materialized=..., tags=...)`, dependency maps, and deterministic partial `manifest.json`.
516+
- M1 has started on stacked branches with native Zig artifact-first parser slices.
517+
- `dxt parse` now targets the supported Tier 0 subset: project name/model paths, SQL model discovery, literal `ref`, literal `source`, inline `config(materialized=..., tags=...)`, narrow YAML model properties for scalar descriptions, simple columns, tags, materialization, disabled SQL models, dependency maps, and deterministic partial `manifest.json`. Generic tests are parsed for later graph work but are not yet emitted as dbt-shaped `test.*` nodes.
518518
- `dxt ls` now lists resources from the same parser graph with stable text/JSON output and basic name, tag, path, resource type, and exact exclude filters.
519-
- Synthetic fixtures cover one model, model refs, source refs, inline config/tag selection, duplicate model diagnostics, unsupported dynamic ref diagnostics, and unsupported macro-call diagnostics.
520-
- The next M1 slices should add published schema validation, YAML model properties, disabled resources, docs blocks, macros, stronger selector parity, and Jaffle Shop DuckDB parse exploration.
519+
- Synthetic fixtures cover one model, model refs, source refs, combined source/model YAML, inline config/tag selection, YAML model properties and columns, disabled models, disabled ref diagnostics, unmatched model-property warnings, duplicate model diagnostics, unsupported dynamic ref diagnostics, and unsupported macro-call diagnostics.
520+
- The next M1 slices should add published schema validation, docs blocks, macros, stronger selector parity, and Jaffle Shop DuckDB parse exploration.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Implemented pre-alpha commands:
3535
./zig-out/bin/dxt ls --project-dir tests/fixtures/model_ref --output json
3636
```
3737

38-
`parse` and `ls` currently support only the documented M1 parser subset: `dbt_project.yml` name/model paths/target path, SQL model discovery, literal `ref`, literal `source`, basic inline `config`, deterministic partial `manifest.json`, and simple name/tag/path/resource filters. `compile`, `build`, and `docs generate` remain planned placeholders.
38+
`parse` and `ls` currently support only the documented M1 parser subset: `dbt_project.yml` name/model paths/target path, SQL model discovery, literal `ref`, literal `source`, basic inline `config`, narrow YAML model properties for scalar descriptions, simple columns, tags, materialization and disabled SQL models, deterministic partial `manifest.json`, and simple name/tag/path/resource filters. dbt-shaped generic test nodes, `compile`, `build`, and `docs generate` remain planned placeholders.
3939

4040
## Development
4141

0 commit comments

Comments
 (0)