@@ -26,6 +26,10 @@ import.
2626 capabilities, and loss reports.
2727- ` openstatspec.sql ` : database connection and wide-table/catalog operations.
2828- ` openstatspec.spss ` : SAV/ZSAV adapter boundary.
29+ - ` openstatspec.transform ` : canonical plans, frontend-neutral schema concepts,
30+ and plan validation.
31+ - ` openstatspec.frontends.spss ` : the SPSS-like syntax frontend and convenience
32+ execution adapter.
2933
3034## Intended workflow
3135
@@ -63,43 +67,17 @@ implemented capability boundary.
6367
6468## SPSS-like transformation frontend
6569
66- The transformation frontend accepts ` RECODE ` , ` VARIABLE LABELS ` , and
67- ` VALUE LABELS ` , lowers them to a canonical OpenStatSpec Transformation Plan,
68- and mutates the same logical dataset and physical wide table. SQLite,
69- PostgreSQL, MySQL, MariaDB, and Dolt connections are allowed. It creates no
70- derived dataset, copied table, snapshot, or OpenStatSpec rollback/version layer.
71-
72- Install the compact operation-audit relation separately, then apply syntax:
73-
74- ``` python
75- from openstatspec import (
76- apply_spss_in_place,
77- install_in_place_transformation_schema,
78- )
79-
80- database_url = " postgresql+psycopg://user:password@host/database"
81- install_in_place_transformation_schema(database_url = database_url)
82- result = apply_spss_in_place(
83- database_url = database_url,
84- dataset_id = " ..." ,
85- actor = " agent@example.org" ,
86- source_text = """
87- RECODE age (18 THRU 34 = 1) (35 THRU 64 = 2) INTO age_group.
88- VARIABLE LABELS age_group 'Age group'.
89- VALUE LABELS age_group 1 '18-34' 2 '35-64'.
90- """ ,
91- )
92- ```
93-
94- Existing-target recodes and metadata mutations use direct DML. SQLite and
95- PostgreSQL may also add a target column in the same native transaction. MySQL,
96- MariaDB, and Dolt reject such schema-changing plans before mutation because
97- their implicit-commit DDL could otherwise leave a partial apply. On Dolt, the
98- caller additionally supplies expected branch and HEAD identities, and the
99- working set must be clean. The transformer never calls ` DOLT_COMMIT ` .
100-
101- See [ in-place transformations] ( docs/in-place-transformation.md ) for the full
102- execution boundary and CLI form.
70+ The SPSS-like frontend lowers supported ` RECODE ` , ` VARIABLE LABELS ` , and
71+ ` VALUE LABELS ` syntax into a language-neutral canonical plan. The in-place
72+ path applies it to the same logical dataset, physical wide table, and metadata
73+ catalog without a derived dataset, copied table, snapshot, or separate
74+ rollback/history layer. Dolt remains the sole versioning layer for Dolt-backed
75+ edits, and the transformer never calls ` DOLT_COMMIT ` .
76+
77+ See the [ dataset transformations manual] ( docs/transformations.md ) for schema
78+ installation, Python and CLI surfaces, database invariants, audit provenance,
79+ package layout, and extension guidance. Stata and SAS are unimplemented
80+ placeholders.
10381
10482## Current support status
10583
0 commit comments