modwire-cli 1.2.0__tar.gz → 2.0.0__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.
Files changed (78) hide show
  1. modwire_cli-2.0.0/.modwire/architecture.yaml +42 -0
  2. {modwire_cli-1.2.0/src/modwire_cli/resources/init → modwire_cli-2.0.0/.modwire/docs}/ARCHITECTURE.md +16 -1
  3. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/PKG-INFO +2 -2
  4. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/pyproject.toml +1 -1
  5. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/_version.py +3 -3
  6. {modwire_cli-1.2.0/.modwire/docs → modwire_cli-2.0.0/src/modwire_cli/resources/init}/ARCHITECTURE.md +16 -1
  7. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/resources/init/architecture.yaml +20 -16
  8. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli.egg-info/PKG-INFO +2 -2
  9. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli.egg-info/requires.txt +1 -1
  10. modwire_cli-2.0.0/src/modwire_cli.egg-info/scm_version.json +8 -0
  11. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/functional/support.py +3 -1
  12. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/functional/test_02_invariants.py +2 -0
  13. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/uv.lock +4 -4
  14. modwire_cli-1.2.0/.modwire/architecture.yaml +0 -38
  15. modwire_cli-1.2.0/src/modwire_cli.egg-info/scm_version.json +0 -8
  16. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.github/workflows/ci.yml +0 -0
  17. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.github/workflows/release.yml +0 -0
  18. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.gitignore +0 -0
  19. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.modwire/INDEX.md +0 -0
  20. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.modwire/docs/MODWIRE.md +0 -0
  21. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.modwire/docs/PROJECT.md +0 -0
  22. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.modwire/docs/RULES.md +0 -0
  23. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.modwire/docs/TESTING.md +0 -0
  24. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/.modwire/docs/WORKFLOW.md +0 -0
  25. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/AGENTS.md +0 -0
  26. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/LICENSE +0 -0
  27. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/Makefile +0 -0
  28. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/README.md +0 -0
  29. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/scripts/generate_docs.py +0 -0
  30. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/setup.cfg +0 -0
  31. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/__init__.py +0 -0
  32. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/__main__.py +0 -0
  33. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/cli.py +0 -0
  34. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/config.py +0 -0
  35. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/documentation/__init__.py +0 -0
  36. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/documentation/command.py +0 -0
  37. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/documentation/generator.py +0 -0
  38. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/extraction.py +0 -0
  39. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/facade.py +0 -0
  40. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/initialization/__init__.py +0 -0
  41. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/initialization/asset.py +0 -0
  42. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/initialization/facade.py +0 -0
  43. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/initialization/result.py +0 -0
  44. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/initialization/service.py +0 -0
  45. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/__init__.py +0 -0
  46. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/context.py +0 -0
  47. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/runner.py +0 -0
  48. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/step.py +0 -0
  49. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/__init__.py +0 -0
  50. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/callables_insight.py +0 -0
  51. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/clusters_insight.py +0 -0
  52. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/coherence_insight.py +0 -0
  53. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/flow_violations.py +0 -0
  54. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/hotspots_insight.py +0 -0
  55. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/map_tree.py +0 -0
  56. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/shape_violations.py +0 -0
  57. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/success.py +0 -0
  58. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/unknown_files_warning.py +0 -0
  59. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/pipeline/steps/unused_exports_insight.py +0 -0
  60. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/py.typed +0 -0
  61. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/resources/init/AGENTS.md +0 -0
  62. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/resources/init/INDEX.md +0 -0
  63. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/resources/init/MODWIRE.md +0 -0
  64. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/resources/init/RULES.md +0 -0
  65. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/resources/init/TESTING.md +0 -0
  66. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli/resources/init/WORKFLOW.md +0 -0
  67. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli.egg-info/SOURCES.txt +0 -0
  68. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli.egg-info/dependency_links.txt +0 -0
  69. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli.egg-info/entry_points.txt +0 -0
  70. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli.egg-info/scm_file_list.json +0 -0
  71. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/src/modwire_cli.egg-info/top_level.txt +0 -0
  72. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/__init__.py +0 -0
  73. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/functional/__init__.py +0 -0
  74. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/functional/test_01_attacks.py +0 -0
  75. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/functional/test_03_interruption.py +0 -0
  76. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/functional/test_04_cleanup.py +0 -0
  77. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/functional/test_05_recovery.py +0 -0
  78. {modwire_cli-1.2.0 → modwire_cli-2.0.0}/tests/functional/test_06_happy_path.py +0 -0
