modwire 8.0.0__tar.gz → 9.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 (430) hide show
  1. {modwire-8.0.0 → modwire-9.0.0}/.dev/modwire.egg-info/SOURCES.txt +32 -85
  2. {modwire-8.0.0 → modwire-9.0.0}/.github/workflows/ci.yml +6 -15
  3. {modwire-8.0.0 → modwire-9.0.0}/MANIFEST.in +0 -2
  4. modwire-9.0.0/Makefile +55 -0
  5. modwire-9.0.0/PKG-INFO +89 -0
  6. modwire-9.0.0/README.md +61 -0
  7. modwire-9.0.0/docs/target-language-ownership.md +34 -0
  8. {modwire-8.0.0 → modwire-9.0.0}/pyproject.toml +5 -1
  9. modwire-9.0.0/scripts/check_extractors.py +39 -0
  10. {modwire-8.0.0 → modwire-9.0.0}/scripts/verify_consumer.py +8 -2
  11. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/application.py +42 -12
  12. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/documentation/application.py +2 -2
  13. modwire-9.0.0/src/modwire/cli/documentation/services/documentation_generator.py +37 -0
  14. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/facade.py +9 -9
  15. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/application.py +5 -4
  16. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/domain.py +3 -2
  17. modwire-9.0.0/src/modwire/cli/pipeline/models/scan_policy.py +8 -0
  18. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/batch_source_reader.py +42 -52
  19. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/dependency/services/import_resolver.py +9 -27
  20. modwire-9.0.0/src/modwire/extraction/dependency/services/suffix_index.py +30 -0
  21. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/models/extraction_request.py +0 -1
  22. modwire-9.0.0/src/modwire/extraction/extractors/models/extractor_resource.py +6 -0
  23. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/models/extractor_runtime.py +2 -1
  24. modwire-9.0.0/src/modwire/extraction/extractors/resources/php/build.py +27 -0
  25. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/script.php +0 -0
  26. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/script.src.php +2 -2
  27. modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/build.py +23 -0
  28. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/script.js +2 -2
  29. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/script.ts +2 -2
  30. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/php_extractor.py +6 -1
  31. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/python_extractor.py +6 -1
  32. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/python_syntax_parser.py +7 -7
  33. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/type_script_extractor.py +2 -1
  34. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/code_map.py +2 -1
  35. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_extraction.py +1 -0
  36. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/types.py +2 -2
  37. {modwire-8.0.0 → modwire-9.0.0}/tests/application/base_test.py +3 -1
  38. {modwire-8.0.0 → modwire-9.0.0}/tests/application/test_01_attacks.py +1 -1
  39. {modwire-8.0.0 → modwire-9.0.0}/tests/application/test_06_happy_path.py +1 -1
  40. modwire-9.0.0/tests/architecture/base_test.py +13 -0
  41. modwire-9.0.0/tests/architecture/boundaries/base_test.py +38 -0
  42. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/test_01_attacks.py +5 -5
  43. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/test_02_invariants.py +6 -6
  44. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/test_03_public_api.py +2 -2
  45. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/test_04_paths.py +5 -5
  46. modwire-9.0.0/tests/architecture/insights/base_test.py +12 -0
  47. modwire-9.0.0/tests/architecture/insights/test_02_invariants.py +79 -0
  48. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/map/test_02_patterns.py +20 -9
  49. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/report/test_02_invariants.py +5 -3
  50. modwire-9.0.0/tests/architecture/shape/base_test.py +7 -0
  51. modwire-9.0.0/tests/architecture/shape/test_01_limits.py +126 -0
  52. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/shape/test_02_invariants.py +9 -5
  53. modwire-9.0.0/tests/cli/documentation/test_02_invariants.py +19 -0
  54. modwire-9.0.0/tests/cli/pipeline/base_test.py +24 -0
  55. modwire-9.0.0/tests/cli/pipeline/test_02_invariants.py +115 -0
  56. {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/base_test.py +1 -1
  57. modwire-9.0.0/tests/extraction/big_projects/project.py +19 -0
  58. modwire-9.0.0/tests/extraction/big_projects/projects.json +32 -0
  59. modwire-9.0.0/tests/extraction/big_projects/resolution_results.json +50 -0
  60. modwire-9.0.0/tests/extraction/big_projects/results.json +20 -0
  61. modwire-9.0.0/tests/extraction/big_projects/run.py +210 -0
  62. modwire-9.0.0/tests/extraction/dependency/test_02_invariants.py +107 -0
  63. {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/extractors/test_03_native_symbols.py +5 -5
  64. modwire-9.0.0/tests/extraction/scan_benchmark/prepare.py +68 -0
  65. modwire-9.0.0/tests/extraction/scan_benchmark/results.json +46 -0
  66. modwire-9.0.0/tests/extraction/scan_benchmark/run.py +93 -0
  67. modwire-9.0.0/tests/shared/code/__init__.py +0 -0
  68. modwire-9.0.0/tests/shared/code/test_02_invariants.py +67 -0
  69. modwire-9.0.0/tests/support/__init__.py +0 -0
  70. modwire-9.0.0/tests/support/code_map.py +163 -0
  71. {modwire-8.0.0 → modwire-9.0.0}/tests/support/service_test.py +7 -1
  72. modwire-8.0.0/.modwire/architecture.yaml +0 -122
  73. modwire-8.0.0/Makefile +0 -65
  74. modwire-8.0.0/PKG-INFO +0 -57
  75. modwire-8.0.0/README.md +0 -29
  76. modwire-8.0.0/docs/legacy/architecture/.github/workflows/ci.yml +0 -15
  77. modwire-8.0.0/docs/legacy/architecture/.github/workflows/human-approval.yml +0 -133
  78. modwire-8.0.0/docs/legacy/architecture/.github/workflows/issue-metadata-check.yml +0 -17
  79. modwire-8.0.0/docs/legacy/architecture/.github/workflows/issue-metadata.yml +0 -87
  80. modwire-8.0.0/docs/legacy/architecture/.github/workflows/python-package.yml +0 -84
  81. modwire-8.0.0/docs/legacy/architecture/.github/workflows/python-release-assets.yml +0 -36
  82. modwire-8.0.0/docs/legacy/architecture/.github/workflows/python-release-build.yml +0 -86
  83. modwire-8.0.0/docs/legacy/architecture/.github/workflows/release.yml +0 -47
  84. modwire-8.0.0/docs/legacy/architecture/.modwire/boundaries.yaml +0 -44
  85. modwire-8.0.0/docs/legacy/architecture/.modwire/shape.yaml +0 -9
  86. modwire-8.0.0/docs/legacy/architecture/CHANGELOG.md +0 -140
  87. modwire-8.0.0/docs/legacy/architecture/CONTRIBUTING.md +0 -38
  88. modwire-8.0.0/docs/legacy/architecture/LICENSE +0 -21
  89. modwire-8.0.0/docs/legacy/architecture/MANIFEST.in +0 -2
  90. modwire-8.0.0/docs/legacy/architecture/Makefile +0 -7
  91. modwire-8.0.0/docs/legacy/architecture/README.md +0 -105
  92. modwire-8.0.0/docs/legacy/architecture/docs/migration-5.md +0 -52
  93. modwire-8.0.0/docs/legacy/architecture/docs/migration-6.md +0 -32
  94. modwire-8.0.0/docs/legacy/architecture/docs/scaffolding/golden/cli.yaml +0 -44
  95. modwire-8.0.0/docs/legacy/architecture/docs/scaffolding/golden/library.yaml +0 -40
  96. modwire-8.0.0/docs/legacy/architecture/docs/scaffolding/repository-contract-v1.yaml +0 -147
  97. modwire-8.0.0/docs/legacy/architecture/docs/wiki/Development-checks.md +0 -25
  98. modwire-8.0.0/docs/legacy/architecture/docs/wiki/Home.md +0 -27
  99. modwire-8.0.0/docs/legacy/architecture/docs/wiki/Reporting-bugs.md +0 -24
  100. modwire-8.0.0/docs/legacy/architecture/docs/wiki/Requesting-features.md +0 -26
  101. modwire-8.0.0/docs/legacy/architecture/pyproject.toml +0 -88
  102. modwire-8.0.0/docs/legacy/cli/.github/workflows/ci.yml +0 -17
  103. modwire-8.0.0/docs/legacy/cli/.github/workflows/release.yml +0 -40
  104. modwire-8.0.0/docs/legacy/cli/.modwire/INDEX.md +0 -10
  105. modwire-8.0.0/docs/legacy/cli/.modwire/architecture.yaml +0 -42
  106. modwire-8.0.0/docs/legacy/cli/.modwire/docs/PROJECT.md +0 -16
  107. modwire-8.0.0/docs/legacy/cli/LICENSE +0 -21
  108. modwire-8.0.0/docs/legacy/cli/Makefile +0 -14
  109. modwire-8.0.0/docs/legacy/cli/README.md +0 -73
  110. modwire-8.0.0/docs/legacy/cli/pyproject.toml +0 -85
  111. modwire-8.0.0/docs/legacy/extraction/.github/workflows/ci.yml +0 -50
  112. modwire-8.0.0/docs/legacy/extraction/.github/workflows/human-approval.yml +0 -133
  113. modwire-8.0.0/docs/legacy/extraction/.github/workflows/release.yml +0 -40
  114. modwire-8.0.0/docs/legacy/extraction/CHANGELOG.md +0 -68
  115. modwire-8.0.0/docs/legacy/extraction/CONTRIBUTING.md +0 -85
  116. modwire-8.0.0/docs/legacy/extraction/LICENSE +0 -21
  117. modwire-8.0.0/docs/legacy/extraction/MANIFEST.in +0 -6
  118. modwire-8.0.0/docs/legacy/extraction/Makefile +0 -4
  119. modwire-8.0.0/docs/legacy/extraction/README.md +0 -73
  120. modwire-8.0.0/docs/legacy/extraction/RELEASE_CHECKLIST.md +0 -40
  121. modwire-8.0.0/docs/legacy/extraction/docs/migration-2.md +0 -59
  122. modwire-8.0.0/docs/legacy/extraction/pyproject.toml +0 -94
  123. modwire-8.0.0/docs/planning/baselines.json +0 -35
  124. modwire-8.0.0/docs/planning/diagrams/01-ownership.md +0 -32
  125. modwire-8.0.0/docs/planning/diagrams/01-ownership.snapshot.json +0 -201
  126. modwire-8.0.0/docs/planning/diagrams/02-issue-dependencies.md +0 -45
  127. modwire-8.0.0/docs/planning/diagrams/02-issue-dependencies.snapshot.json +0 -336
  128. modwire-8.0.0/docs/planning/diagrams/03-release-gates.md +0 -39
  129. modwire-8.0.0/docs/planning/diagrams/03-release-gates.snapshot.json +0 -280
  130. modwire-8.0.0/docs/planning/diagrams/README.md +0 -11
  131. modwire-8.0.0/docs/planning/diagrams/manifest.json +0 -28
  132. modwire-8.0.0/docs/planning/issues.json +0 -107
  133. modwire-8.0.0/docs/planning/namespace-migration.md +0 -17
  134. modwire-8.0.0/docs/planning/preflight.md +0 -64
  135. modwire-8.0.0/docs/planning/removed-modules.json +0 -16
  136. modwire-8.0.0/docs/planning/report-model-migration.json +0 -11
  137. modwire-8.0.0/docs/planning/source-imports.json +0 -1070
  138. modwire-8.0.0/src/modwire/cli/documentation/models/defaults.py +0 -6
  139. modwire-8.0.0/src/modwire/cli/documentation/services/documentation_generator.py +0 -43
  140. modwire-8.0.0/src/modwire/cli/resources/templates/AGENTS.md +0 -1
  141. modwire-8.0.0/src/modwire/cli/resources/templates/ARCHITECTURE.md +0 -49
  142. modwire-8.0.0/src/modwire/cli/resources/templates/MODWIRE.md +0 -5
  143. modwire-8.0.0/src/modwire/cli/resources/templates/RULES.md +0 -6
  144. modwire-8.0.0/src/modwire/cli/resources/templates/TESTING.md +0 -7
  145. modwire-8.0.0/src/modwire/cli/resources/templates/WORKFLOW.md +0 -8
  146. modwire-8.0.0/src/modwire/shared/values/__init__.py +0 -1
  147. modwire-8.0.0/tests/architecture/base_test.py +0 -22
  148. modwire-8.0.0/tests/architecture/boundaries/base_test.py +0 -8
  149. modwire-8.0.0/tests/architecture/insights/base_test.py +0 -7
  150. modwire-8.0.0/tests/architecture/insights/test_02_invariants.py +0 -64
  151. modwire-8.0.0/tests/architecture/shape/base_test.py +0 -6
  152. modwire-8.0.0/tests/architecture/shape/test_01_limits.py +0 -68
  153. modwire-8.0.0/tests/cli/documentation/test_02_invariants.py +0 -32
  154. modwire-8.0.0/tests/cli/pipeline/base_test.py +0 -14
  155. modwire-8.0.0/tests/cli/pipeline/test_02_invariants.py +0 -60
  156. modwire-8.0.0/tests/extraction/dependency/test_02_invariants.py +0 -41
  157. modwire-8.0.0/tests/shared/code/test_02_invariants.py +0 -52
  158. {modwire-8.0.0 → modwire-9.0.0}/.github/workflows/release.yml +0 -0
  159. {modwire-8.0.0 → modwire-9.0.0}/.gitignore +0 -0
  160. {modwire-8.0.0 → modwire-9.0.0}/AGENTS.md +0 -0
  161. {modwire-8.0.0 → modwire-9.0.0}/LICENSE +0 -0
  162. {modwire-8.0.0 → modwire-9.0.0}/scripts/generate_docs.py +0 -0
  163. {modwire-8.0.0 → modwire-9.0.0}/setup.cfg +0 -0
  164. {modwire-8.0.0 → modwire-9.0.0}/setup.py +0 -0
  165. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/__init__.py +0 -0
  166. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/__main__.py +0 -0
  167. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/__init__.py +0 -0
  168. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/__init__.py +0 -0
  169. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/application.py +0 -0
  170. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/domain.py +0 -0
  171. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/__init__.py +0 -0
  172. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/edge_rule_violation.py +0 -0
  173. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/flow_report.py +0 -0
  174. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/flow_violation.py +0 -0
  175. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/types.py +0 -0
  176. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/__init__.py +0 -0
  177. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/backward_flow_analyzer.py +0 -0
  178. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/boundaries_flow_analyzer.py +0 -0
  179. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/module_boundary_analyzer.py +0 -0
  180. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/no_cycles_flow_analyzer.py +0 -0
  181. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/no_reentry_flow_analyzer.py +0 -0
  182. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/__init__.py +0 -0
  183. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/application.py +0 -0
  184. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/__init__.py +0 -0
  185. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/architecture_config.py +0 -0
  186. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/boundaries_config.py +0 -0
  187. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/boundary_rule.py +0 -0
  188. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/configuration_value.py +0 -0
  189. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/flow_realm.py +0 -0
  190. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/flow_rules.py +0 -0
  191. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/shape_config.py +0 -0
  192. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/shape_realm.py +0 -0
  193. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/shape_rules.py +0 -0
  194. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/tag_rule.py +0 -0
  195. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/facade.py +0 -0
  196. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/__init__.py +0 -0
  197. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/application.py +0 -0
  198. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/domain.py +0 -0
  199. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/__init__.py +0 -0
  200. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/callable_report_entry.py +0 -0
  201. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/callables_report.py +0 -0
  202. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/clusters_report.py +0 -0
  203. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/clusters_report_item.py +0 -0
  204. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/coherence_report.py +0 -0
  205. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/exports_report.py +0 -0
  206. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/exports_report_item.py +0 -0
  207. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/hotspots_report.py +0 -0
  208. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/hotspots_report_item.py +0 -0
  209. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/insight_report.py +0 -0
  210. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/__init__.py +0 -0
  211. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/callables_reporter.py +0 -0
  212. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/clusters_reporter.py +0 -0
  213. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/coherence_reporter.py +0 -0
  214. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/exports_reporter.py +0 -0
  215. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/hotspots_reporter.py +0 -0
  216. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/insight_report_field_map.py +0 -0
  217. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/__init__.py +0 -0
  218. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/application.py +0 -0
  219. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/domain.py +0 -0
  220. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/__init__.py +0 -0
  221. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/architecture_map.py +0 -0
  222. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/architecture_realm.py +0 -0
  223. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/tag_map.py +0 -0
  224. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/tag_match.py +0 -0
  225. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/services/__init__.py +0 -0
  226. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/services/architecture_map_loader.py +0 -0
  227. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/services/tag_matcher.py +0 -0
  228. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/__init__.py +0 -0
  229. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/application.py +0 -0
  230. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/domain.py +0 -0
  231. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/__init__.py +0 -0
  232. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/architecture_group.py +0 -0
  233. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/map_report.py +0 -0
  234. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_catalog.py +0 -0
  235. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_descriptor.py +0 -0
  236. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_item.py +0 -0
  237. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_metadata.py +0 -0
  238. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_node.py +0 -0
  239. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_section.py +0 -0
  240. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/services/__init__.py +0 -0
  241. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/services/map_report_collector.py +0 -0
  242. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/__init__.py +0 -0
  243. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/application.py +0 -0
  244. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/domain.py +0 -0
  245. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/models/__init__.py +0 -0
  246. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/models/shape_realm_architecture_map.py +0 -0
  247. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/models/shape_report.py +0 -0
  248. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/models/shape_violation.py +0 -0
  249. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/__init__.py +0 -0
  250. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/abstract_class_resolver.py +0 -0
  251. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/callable_resolver.py +0 -0
  252. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/class_resolver.py +0 -0
  253. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/file_resolver.py +0 -0
  254. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/import_resolver.py +0 -0
  255. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/property_resolver.py +0 -0
  256. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/signature_resolver.py +0 -0
  257. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/symbol_resolver.py +0 -0
  258. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/autowiring.py +0 -0
  259. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/__init__.py +0 -0
  260. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/documentation/__init__.py +0 -0
  261. {modwire-8.0.0/src/modwire/cli/documentation/models → modwire-9.0.0/src/modwire/cli/documentation/services}/__init__.py +0 -0
  262. {modwire-8.0.0/src/modwire/cli/documentation/services → modwire-9.0.0/src/modwire/cli/initialization}/__init__.py +0 -0
  263. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/initialization/application.py +0 -0
  264. {modwire-8.0.0/src/modwire/cli/initialization → modwire-9.0.0/src/modwire/cli/initialization/models}/__init__.py +0 -0
  265. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/initialization/models/initialization_result.py +0 -0
  266. {modwire-8.0.0/src/modwire/cli/initialization/models → modwire-9.0.0/src/modwire/cli/initialization/services}/__init__.py +0 -0
  267. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/initialization/services/initialization_service.py +0 -0
  268. {modwire-8.0.0/src/modwire/cli/initialization/services → modwire-9.0.0/src/modwire/cli/pipeline}/__init__.py +0 -0
  269. {modwire-8.0.0/src/modwire/cli/pipeline → modwire-9.0.0/src/modwire/cli/pipeline/models}/__init__.py +0 -0
  270. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/command_request.py +0 -0
  271. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/extractor_batch_input.py +0 -0
  272. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/extractor_command_input.py +0 -0
  273. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/extractor_source_input.py +0 -0
  274. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/report_pipeline_context.py +0 -0
  275. {modwire-8.0.0/src/modwire/cli/pipeline/models → modwire-9.0.0/src/modwire/cli/pipeline/services}/__init__.py +0 -0
  276. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/callables_insight.py +0 -0
  277. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/clusters_insight.py +0 -0
  278. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/coherence_insight.py +0 -0
  279. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/command_line.py +0 -0
  280. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/configuration_loader.py +0 -0
  281. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/extractor_command.py +0 -0
  282. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/flow_violations.py +0 -0
  283. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/hotspots_insight.py +0 -0
  284. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/map_tree.py +0 -0
  285. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/output_console.py +0 -0
  286. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/shape_violations.py +0 -0
  287. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/success.py +0 -0
  288. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/unknown_files_warning.py +0 -0
  289. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/unused_exports_insight.py +0 -0
  290. {modwire-8.0.0/src/modwire/cli/pipeline/services → modwire-9.0.0/src/modwire/cli/resources}/__init__.py +0 -0
  291. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/application.py +0 -0
  292. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/models/__init__.py +0 -0
  293. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/models/defaults.py +0 -0
  294. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/models/init_asset.py +0 -0
  295. {modwire-8.0.0/docs/legacy/cli → modwire-9.0.0/src/modwire/cli/resources/templates}/AGENTS.md +0 -0
  296. {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/ARCHITECTURE.md +0 -0
  297. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/templates/INDEX.md +0 -0
  298. {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/MODWIRE.md +0 -0
  299. {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/RULES.md +0 -0
  300. {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/TESTING.md +0 -0
  301. {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/WORKFLOW.md +0 -0
  302. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/templates/architecture.yaml +0 -0
  303. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/__init__.py +0 -0
  304. {modwire-8.0.0/src/modwire/cli/resources → modwire-9.0.0/src/modwire/extraction/dependency}/__init__.py +0 -0
  305. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/dependency/application.py +0 -0
  306. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/dependency/domain.py +0 -0
  307. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/dependency/services}/__init__.py +0 -0
  308. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/dependency/services/graph_builder.py +0 -0
  309. {modwire-8.0.0/src/modwire/cli/resources/extractors/python → modwire-9.0.0/src/modwire/extraction/extractors}/__init__.py +0 -0
  310. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/application.py +0 -0
  311. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/domain.py +0 -0
  312. {modwire-8.0.0/src/modwire/extraction/dependency → modwire-9.0.0/src/modwire/extraction/extractors/models}/__init__.py +0 -0
  313. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/models/batch_config.py +0 -0
  314. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/models/python_call_context.py +0 -0
  315. {modwire-8.0.0/src/modwire/extraction/dependency/services → modwire-9.0.0/src/modwire/extraction/extractors/resources}/__init__.py +0 -0
  316. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/build.php +0 -0
  317. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/composer.json +0 -0
  318. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/composer.lock +0 -0
  319. {modwire-8.0.0/src/modwire/extraction/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources/python}/__init__.py +0 -0
  320. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/python/script.py +0 -0
  321. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/build.mjs +0 -0
  322. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/package-lock.json +0 -0
  323. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/package.json +0 -0
  324. {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/tsconfig.json +0 -0
  325. {modwire-8.0.0/src/modwire/extraction/extractors/models → modwire-9.0.0/src/modwire/extraction/extractors/services}/__init__.py +0 -0
  326. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/python_call_reader.py +0 -0
  327. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/facade.py +0 -0
  328. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/py.typed +0 -0
  329. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/__init__.py +0 -0
  330. {modwire-8.0.0/src/modwire/extraction/extractors/services → modwire-9.0.0/src/modwire/shared/code}/__init__.py +0 -0
  331. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/application.py +0 -0
  332. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/domain.py +0 -0
  333. {modwire-8.0.0/src/modwire/shared/code → modwire-9.0.0/src/modwire/shared/code/models}/__init__.py +0 -0
  334. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/code_package.py +0 -0
  335. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/dependency_edge_result.py +0 -0
  336. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/dependency_graph.py +0 -0
  337. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/dependency_node_result.py +0 -0
  338. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/duplicate_identity_error.py +0 -0
  339. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/edge.py +0 -0
  340. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/edge_resolution.py +0 -0
  341. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/identity.py +0 -0
  342. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/node.py +0 -0
  343. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/query_builder.py +0 -0
  344. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/query_types.py +0 -0
  345. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/queryable_code_map.py +0 -0
  346. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_abstract_class.py +0 -0
  347. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_call.py +0 -0
  348. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_callable.py +0 -0
  349. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_callable_symbol.py +0 -0
  350. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_class.py +0 -0
  351. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_class_method.py +0 -0
  352. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_class_property.py +0 -0
  353. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_export.py +0 -0
  354. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_file.py +0 -0
  355. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_file_result.py +0 -0
  356. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_function.py +0 -0
  357. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_import.py +0 -0
  358. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_imported_symbol.py +0 -0
  359. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_interface.py +0 -0
  360. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_item_result.py +0 -0
  361. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_parameter.py +0 -0
  362. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_signature.py +0 -0
  363. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_symbol.py +0 -0
  364. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_type.py +0 -0
  365. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_value.py +0 -0
  366. {modwire-8.0.0/src/modwire/shared/code/models → modwire-9.0.0/src/modwire/shared/code/services}/__init__.py +0 -0
  367. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/services/glob_path_matcher.py +0 -0
  368. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/services/identity_resolver.py +0 -0
  369. {modwire-8.0.0/src/modwire/shared/code/services → modwire-9.0.0/src/modwire/shared/values}/__init__.py +0 -0
  370. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/values/models/__init__.py +0 -0
  371. {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/values/models/value_model.py +0 -0
  372. {modwire-8.0.0 → modwire-9.0.0}/tests/__init__.py +0 -0
  373. {modwire-8.0.0 → modwire-9.0.0}/tests/application/__init__.py +0 -0
  374. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/__init__.py +0 -0
  375. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/__init__.py +0 -0
  376. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/config/__init__.py +0 -0
  377. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/config/test_01_attacks.py +0 -0
  378. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/config/test_02_invariants.py +0 -0
  379. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/insights/__init__.py +0 -0
  380. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/map/__init__.py +0 -0
  381. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/report/__init__.py +0 -0
  382. {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/shape/__init__.py +0 -0
  383. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/__init__.py +0 -0
  384. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/base_test.py +0 -0
  385. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/documentation/__init__.py +0 -0
  386. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/__init__.py +0 -0
  387. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_01_attacks.py +0 -0
  388. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_02_invariants.py +0 -0
  389. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_03_interruption.py +0 -0
  390. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_04_cleanup.py +0 -0
  391. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_05_recovery.py +0 -0
  392. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/__init__.py +0 -0
  393. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_01_attacks.py +0 -0
  394. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_03_interruption.py +0 -0
  395. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_04_command_transport.py +0 -0
  396. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_05_recovery.py +0 -0
  397. {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_06_happy_path.py +0 -0
  398. {modwire-8.0.0 → modwire-9.0.0}/tests/conftest.py +0 -0
  399. {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/__init__.py +0 -0
  400. {modwire-8.0.0/tests/extraction/dependency → modwire-9.0.0/tests/extraction/big_projects}/__init__.py +0 -0
  401. {modwire-8.0.0/tests/extraction/extractors → modwire-9.0.0/tests/extraction/dependency}/__init__.py +0 -0
  402. {modwire-8.0.0/tests/shared → modwire-9.0.0/tests/extraction/extractors}/__init__.py +0 -0
  403. {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/extractors/test_01_attacks.py +0 -0
  404. {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/extractors/test_02_invariants.py +0 -0
  405. {modwire-8.0.0/tests/shared/code → modwire-9.0.0/tests/extraction/scan_benchmark}/__init__.py +0 -0
  406. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/ignored/example_generated.php +0 -0
  407. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/src/example_application/example_actions/example_action.php +0 -0
  408. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/src/example_domain/example_model/example_record.php +0 -0
  409. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/src/example_domain/example_services/example_policy.php +0 -0
  410. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/src/example_interfaces/example_http/example_controller.php +0 -0
  411. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/ignored/example_generated.py +0 -0
  412. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/src/example_application/example_actions/example_action.py +0 -0
  413. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/src/example_domain/example_model/example_record.py +0 -0
  414. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/src/example_domain/example_services/example_policy.py +0 -0
  415. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/src/example_interfaces/example_http/example_controller.py +0 -0
  416. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/ignored/example_generated.ts +0 -0
  417. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_application/example_actions/example_action.ts +0 -0
  418. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_record.ts +0 -0
  419. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_view.tsx +0 -0
  420. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_audit.js +0 -0
  421. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_callables.ts +0 -0
  422. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_policy.ts +0 -0
  423. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_controller.ts +0 -0
  424. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_view.jsx +0 -0
  425. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/syntax/php/example_shapes.php +0 -0
  426. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/syntax/python/example_shapes.py +0 -0
  427. {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/syntax/typescript/example_shapes.ts +0 -0
  428. {modwire-8.0.0/tests/support → modwire-9.0.0/tests/shared}/__init__.py +0 -0
  429. {modwire-8.0.0 → modwire-9.0.0}/tests/support/base_test.py +0 -0
  430. {modwire-8.0.0 → modwire-9.0.0}/uv.lock +0 -0
@@ -10,75 +10,8 @@ setup.py
10
10
  uv.lock
11
11
  .github/workflows/ci.yml
12
12
  .github/workflows/release.yml
13
- .modwire/architecture.yaml
14
- docs/legacy/architecture/CHANGELOG.md
15
- docs/legacy/architecture/CONTRIBUTING.md
16
- docs/legacy/architecture/LICENSE
17
- docs/legacy/architecture/MANIFEST.in
18
- docs/legacy/architecture/Makefile
19
- docs/legacy/architecture/README.md
20
- docs/legacy/architecture/pyproject.toml
21
- docs/legacy/architecture/.github/workflows/ci.yml
22
- docs/legacy/architecture/.github/workflows/human-approval.yml
23
- docs/legacy/architecture/.github/workflows/issue-metadata-check.yml
24
- docs/legacy/architecture/.github/workflows/issue-metadata.yml
25
- docs/legacy/architecture/.github/workflows/python-package.yml
26
- docs/legacy/architecture/.github/workflows/python-release-assets.yml
27
- docs/legacy/architecture/.github/workflows/python-release-build.yml
28
- docs/legacy/architecture/.github/workflows/release.yml
29
- docs/legacy/architecture/.modwire/boundaries.yaml
30
- docs/legacy/architecture/.modwire/shape.yaml
31
- docs/legacy/architecture/docs/migration-5.md
32
- docs/legacy/architecture/docs/migration-6.md
33
- docs/legacy/architecture/docs/scaffolding/repository-contract-v1.yaml
34
- docs/legacy/architecture/docs/scaffolding/golden/cli.yaml
35
- docs/legacy/architecture/docs/scaffolding/golden/library.yaml
36
- docs/legacy/architecture/docs/wiki/Development-checks.md
37
- docs/legacy/architecture/docs/wiki/Home.md
38
- docs/legacy/architecture/docs/wiki/Reporting-bugs.md
39
- docs/legacy/architecture/docs/wiki/Requesting-features.md
40
- docs/legacy/cli/AGENTS.md
41
- docs/legacy/cli/LICENSE
42
- docs/legacy/cli/Makefile
43
- docs/legacy/cli/README.md
44
- docs/legacy/cli/pyproject.toml
45
- docs/legacy/cli/.github/workflows/ci.yml
46
- docs/legacy/cli/.github/workflows/release.yml
47
- docs/legacy/cli/.modwire/INDEX.md
48
- docs/legacy/cli/.modwire/architecture.yaml
49
- docs/legacy/cli/.modwire/docs/ARCHITECTURE.md
50
- docs/legacy/cli/.modwire/docs/MODWIRE.md
51
- docs/legacy/cli/.modwire/docs/PROJECT.md
52
- docs/legacy/cli/.modwire/docs/RULES.md
53
- docs/legacy/cli/.modwire/docs/TESTING.md
54
- docs/legacy/cli/.modwire/docs/WORKFLOW.md
55
- docs/legacy/extraction/CHANGELOG.md
56
- docs/legacy/extraction/CONTRIBUTING.md
57
- docs/legacy/extraction/LICENSE
58
- docs/legacy/extraction/MANIFEST.in
59
- docs/legacy/extraction/Makefile
60
- docs/legacy/extraction/README.md
61
- docs/legacy/extraction/RELEASE_CHECKLIST.md
62
- docs/legacy/extraction/pyproject.toml
63
- docs/legacy/extraction/.github/workflows/ci.yml
64
- docs/legacy/extraction/.github/workflows/human-approval.yml
65
- docs/legacy/extraction/.github/workflows/release.yml
66
- docs/legacy/extraction/docs/migration-2.md
67
- docs/planning/baselines.json
68
- docs/planning/issues.json
69
- docs/planning/namespace-migration.md
70
- docs/planning/preflight.md
71
- docs/planning/removed-modules.json
72
- docs/planning/report-model-migration.json
73
- docs/planning/source-imports.json
74
- docs/planning/diagrams/01-ownership.md
75
- docs/planning/diagrams/01-ownership.snapshot.json
76
- docs/planning/diagrams/02-issue-dependencies.md
77
- docs/planning/diagrams/02-issue-dependencies.snapshot.json
78
- docs/planning/diagrams/03-release-gates.md
79
- docs/planning/diagrams/03-release-gates.snapshot.json
80
- docs/planning/diagrams/README.md
81
- docs/planning/diagrams/manifest.json
13
+ docs/target-language-ownership.md
14
+ scripts/check_extractors.py
82
15
  scripts/generate_docs.py
83
16
  scripts/verify_consumer.py
84
17
  src/modwire/__init__.py
@@ -181,8 +114,6 @@ src/modwire/cli/__init__.py
181
114
  src/modwire/cli/facade.py
182
115
  src/modwire/cli/documentation/__init__.py
183
116
  src/modwire/cli/documentation/application.py
184
- src/modwire/cli/documentation/models/__init__.py
185
- src/modwire/cli/documentation/models/defaults.py
186
117
  src/modwire/cli/documentation/services/__init__.py
187
118
  src/modwire/cli/documentation/services/documentation_generator.py
188
119
  src/modwire/cli/initialization/__init__.py
@@ -200,6 +131,7 @@ src/modwire/cli/pipeline/models/extractor_batch_input.py
200
131
  src/modwire/cli/pipeline/models/extractor_command_input.py
201
132
  src/modwire/cli/pipeline/models/extractor_source_input.py
202
133
  src/modwire/cli/pipeline/models/report_pipeline_context.py
134
+ src/modwire/cli/pipeline/models/scan_policy.py
203
135
  src/modwire/cli/pipeline/services/__init__.py
204
136
  src/modwire/cli/pipeline/services/batch_source_reader.py
205
137
  src/modwire/cli/pipeline/services/callables_insight.py
@@ -218,20 +150,6 @@ src/modwire/cli/pipeline/services/unknown_files_warning.py
218
150
  src/modwire/cli/pipeline/services/unused_exports_insight.py
219
151
  src/modwire/cli/resources/__init__.py
220
152
  src/modwire/cli/resources/application.py
221
- src/modwire/cli/resources/extractors/__init__.py
222
- src/modwire/cli/resources/extractors/php/build.php
223
- src/modwire/cli/resources/extractors/php/composer.json
224
- src/modwire/cli/resources/extractors/php/composer.lock
225
- src/modwire/cli/resources/extractors/php/script.php
226
- src/modwire/cli/resources/extractors/php/script.src.php
227
- src/modwire/cli/resources/extractors/python/__init__.py
228
- src/modwire/cli/resources/extractors/python/script.py
229
- src/modwire/cli/resources/extractors/typescript/build.mjs
230
- src/modwire/cli/resources/extractors/typescript/package-lock.json
231
- src/modwire/cli/resources/extractors/typescript/package.json
232
- src/modwire/cli/resources/extractors/typescript/script.js
233
- src/modwire/cli/resources/extractors/typescript/script.ts
234
- src/modwire/cli/resources/extractors/typescript/tsconfig.json
235
153
  src/modwire/cli/resources/models/__init__.py
236
154
  src/modwire/cli/resources/models/defaults.py
237
155
  src/modwire/cli/resources/models/init_asset.py
@@ -251,14 +169,32 @@ src/modwire/extraction/dependency/domain.py
251
169
  src/modwire/extraction/dependency/services/__init__.py
252
170
  src/modwire/extraction/dependency/services/graph_builder.py
253
171
  src/modwire/extraction/dependency/services/import_resolver.py
172
+ src/modwire/extraction/dependency/services/suffix_index.py
254
173
  src/modwire/extraction/extractors/__init__.py
255
174
  src/modwire/extraction/extractors/application.py
256
175
  src/modwire/extraction/extractors/domain.py
257
176
  src/modwire/extraction/extractors/models/__init__.py
258
177
  src/modwire/extraction/extractors/models/batch_config.py
259
178
  src/modwire/extraction/extractors/models/extraction_request.py
179
+ src/modwire/extraction/extractors/models/extractor_resource.py
260
180
  src/modwire/extraction/extractors/models/extractor_runtime.py
261
181
  src/modwire/extraction/extractors/models/python_call_context.py
182
+ src/modwire/extraction/extractors/resources/__init__.py
183
+ src/modwire/extraction/extractors/resources/php/build.php
184
+ src/modwire/extraction/extractors/resources/php/build.py
185
+ src/modwire/extraction/extractors/resources/php/composer.json
186
+ src/modwire/extraction/extractors/resources/php/composer.lock
187
+ src/modwire/extraction/extractors/resources/php/script.php
188
+ src/modwire/extraction/extractors/resources/php/script.src.php
189
+ src/modwire/extraction/extractors/resources/python/__init__.py
190
+ src/modwire/extraction/extractors/resources/python/script.py
191
+ src/modwire/extraction/extractors/resources/typescript/build.mjs
192
+ src/modwire/extraction/extractors/resources/typescript/build.py
193
+ src/modwire/extraction/extractors/resources/typescript/package-lock.json
194
+ src/modwire/extraction/extractors/resources/typescript/package.json
195
+ src/modwire/extraction/extractors/resources/typescript/script.js
196
+ src/modwire/extraction/extractors/resources/typescript/script.ts
197
+ src/modwire/extraction/extractors/resources/typescript/tsconfig.json
262
198
  src/modwire/extraction/extractors/services/__init__.py
263
199
  src/modwire/extraction/extractors/services/php_extractor.py
264
200
  src/modwire/extraction/extractors/services/python_call_reader.py
@@ -359,12 +295,22 @@ tests/cli/pipeline/test_05_recovery.py
359
295
  tests/cli/pipeline/test_06_happy_path.py
360
296
  tests/extraction/__init__.py
361
297
  tests/extraction/base_test.py
298
+ tests/extraction/big_projects/__init__.py
299
+ tests/extraction/big_projects/project.py
300
+ tests/extraction/big_projects/projects.json
301
+ tests/extraction/big_projects/resolution_results.json
302
+ tests/extraction/big_projects/results.json
303
+ tests/extraction/big_projects/run.py
362
304
  tests/extraction/dependency/__init__.py
363
305
  tests/extraction/dependency/test_02_invariants.py
364
306
  tests/extraction/extractors/__init__.py
365
307
  tests/extraction/extractors/test_01_attacks.py
366
308
  tests/extraction/extractors/test_02_invariants.py
367
309
  tests/extraction/extractors/test_03_native_symbols.py
310
+ tests/extraction/scan_benchmark/__init__.py
311
+ tests/extraction/scan_benchmark/prepare.py
312
+ tests/extraction/scan_benchmark/results.json
313
+ tests/extraction/scan_benchmark/run.py
368
314
  tests/fixtures/languages/php/ignored/example_generated.php
369
315
  tests/fixtures/languages/php/src/example_application/example_actions/example_action.php
370
316
  tests/fixtures/languages/php/src/example_domain/example_model/example_record.php
@@ -392,4 +338,5 @@ tests/shared/code/__init__.py
392
338
  tests/shared/code/test_02_invariants.py
393
339
  tests/support/__init__.py
394
340
  tests/support/base_test.py
341
+ tests/support/code_map.py
395
342
  tests/support/service_test.py
@@ -10,8 +10,8 @@ permissions:
10
10
  contents: read
11
11
 
12
12
  jobs:
13
- verify:
14
- name: Python ${{ matrix.python-version }}
13
+ package:
14
+ name: Package on Python ${{ matrix.python-version }}
15
15
  runs-on: ubuntu-latest
16
16
  strategy:
17
17
  fail-fast: false
@@ -26,20 +26,11 @@ jobs:
26
26
  python-version: ${{ matrix.python-version }}
27
27
  - run: python -m pip install uv
28
28
  - run: uv sync --all-groups --locked
29
- - run: make python-ci
29
+ - run: make host-check
30
30
 
31
- native-extractors:
32
- name: Native extractors
31
+ extractors:
32
+ name: Extractor resources
33
33
  runs-on: ubuntu-latest
34
34
  steps:
35
35
  - uses: actions/checkout@v6
36
- - uses: actions/setup-node@v6
37
- with:
38
- node-version: "24"
39
- cache: npm
40
- cache-dependency-path: src/modwire/cli/resources/extractors/typescript/package-lock.json
41
- - uses: shivammathur/setup-php@v2
42
- with:
43
- php-version: "8.4"
44
- tools: composer
45
- - run: make native-check
36
+ - run: make extractor-check
@@ -2,8 +2,6 @@ include LICENSE
2
2
  include README.md
3
3
  recursive-include src *.py *.typed *.php *.js *.mjs *.ts *.json *.lock *.md *.yaml
4
4
  recursive-include tests *.py *.json *.ts *.tsx *.js *.jsx *.php
5
- recursive-include docs *.md *.yaml *.json
6
- recursive-include .modwire *.yaml *.md
7
5
  recursive-include scripts *.py
8
6
  prune verification
9
7
  prune .dev
modwire-9.0.0/Makefile ADDED
@@ -0,0 +1,55 @@
1
+ DEV_DIR := .dev
2
+ BUILD_DIR := $(DEV_DIR)/build
3
+ DIST_DIR := $(DEV_DIR)/dist
4
+ EGG_INFO_DIR := src/modwire.egg-info
5
+ PROJECT_ROOT := $(CURDIR)
6
+
7
+ export PYTHONPYCACHEPREFIX := $(PROJECT_ROOT)/$(DEV_DIR)/cache/python
8
+ export UV_CACHE_DIR := $(PROJECT_ROOT)/$(DEV_DIR)/cache/uv
9
+
10
+ .PHONY: big-projects build ci docs docs-check extractor-check format format-check host-check lint package-check scan-benchmark scan-benchmark-fixture test type-check
11
+
12
+ format:
13
+ uv run ruff format src tests scripts
14
+
15
+ format-check:
16
+ uv run ruff format --check src tests scripts
17
+
18
+ lint:
19
+ uv run ruff check src tests scripts
20
+
21
+ type-check:
22
+ uv run pyright src/modwire
23
+
24
+ test:
25
+ mkdir -p $(DEV_DIR)/testing
26
+ uv run pytest
27
+
28
+ big-projects:
29
+ uv run python -m tests.extraction.big_projects.run
30
+
31
+ scan-benchmark-fixture:
32
+ uv run python -m tests.extraction.scan_benchmark.prepare --root .dev/benchmarks/scan-project --source-template "$(SCAN_BENCHMARK_SOURCE)"
33
+
34
+ scan-benchmark:
35
+ uv run python -m tests.extraction.scan_benchmark.run --root .dev/benchmarks/scan-project --language "$(SCAN_BENCHMARK_LANGUAGE)" --excluded-pattern 'example_excluded/**'
36
+
37
+ docs-check:
38
+ uv run python scripts/generate_docs.py --check
39
+
40
+ docs:
41
+ uv run python scripts/generate_docs.py
42
+
43
+ build:
44
+ rm -rf $(BUILD_DIR) $(DIST_DIR) $(EGG_INFO_DIR)
45
+ uv build --out-dir $(DIST_DIR)
46
+
47
+ package-check: build
48
+ uv run twine check $(DIST_DIR)/*
49
+
50
+ extractor-check:
51
+ python3 scripts/check_extractors.py
52
+
53
+ host-check: format-check lint type-check test docs-check package-check
54
+
55
+ ci: host-check extractor-check
modwire-9.0.0/PKG-INFO ADDED
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.4
2
+ Name: modwire
3
+ Version: 9.0.0
4
+ Summary: Code extraction, architecture analysis and the Modwire CLI.
5
+ Author: Tomasz Szpak
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/szpak-dev/modwire
8
+ Project-URL: Repository, https://github.com/szpak-dev/modwire
9
+ Project-URL: Issues, https://github.com/szpak-dev/modwire/issues
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Typing :: Typed
14
+ Requires-Python: >=3.12
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: pydantic>=2.12
18
+ Requires-Dist: pydantic-yaml>=1.7
19
+ Requires-Dist: rich>=13
20
+ Requires-Dist: wireup>=2.12.0
21
+ Provides-Extra: dev
22
+ Requires-Dist: build>=1.3; extra == "dev"
23
+ Requires-Dist: pytest>=9; extra == "dev"
24
+ Requires-Dist: ruff<0.16,>=0.14; extra == "dev"
25
+ Requires-Dist: pyright>=1.1; extra == "dev"
26
+ Requires-Dist: twine>=6; extra == "dev"
27
+ Dynamic: license-file
28
+
29
+ # Modwire
30
+
31
+ ## `ModwireApplication`
32
+
33
+ Public entry point for source discovery, extraction, architecture analysis, and the Modwire CLI.
34
+
35
+ ### `create`
36
+
37
+ Create an isolated application with all services resolved through Wireup.
38
+
39
+ ### `configure`
40
+
41
+ Validate architecture configuration values.
42
+
43
+ ### `catalog`
44
+
45
+ Return the available architecture reports.
46
+
47
+ ### `analyze`
48
+
49
+ Analyze a code map with a validated architecture configuration.
50
+
51
+ ### `discover`
52
+
53
+ Discover supported source languages beneath a root using the caller's scan policy.
54
+
55
+ ### `generate_map`
56
+
57
+ Extract one language and return its code map with honest scan metrics.
58
+
59
+ ``files_excluded`` counts only source files encountered and excluded directly.
60
+ ``directories_pruned`` counts directories rejected before descent; their
61
+ descendants are deliberately unobserved and are not included in file counts.
62
+
63
+ ### `generate_queryable_map`
64
+
65
+ Extract source files and return a queryable code map.
66
+
67
+ ### `load_configuration`
68
+
69
+ Load and validate an architecture configuration from a directory.
70
+
71
+ ### `initialize`
72
+
73
+ Create project-local Modwire configuration and agent guidance.
74
+
75
+ ### `generate_documentation`
76
+
77
+ Generate this README from the published interface docstrings, or check that it is current.
78
+
79
+ ### `run_extractor`
80
+
81
+ Run the native extractor transport for one supported language.
82
+
83
+ ### `run`
84
+
85
+ Run the Modwire command line interface and return its process status.
86
+
87
+ ## `ScanPolicy`
88
+
89
+ Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.
@@ -0,0 +1,61 @@
1
+ # Modwire
2
+
3
+ ## `ModwireApplication`
4
+
5
+ Public entry point for source discovery, extraction, architecture analysis, and the Modwire CLI.
6
+
7
+ ### `create`
8
+
9
+ Create an isolated application with all services resolved through Wireup.
10
+
11
+ ### `configure`
12
+
13
+ Validate architecture configuration values.
14
+
15
+ ### `catalog`
16
+
17
+ Return the available architecture reports.
18
+
19
+ ### `analyze`
20
+
21
+ Analyze a code map with a validated architecture configuration.
22
+
23
+ ### `discover`
24
+
25
+ Discover supported source languages beneath a root using the caller's scan policy.
26
+
27
+ ### `generate_map`
28
+
29
+ Extract one language and return its code map with honest scan metrics.
30
+
31
+ ``files_excluded`` counts only source files encountered and excluded directly.
32
+ ``directories_pruned`` counts directories rejected before descent; their
33
+ descendants are deliberately unobserved and are not included in file counts.
34
+
35
+ ### `generate_queryable_map`
36
+
37
+ Extract source files and return a queryable code map.
38
+
39
+ ### `load_configuration`
40
+
41
+ Load and validate an architecture configuration from a directory.
42
+
43
+ ### `initialize`
44
+
45
+ Create project-local Modwire configuration and agent guidance.
46
+
47
+ ### `generate_documentation`
48
+
49
+ Generate this README from the published interface docstrings, or check that it is current.
50
+
51
+ ### `run_extractor`
52
+
53
+ Run the native extractor transport for one supported language.
54
+
55
+ ### `run`
56
+
57
+ Run the Modwire command line interface and return its process status.
58
+
59
+ ## `ScanPolicy`
60
+
61
+ Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.
@@ -0,0 +1,34 @@
1
+ # Target-language ownership
2
+
3
+ Modwire is hosted and distributed as a Python package. References to Python versions, Python packaging, type checking,
4
+ and Python-based development commands are host concerns rather than analyzed-language behavior.
5
+
6
+ All analyzed-language facts belong to extractor-owned locations:
7
+
8
+ - `src/modwire/extraction/extractors/services/` owns extractor registration, target identity, file extensions, runtime
9
+ commands, parser selection, and batch policy.
10
+ - `src/modwire/extraction/extractors/resources/` owns parser programs, dependency manifests, generated executables,
11
+ and build adapters.
12
+ - `tests/fixtures/languages/` and extractor integration tests own language-specific validation inputs.
13
+ - `tests/extraction/big_projects/projects.json` owns pinned language-specific production fixtures.
14
+
15
+ Shared code, dependency resolution, architecture analysis, traversal, consumer verification, benchmarks, and CI
16
+ orchestration must not contain supported-language tables, runtime commands, extension tables, or language-selection
17
+ branches. Callers select a registered extractor explicitly.
18
+
19
+ ## Shared contract version 2
20
+
21
+ The class-level `CodeMap.schema_version` is `2` while the existing serialized envelope remains stable. Callable kinds
22
+ are `function`, `instance_method`, `type_method`, `static_method`,
23
+ `constructor`, `callable_value`, and `anonymous`. Parameter kinds are `positional`, `variadic_positional`,
24
+ `named_only`, and `variadic_named`.
25
+
26
+ Version 1 serialized maps used extractor-specific callable and parameter vocabulary. They are not accepted as version
27
+ 2 values. Regenerate them from their source with the same registered extractor; persistent reuse does not yet exist,
28
+ so there is no cache migration or silent compatibility alias.
29
+
30
+ ## Adding an extractor
31
+
32
+ Add one automatic Wireup `SourceExtractor` registration, its extractor-owned resources and optional `build.py`
33
+ adapter, and extractor integration fixtures. Package data and the generic build runner discover those resources without
34
+ changes to shared services, CLI traversal, architecture analysis, the top-level Makefile, or CI orchestration.
@@ -43,7 +43,11 @@ exclude = ["*.__pycache__", "*.__pycache__.*"]
43
43
 
44
44
  [tool.setuptools.package-data]
45
45
  "modwire" = ["py.typed"]
46
- "modwire.cli.resources" = ["templates/*", "extractors/php/*", "extractors/typescript/*", "extractors/python/*.py"]
46
+ "modwire.cli.resources" = ["templates/*"]
47
+ "modwire.extraction.extractors.resources" = ["**/*"]
48
+
49
+ [tool.setuptools.exclude-package-data]
50
+ "*" = ["**/__pycache__/*", "**/*.pyc"]
47
51
 
48
52
  [tool.setuptools_scm]
49
53
  tag_regex = '^v(?P<version>\d+\.\d+\.\d+)$'
@@ -0,0 +1,39 @@
1
+ from __future__ import annotations
2
+
3
+ import importlib.util
4
+ import shutil
5
+ from collections.abc import Callable
6
+ from pathlib import Path
7
+ from types import ModuleType
8
+
9
+
10
+ def load_adapter(path: Path) -> ModuleType:
11
+ spec = importlib.util.spec_from_file_location(f"modwire_extractor_build_{path.parent.name}", path)
12
+ if spec is None or spec.loader is None:
13
+ raise RuntimeError(f"Cannot load extractor build adapter: {path}")
14
+ module = importlib.util.module_from_spec(spec)
15
+ spec.loader.exec_module(module)
16
+ return module
17
+
18
+
19
+ def main() -> int:
20
+ repository = Path(__file__).resolve().parents[1]
21
+ resources = repository / "src/modwire/extraction/extractors/resources"
22
+ work_root = repository / ".dev/native"
23
+ adapters = tuple(sorted(resources.glob("*/build.py")))
24
+ if not adapters:
25
+ raise RuntimeError(f"No extractor build adapters found beneath: {resources}")
26
+ for path in adapters:
27
+ work = work_root / path.parent.name
28
+ shutil.rmtree(work, ignore_errors=True)
29
+ adapter = getattr(load_adapter(path), "BuildAdapter", None)
30
+ check = getattr(adapter, "check", None)
31
+ if not callable(check):
32
+ raise RuntimeError(f"Extractor build adapter has no BuildAdapter.check method: {path}")
33
+ typed_check: Callable[[Path, Path], None] = check
34
+ typed_check(path.parent, work)
35
+ return 0
36
+
37
+
38
+ if __name__ == "__main__":
39
+ raise SystemExit(main())
@@ -1,9 +1,10 @@
1
+ import argparse
1
2
  import sys
2
3
 
3
4
  from wireup import create_sync_container, injectable
4
5
  from wireup.errors import UnknownServiceRequestedError
5
6
 
6
- from modwire.application import ModwireApplication
7
+ from modwire.application import ModwireApplication, ScanPolicy
7
8
 
8
9
 
9
10
  @injectable
@@ -24,9 +25,14 @@ try:
24
25
  finally:
25
26
  container.close()
26
27
 
28
+ parser = argparse.ArgumentParser()
29
+ parser.add_argument("root")
30
+ parser.add_argument("--language", required=True)
31
+ arguments = parser.parse_args()
32
+
27
33
  application = ModwireApplication.create()
28
34
  config = application.configure({"shape": {"realms": [{"name": "example-source", "match": "src"}]}})
29
- code_map = application.generate_queryable_map("python", sys.argv[1], ())
35
+ code_map = application.generate_queryable_map(arguments.language, arguments.root, ScanPolicy())
30
36
  reports = application.analyze(code_map, config)
31
37
  assert code_map.files().count() == 1
32
38
  assert len(reports) == 4
@@ -11,19 +11,26 @@ from .architecture.facade import ArchitectureFacade
11
11
  from .architecture.report.models.report_catalog import ReportCatalog
12
12
  from .architecture.report.models.report_node import ReportNode
13
13
  from .cli.facade import CliFacade
14
+ from .cli.pipeline.models.scan_policy import ScanPolicy
14
15
  from .extraction.facade import ExtractionFacade
15
16
  from .shared.code.models.code_map import CodeMap
16
17
  from .shared.code.models.queryable_code_map import QueryableCodeMap
17
18
 
19
+ __all__ = ["CodeMap", "ModwireApplication", "QueryableCodeMap", "ScanPolicy"]
20
+
18
21
 
19
22
  @dataclass(frozen=True)
20
23
  class ModwireApplication:
24
+ """Public entry point for source discovery, extraction, architecture analysis, and the Modwire CLI."""
25
+
21
26
  architecture: ArchitectureFacade
22
27
  cli: CliFacade
23
28
  extraction: ExtractionFacade
24
29
 
25
30
  @classmethod
26
31
  def create(cls) -> Self:
32
+ """Create an isolated application with all services resolved through Wireup."""
33
+
27
34
  container = create_sync_container(injectables=[modwire])
28
35
  try:
29
36
  return cls(
@@ -35,43 +42,66 @@ class ModwireApplication:
35
42
  container.close()
36
43
 
37
44
  def configure(self, values: Mapping[str, object]) -> ArchitectureConfig:
45
+ """Validate architecture configuration values."""
46
+
38
47
  return self.architecture.configure(values)
39
48
 
40
49
  def catalog(self) -> ReportCatalog:
50
+ """Return the available architecture reports."""
51
+
41
52
  return self.architecture.catalog()
42
53
 
43
54
  def analyze(self, code_map: QueryableCodeMap, config: ArchitectureConfig) -> tuple[ReportNode, ...]:
55
+ """Analyze a code map with a validated architecture configuration."""
56
+
44
57
  return self.architecture.analyze(code_map, config)
45
58
 
46
- def discover(self, root: str, excluded_patterns: tuple[str, ...]) -> tuple[str, ...]:
59
+ def discover(self, root: str, policy: ScanPolicy) -> tuple[str, ...]:
60
+ """Discover supported source languages beneath a root using the caller's scan policy."""
61
+
47
62
  return tuple(
48
63
  language
49
64
  for language in self.extraction.supported_languages()
50
- if self.cli.has_source_files(
51
- self.extraction.request(language, str(root)).model_copy(update={"excluded_patterns": excluded_patterns})
52
- )
65
+ if self.cli.has_source_files(self.extraction.request(language, str(root)), policy)
53
66
  )
54
67
 
55
- def generate_map(self, language: str, root: str, excluded_patterns: tuple[str, ...]) -> CodeMap:
56
- request = self.extraction.request(language, str(root)).model_copy(
57
- update={"excluded_patterns": excluded_patterns}
58
- )
59
- return self.extraction.generate_map(language, self.cli.extract(request))
68
+ def generate_map(self, language: str, root: str, policy: ScanPolicy) -> CodeMap:
69
+ """Extract one language and return its code map with honest scan metrics.
60
70
 
61
- def generate_queryable_map(self, language: str, root: str, excluded_patterns: tuple[str, ...]) -> QueryableCodeMap:
62
- return QueryableCodeMap(code_map=self.generate_map(language, root, excluded_patterns))
71
+ ``files_excluded`` counts only source files encountered and excluded directly.
72
+ ``directories_pruned`` counts directories rejected before descent; their
73
+ descendants are deliberately unobserved and are not included in file counts.
74
+ """
75
+
76
+ request = self.extraction.request(language, str(root))
77
+ return self.extraction.generate_map(language, self.cli.extract(request, policy))
78
+
79
+ def generate_queryable_map(self, language: str, root: str, policy: ScanPolicy) -> QueryableCodeMap:
80
+ """Extract source files and return a queryable code map."""
81
+
82
+ return QueryableCodeMap(code_map=self.generate_map(language, root, policy))
63
83
 
64
84
  def load_configuration(self, dot_dir: str) -> ArchitectureConfig:
85
+ """Load and validate an architecture configuration from a directory."""
86
+
65
87
  return self.cli.load_configuration(str(dot_dir))
66
88
 
67
89
  def initialize(self, root: str, dot_dir: str, force: bool) -> int:
90
+ """Create project-local Modwire configuration and agent guidance."""
91
+
68
92
  return self.cli.initialize(str(root), str(dot_dir), force)
69
93
 
70
94
  def generate_documentation(self, readme: str, check: bool) -> int:
71
- return self.cli.generate_documentation(str(readme), check)
95
+ """Generate this README from the published interface docstrings, or check that it is current."""
96
+
97
+ return self.cli.generate_documentation(str(readme), (type(self), ScanPolicy), check)
72
98
 
73
99
  def run_extractor(self, language: str) -> int:
100
+ """Run the native extractor transport for one supported language."""
101
+
74
102
  return self.cli.run_extractor(language)
75
103
 
76
104
  def run(self, argv: Sequence[str]) -> int:
105
+ """Run the Modwire command line interface and return its process status."""
106
+
77
107
  return self.cli.run(argv)
@@ -11,8 +11,8 @@ from .services.documentation_generator import DocumentationGenerator
11
11
  class DocumentationApplication:
12
12
  generator: DocumentationGenerator
13
13
 
14
- def generate(self, readme: Path, check: bool) -> int:
15
- if self.generator.update(readme, check):
14
+ def generate(self, readme: Path, public_interfaces: tuple[type[object], ...], check: bool) -> int:
15
+ if self.generator.update(readme, public_interfaces, check):
16
16
  return 0
17
17
  if check:
18
18
  print("Generated documentation is stale. Run `make docs` and commit the result.")