atdd 0.4.1__py3-none-any.whl → 0.4.2__py3-none-any.whl
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.
- atdd/coach/commands/registry.py +2 -2
- atdd/planner/validators/test_plan_cross_refs.py +4 -2
- atdd/planner/validators/test_train_validation.py +10 -8
- {atdd-0.4.1.dist-info → atdd-0.4.2.dist-info}/METADATA +1 -1
- {atdd-0.4.1.dist-info → atdd-0.4.2.dist-info}/RECORD +9 -9
- {atdd-0.4.1.dist-info → atdd-0.4.2.dist-info}/WHEEL +0 -0
- {atdd-0.4.1.dist-info → atdd-0.4.2.dist-info}/entry_points.txt +0 -0
- {atdd-0.4.1.dist-info → atdd-0.4.2.dist-info}/licenses/LICENSE +0 -0
- {atdd-0.4.1.dist-info → atdd-0.4.2.dist-info}/top_level.txt +0 -0
atdd/coach/commands/registry.py
CHANGED
|
@@ -1555,6 +1555,6 @@ def main(repo_root: Path):
|
|
|
1555
1555
|
|
|
1556
1556
|
|
|
1557
1557
|
if __name__ == "__main__":
|
|
1558
|
-
from
|
|
1559
|
-
repo_root =
|
|
1558
|
+
from atdd.coach.utils.repo import find_repo_root
|
|
1559
|
+
repo_root = find_repo_root()
|
|
1560
1560
|
main(repo_root)
|
|
@@ -5,8 +5,11 @@ Validates that cross-references between wagons, trains, and artifacts are cohere
|
|
|
5
5
|
Tests ensure that consume references point to valid produce artifacts.
|
|
6
6
|
"""
|
|
7
7
|
import pytest
|
|
8
|
+
from pathlib import Path
|
|
8
9
|
from typing import Dict, Set, List, Tuple, Any
|
|
9
10
|
|
|
11
|
+
from atdd.coach.utils.repo import find_repo_root
|
|
12
|
+
|
|
10
13
|
|
|
11
14
|
@pytest.mark.platform
|
|
12
15
|
@pytest.mark.e2e
|
|
@@ -117,8 +120,7 @@ def test_trains_reference_valid_wagons(trains_registry, wagon_manifests):
|
|
|
117
120
|
# Load individual train file if path exists
|
|
118
121
|
if train_path:
|
|
119
122
|
import yaml
|
|
120
|
-
|
|
121
|
-
train_file = Path(__file__).resolve().parents[4] / train_path
|
|
123
|
+
train_file = find_repo_root() / train_path
|
|
122
124
|
|
|
123
125
|
if train_file.exists():
|
|
124
126
|
with open(train_file) as f:
|
|
@@ -13,6 +13,8 @@ import yaml
|
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
from typing import Dict, List, Set, Tuple
|
|
15
15
|
|
|
16
|
+
from atdd.coach.utils.repo import find_repo_root
|
|
17
|
+
|
|
16
18
|
|
|
17
19
|
@pytest.mark.platform
|
|
18
20
|
def test_train_ids_follow_numbering_convention(trains_registry):
|
|
@@ -91,7 +93,7 @@ def test_train_files_exist_for_registry_entries(trains_registry):
|
|
|
91
93
|
When: Checking for train files
|
|
92
94
|
Then: Each train has a file at plan/_trains/{train_id}.yaml
|
|
93
95
|
"""
|
|
94
|
-
repo_root =
|
|
96
|
+
repo_root = find_repo_root()
|
|
95
97
|
trains_dir = repo_root / "plan" / "_trains"
|
|
96
98
|
|
|
97
99
|
missing_files = []
|
|
@@ -121,7 +123,7 @@ def test_all_train_files_registered(trains_registry):
|
|
|
121
123
|
When: Checking registry
|
|
122
124
|
Then: Each file is registered in plan/_trains.yaml
|
|
123
125
|
"""
|
|
124
|
-
repo_root =
|
|
126
|
+
repo_root = find_repo_root()
|
|
125
127
|
trains_dir = repo_root / "plan" / "_trains"
|
|
126
128
|
|
|
127
129
|
# Get all registered train IDs
|
|
@@ -153,7 +155,7 @@ def test_train_id_matches_filename(trains_registry):
|
|
|
153
155
|
When: Loading train data
|
|
154
156
|
Then: train_id field matches filename (without .yaml)
|
|
155
157
|
"""
|
|
156
|
-
repo_root =
|
|
158
|
+
repo_root = find_repo_root()
|
|
157
159
|
trains_dir = repo_root / "plan" / "_trains"
|
|
158
160
|
|
|
159
161
|
mismatches = []
|
|
@@ -183,7 +185,7 @@ def test_train_wagons_exist(trains_registry, wagon_manifests):
|
|
|
183
185
|
When: Checking wagon references
|
|
184
186
|
Then: Each wagon exists in registry or has a manifest in plan/*
|
|
185
187
|
"""
|
|
186
|
-
repo_root =
|
|
188
|
+
repo_root = find_repo_root()
|
|
187
189
|
trains_dir = repo_root / "plan" / "_trains"
|
|
188
190
|
|
|
189
191
|
# Build wagon name set from manifests
|
|
@@ -231,7 +233,7 @@ def test_train_dependencies_are_valid(trains_registry):
|
|
|
231
233
|
When: Checking dependency references
|
|
232
234
|
Then: Each dependency points to a valid train_id
|
|
233
235
|
"""
|
|
234
|
-
repo_root =
|
|
236
|
+
repo_root = find_repo_root()
|
|
235
237
|
trains_dir = repo_root / "plan" / "_trains"
|
|
236
238
|
|
|
237
239
|
# Get all valid train IDs
|
|
@@ -287,7 +289,7 @@ def test_train_artifacts_follow_naming_convention(trains_registry):
|
|
|
287
289
|
"""
|
|
288
290
|
import re
|
|
289
291
|
|
|
290
|
-
repo_root =
|
|
292
|
+
repo_root = find_repo_root()
|
|
291
293
|
trains_dir = repo_root / "plan" / "_trains"
|
|
292
294
|
|
|
293
295
|
pattern = re.compile(r"^[a-z][a-z0-9-]*(?::[a-z][a-z0-9-]*)+(?:\.[a-z][a-z0-9-]*)*$")
|
|
@@ -355,7 +357,7 @@ def test_train_artifacts_exist_in_wagons(trains_registry, wagon_manifests):
|
|
|
355
357
|
Then: Each artifact should be in wagon produce/consume lists
|
|
356
358
|
Note: Soft check - external/system artifacts are allowed
|
|
357
359
|
"""
|
|
358
|
-
repo_root =
|
|
360
|
+
repo_root = find_repo_root()
|
|
359
361
|
trains_dir = repo_root / "plan" / "_trains"
|
|
360
362
|
|
|
361
363
|
# Build artifact index from wagons
|
|
@@ -488,7 +490,7 @@ def test_trains_match_schema(trains_registry):
|
|
|
488
490
|
from jsonschema import Draft7Validator
|
|
489
491
|
import json
|
|
490
492
|
|
|
491
|
-
repo_root =
|
|
493
|
+
repo_root = find_repo_root()
|
|
492
494
|
schema_path = repo_root / ".claude" / "schemas" / "planner" / "train.schema.json"
|
|
493
495
|
trains_dir = repo_root / "plan" / "_trains"
|
|
494
496
|
|
|
@@ -14,7 +14,7 @@ atdd/coach/commands/initializer.py,sha256=s7NnITF4c6xGlN6ZJVjyv4a4jxGMjK9OPG1C-O
|
|
|
14
14
|
atdd/coach/commands/interface.py,sha256=FwBrJpWkfSL9n4n0HT_EC-alseXgU0bweKD4TImyHN0,40483
|
|
15
15
|
atdd/coach/commands/inventory.py,sha256=qU42MnkXt1JSBh5GU7pPSKmCO27Zfga7XwMT19RquJE,20969
|
|
16
16
|
atdd/coach/commands/migration.py,sha256=wRxU7emvvHqWt1MvXKkNTkPBjp0sU9g8F5Uy5yV2YfI,8177
|
|
17
|
-
atdd/coach/commands/registry.py,sha256=
|
|
17
|
+
atdd/coach/commands/registry.py,sha256=76-Pe3_cN483JR1pXUdDIE5WSZjWtVV0Jl8dRtRw_9Y,58349
|
|
18
18
|
atdd/coach/commands/session.py,sha256=MhuWXd5TR6bB3w0t8vANeZx3L476qwLT6EUQMwg-wQA,14268
|
|
19
19
|
atdd/coach/commands/sync.py,sha256=4HNzg8AVaePDwhyBlQcywvNVZDP5NIW8TBsEPbqmJuQ,12545
|
|
20
20
|
atdd/coach/commands/test_interface.py,sha256=a7ut2Hhk0PnQ5LfJZkoQwfkfkVuB5OHA4QBwOS0-jcg,16870
|
|
@@ -110,11 +110,11 @@ atdd/planner/schemas/wmbt.schema.json,sha256=KU_D6r0kQTJod-XHQT5QiiHcUUPJrLgg3aP
|
|
|
110
110
|
atdd/planner/validators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
111
|
atdd/planner/validators/conftest.py,sha256=CVr3m9mv4xc8G6azcdbZ1VArVvLZw2Utqt2EIOyYdbQ,155
|
|
112
112
|
atdd/planner/validators/test_draft_wagon_registry.py,sha256=Bt4xTjgKddEnnxNOMh8jWhvb3aqRaWGBd227Vv3rWz0,13798
|
|
113
|
-
atdd/planner/validators/test_plan_cross_refs.py,sha256=
|
|
113
|
+
atdd/planner/validators/test_plan_cross_refs.py,sha256=kxlq1uZ2u4mn3r8wHJjXVJsB8nmzwsvSzOlRapJ9pBY,9520
|
|
114
114
|
atdd/planner/validators/test_plan_uniqueness.py,sha256=rlC5khAoBkgpTZJdyHi1JbDUj14v1JiGBFv2iV_AP_Y,7735
|
|
115
115
|
atdd/planner/validators/test_plan_urn_resolution.py,sha256=GoxFiRjOfp69FUmIyKGnsGgpYalOz3qfp6qjyCkga44,9440
|
|
116
116
|
atdd/planner/validators/test_plan_wagons.py,sha256=l4jbHf9Kg-Fy8Gz5O8BO7PDQKbbeLN0uctoErPK_YKI,7357
|
|
117
|
-
atdd/planner/validators/test_train_validation.py,sha256=
|
|
117
|
+
atdd/planner/validators/test_train_validation.py,sha256=KsAMxtuyipHse02x91k4rLWUxRiHW29sYBWZ6KNbfJ4,16870
|
|
118
118
|
atdd/planner/validators/test_wagon_urn_chain.py,sha256=KY_0vrj6CoiQJ80WbqfCGCYbup13cVssaxbNO0eVf74,26697
|
|
119
119
|
atdd/planner/validators/test_wmbt_consistency.py,sha256=jdfu4xWEozzBGwplKDXxuDQNLBDxB_AC96NHLkyHqQ8,10875
|
|
120
120
|
atdd/planner/validators/test_wmbt_vocabulary.py,sha256=PCivTzV7ntlZBa-PVzpBwEiKqLumsEZXfj1r2xl9usM,18803
|
|
@@ -181,9 +181,9 @@ atdd/tester/validators/test_red_supabase_layer_structure.py,sha256=zbUjsMWSJE1MP
|
|
|
181
181
|
atdd/tester/validators/test_telemetry_structure.py,sha256=uU5frZnxSlOn60iHyqhe7Pg9b0wrOV7N14D4S6Aw6TE,22626
|
|
182
182
|
atdd/tester/validators/test_typescript_test_naming.py,sha256=E-TyGv_GVlTfsbyuxrtv9sOWSZS_QcpH6rrJFbWoeeU,11280
|
|
183
183
|
atdd/tester/validators/test_typescript_test_structure.py,sha256=eV89SD1RaKtchBZupqhnJmaruoROosf3LwB4Fwe4UJI,2612
|
|
184
|
-
atdd-0.4.
|
|
185
|
-
atdd-0.4.
|
|
186
|
-
atdd-0.4.
|
|
187
|
-
atdd-0.4.
|
|
188
|
-
atdd-0.4.
|
|
189
|
-
atdd-0.4.
|
|
184
|
+
atdd-0.4.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
185
|
+
atdd-0.4.2.dist-info/METADATA,sha256=u367DyQRsEduvaTko1XLLX7sfVQZSmvC8Gmrr5tRSVE,8013
|
|
186
|
+
atdd-0.4.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
187
|
+
atdd-0.4.2.dist-info/entry_points.txt,sha256=-C3yrA1WQQfN3iuGmSzPapA5cKVBEYU5Q1HUffSJTbY,38
|
|
188
|
+
atdd-0.4.2.dist-info/top_level.txt,sha256=VKkf6Uiyrm4RS6ULCGM-v8AzYN8K2yg8SMqwJLoO-xs,5
|
|
189
|
+
atdd-0.4.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|