@@ -0,0 +1,42 @@
1
+ boundaries:
2
+ tags:
3
+ - name: package
4
+ match: src/modwire_cli
5
+ - name: tests
6
+ match: tests
7
+ - name: scripts
8
+ match: scripts
9
+ flow:
10
+ module_tag: package
11
+ realms:
12
+ - name: tests
13
+ module_tag: tests
14
+ - name: scripts
15
+ module_tag: scripts
16
+ analyzers:
17
+ - module-boundaries
18
+ - no-cycles
19
+ - no-reentry
20
+ shape:
21
+ realms:
22
+ - name: package
23
+ match: src/modwire_cli
24
+ shape:
25
+ max_classes_per_file: 1
26
+ max_interfaces_per_file: 0
27
+ max_types_per_file: 0
28
+ max_abstract_classes_per_file: -1
29
+ max_functions_per_file: 0
30
+ max_methods_per_class: -1
31
+ max_declared_args: -1
32
+ max_function_lines: -1
33
+ max_method_lines: -1
34
+ max_class_lines: -1
35
+ allow_optional_function_args: false
36
+ allow_optional_method_args: false
37
+ allow_optional_class_properties: false
38
+ allow_import_aliases: false
39
+ require_joined_imports: true
40
+ allowed_import_crossing_types:
41
+ - module
42
+ - symbol
@@ -31,4 +31,19 @@ flow:
31
31
  - {name: backend, module_tag: *backend_module_tag, layers: [*api_tag, *application_tag, *infrastructure_tag, *domain_tag]}
32
32
  ```
33
33
 
34
- Use aliases consistently when a tag name appears in more than one place. The supplied `architecture.yaml` is a complete, adaptable example; keep its shape limits only when they suit the project.
34
+ Use aliases consistently when a tag name appears in more than one place.
35
+
36
+ ## Shape realms
37
+
38
+ Shape limits belong to one or more realms. A realm has a name and a source-tree `match` pattern, just like a tag, with its limits nested under `shape`:
39
+
40
+ ```yaml
41
+ shape:
42
+ realms:
43
+ - name: source
44
+ match: src
45
+ shape:
46
+ max_functions_per_file: 1
47
+ ```
48
+
49
+ The supplied `architecture.yaml` is a complete, adaptable example; keep its shape limits only when they suit the project.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modwire-cli
3
- Version: 1.2.0
3
+ Version: 2.0.0
4
4
  Summary: Command-line interface for the Modwire ecosystem.
5
5
  Author: Tomasz Szpak
6
6
  License-Expression: MIT
@@ -21,7 +21,7 @@ Classifier: Topic :: Software Development
21
21
  Requires-Python: >=3.12
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
- Requires-Dist: modwire-architecture<7,>=6
24
+ Requires-Dist: modwire-architecture<8,>=7
25
25
  Requires-Dist: modwire-extraction<3,>=2
26
26
  Requires-Dist: pydantic-yaml>=1.7
27
27
  Requires-Dist: rich>=13
@@ -24,7 +24,7 @@ classifiers = [
24
24
  ]
25
25
  keywords = ["cli", "modwire"]
26
26
  dependencies = [
27
- "modwire-architecture>=6,<7",
27
+ "modwire-architecture>=7,<8",
28
28
  "modwire-extraction>=2,<3",
29
29
  "pydantic-yaml>=1.7",
30
30
  "rich>=13",
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.0'
22
- __version_tuple__ = version_tuple = (1, 2, 0)
21
+ __version__ = version = '2.0.0'
22
+ __version_tuple__ = version_tuple = (2, 0, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g5c68c8d1a'
24
+ __commit_id__ = commit_id = 'g67f76cfa6'
@@ -31,4 +31,19 @@ flow:
31
31
  - {name: backend, module_tag: *backend_module_tag, layers: [*api_tag, *application_tag, *infrastructure_tag, *domain_tag]}
32
32
  ```
33
33
 
34
- Use aliases consistently when a tag name appears in more than one place. The supplied `architecture.yaml` is a complete, adaptable example; keep its shape limits only when they suit the project.
34
+ Use aliases consistently when a tag name appears in more than one place.
35
+
36
+ ## Shape realms
37
+
38
+ Shape limits belong to one or more realms. A realm has a name and a source-tree `match` pattern, just like a tag, with its limits nested under `shape`:
39
+
40
+ ```yaml
41
+ shape:
42
+ realms:
43
+ - name: source
44
+ match: src
45
+ shape:
46
+ max_functions_per_file: 1
47
+ ```
48
+
49
+ The supplied `architecture.yaml` is a complete, adaptable example; keep its shape limits only when they suit the project.
@@ -38,19 +38,23 @@ boundaries:
38
38
  layers: &frontend_layers [*page_tag, *state_tag, *component_tag]
39
39
 
40
40
  shape:
41
- max_classes_per_file: 1
42
- max_interfaces_per_file: 1
43
- max_types_per_file: 1
44
- max_abstract_classes_per_file: 1
45
- max_functions_per_file: 1
46
- max_methods_per_class: 10
47
- max_declared_args: 4
48
- max_function_lines: 30
49
- max_method_lines: 20
50
- max_class_lines: 150
51
- allow_optional_function_args: false
52
- allow_optional_method_args: false
53
- allow_optional_class_properties: false
54
- allow_import_aliases: false
55
- require_joined_imports: true
56
- allowed_import_crossing_types: [module, symbol]
41
+ realms:
42
+ - name: source
43
+ match: src
44
+ shape:
45
+ max_classes_per_file: 1
46
+ max_interfaces_per_file: 1
47
+ max_types_per_file: 1
48
+ max_abstract_classes_per_file: 1
49
+ max_functions_per_file: 1
50
+ max_methods_per_class: 10
51
+ max_declared_args: 4
52
+ max_function_lines: 30
53
+ max_method_lines: 20
54
+ max_class_lines: 150
55
+ allow_optional_function_args: false
56
+ allow_optional_method_args: false
57
+ allow_optional_class_properties: false
58
+ allow_import_aliases: false
59
+ require_joined_imports: true
60
+ allowed_import_crossing_types: [module, symbol]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modwire-cli
3
- Version: 1.2.0
3
+ Version: 2.0.0
4
4
  Summary: Command-line interface for the Modwire ecosystem.
5
5
  Author: Tomasz Szpak
6
6
  License-Expression: MIT
@@ -21,7 +21,7 @@ Classifier: Topic :: Software Development
21
21
  Requires-Python: >=3.12
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
- Requires-Dist: modwire-architecture<7,>=6
24
+ Requires-Dist: modwire-architecture<8,>=7
25
25
  Requires-Dist: modwire-extraction<3,>=2
26
26
  Requires-Dist: pydantic-yaml>=1.7
27
27
  Requires-Dist: rich>=13
@@ -1,4 +1,4 @@
1
- modwire-architecture<7,>=6
1
+ modwire-architecture<8,>=7
2
2
  modwire-extraction<3,>=2
3
3
  pydantic-yaml>=1.7
4
4
  rich>=13
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.0.0",
3
+ "distance": 0,
4
+ "node": "g67f76cfa63ddfaf6114ca9168939a315bf94948e",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-07-25"
8
+ }
@@ -24,7 +24,8 @@ class CliHarness:
24
24
  (source_dir / "example.py").write_text("def example() -> None:\n pass\n")
25
25
  (dot_dir / "architecture.yaml").write_text(
26
26
  "boundaries:\n tags:\n - name: package\n match: src\n"
27
- f" flow:\n module_tag: package\nshape:\n max_functions_per_file: {function_limit}\n"
27
+ " flow:\n module_tag: package\nshape:\n realms:\n - name: source\n match: src\n"
28
+ f" shape:\n max_functions_per_file: {function_limit}\n"
28
29
  )
29
30
 
30
31
  def write_layered_project(self, project_root: Path) -> None:
@@ -41,4 +42,5 @@ class CliHarness:
41
42
  " - name: adapters\n match: src/*/adapters\n"
42
43
  " - name: domain\n match: src/*/domain\n"
43
44
  " flow:\n module_tag: module\n layers: [wiring, adapters, domain]\n"
45
+ "shape:\n realms:\n - name: source\n match: src\n"
44
46
  )
@@ -21,6 +21,8 @@ class TestInitializationInvariants(CliHarness):
21
21
  workflow = (docs_dir / "WORKFLOW.md").read_text()
22
22
  agent_guidance = (tmp_path / "AGENTS.md").read_text()
23
23
  assert result.returncode == 0, result.stderr
24
+ assert "name: source" in config
25
+ assert "match: src" in config
24
26
  assert "max_functions_per_file: 1" in config
25
27
  assert "{name: &module_tag module, match: src/*}" in config and "*module_tag" in config
26
28
  assert ConfigService().load(tmp_path / ".modwire").boundaries.tags[0].name == "module"
@@ -306,16 +306,16 @@ wheels = [
306
306
 
307
307
  [[package]]
308
308
  name = "modwire-architecture"
309
- version = "6.0.0"
309
+ version = "7.0.0"
310
310
  source = { registry = "https://pypi.org/simple" }
311
311
  dependencies = [
312
312
  { name = "modwire-extraction" },
313
313
  { name = "pydantic" },
314
314
  { name = "pydantic-yaml" },
315
315
  ]
316
- sdist = { url = "https://files.pythonhosted.org/packages/14/7b/e0ad59df4797f766b0503aaf90b33b1c603c8cf8d1c9a0bdfe4101686b0b/modwire_architecture-6.0.0.tar.gz", hash = "sha256:d468ff371c3a0848859ceee185b8ff309628cdc5569092f6418a222e17d77c18", size = 96509, upload-time = "2026-07-17T17:34:04.418Z" }
316
+ sdist = { url = "https://files.pythonhosted.org/packages/91/70/c8d5e3899acc0acee702392900445583a32da6c7f5b54dbf68f7a7b301b5/modwire_architecture-7.0.0.tar.gz", hash = "sha256:15f31fbd8a214d039a0d8e99408f0548a27c9805f60f13c1f82317d989883fd7", size = 80919, upload-time = "2026-07-25T10:29:41.75Z" }
317
317
  wheels = [
318
- { url = "https://files.pythonhosted.org/packages/de/f4/d98c8822649ec5c119c9332f2c94fd9b84e332303d8feb2b70d882047377/modwire_architecture-6.0.0-py3-none-any.whl", hash = "sha256:65fca29186262b728be92406ce18a5889fe5d2fb834537863bc5854c4829b10f", size = 51959, upload-time = "2026-07-17T17:34:02.989Z" },
318
+ { url = "https://files.pythonhosted.org/packages/fb/30/ab8356df47713c168b9254260e8d8f8f91e49205a518c11c638aaa494c21/modwire_architecture-7.0.0-py3-none-any.whl", hash = "sha256:dc24deccb9ff48f5e887be6dfefbd09dd35dae8c30cc0877e15399a8f1a7c72e", size = 51225, upload-time = "2026-07-25T10:29:40.466Z" },
319
319
  ]
320
320
 
321
321
  [[package]]
@@ -348,7 +348,7 @@ dev = [
348
348
  [package.metadata]
349
349
  requires-dist = [
350
350
  { name = "build", marker = "extra == 'dev'", specifier = ">=1.3" },
351
- { name = "modwire-architecture", specifier = ">=6,<7" },
351
+ { name = "modwire-architecture", specifier = ">=7,<8" },
352
352
  { name = "modwire-extraction", specifier = ">=2,<3" },
353
353
  { name = "pydantic-yaml", specifier = ">=1.7" },
354
354
  { name = "pytest", marker = "extra == 'dev'", specifier = ">=9" },
@@ -1,38 +0,0 @@
1
- boundaries:
2
- tags:
3
- - name: package
4
- match: src/modwire_cli
5
- - name: tests
6
- match: tests
7
- - name: scripts
8
- match: scripts
9
- flow:
10
- module_tag: package
11
- realms:
12
- - name: tests
13
- module_tag: tests
14
- - name: scripts
15
- module_tag: scripts
16
- analyzers:
17
- - module-boundaries
18
- - no-cycles
19
- - no-reentry
20
- shape:
21
- max_classes_per_file: 1
22
- max_interfaces_per_file: 0
23
- max_types_per_file: 0
24
- max_abstract_classes_per_file: -1
25
- max_functions_per_file: 0
26
- max_methods_per_class: -1
27
- max_declared_args: -1
28
- max_function_lines: -1
29
- max_method_lines: -1
30
- max_class_lines: -1
31
- allow_optional_function_args: false
32
- allow_optional_method_args: false
33
- allow_optional_class_properties: false
34
- allow_import_aliases: false
35
- require_joined_imports: true
36
- allowed_import_crossing_types:
37
- - module
38
- - symbol
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "1.2.0",
3
- "distance": 0,
4
- "node": "g5c68c8d1a7bcc4688f438c5d684f1aa08244b379",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-07-24"
8
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes