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.
- {modwire-8.0.0 → modwire-9.0.0}/.dev/modwire.egg-info/SOURCES.txt +32 -85
- {modwire-8.0.0 → modwire-9.0.0}/.github/workflows/ci.yml +6 -15
- {modwire-8.0.0 → modwire-9.0.0}/MANIFEST.in +0 -2
- modwire-9.0.0/Makefile +55 -0
- modwire-9.0.0/PKG-INFO +89 -0
- modwire-9.0.0/README.md +61 -0
- modwire-9.0.0/docs/target-language-ownership.md +34 -0
- {modwire-8.0.0 → modwire-9.0.0}/pyproject.toml +5 -1
- modwire-9.0.0/scripts/check_extractors.py +39 -0
- {modwire-8.0.0 → modwire-9.0.0}/scripts/verify_consumer.py +8 -2
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/application.py +42 -12
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/documentation/application.py +2 -2
- modwire-9.0.0/src/modwire/cli/documentation/services/documentation_generator.py +37 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/facade.py +9 -9
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/application.py +5 -4
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/domain.py +3 -2
- modwire-9.0.0/src/modwire/cli/pipeline/models/scan_policy.py +8 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/batch_source_reader.py +42 -52
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/dependency/services/import_resolver.py +9 -27
- modwire-9.0.0/src/modwire/extraction/dependency/services/suffix_index.py +30 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/models/extraction_request.py +0 -1
- modwire-9.0.0/src/modwire/extraction/extractors/models/extractor_resource.py +6 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/models/extractor_runtime.py +2 -1
- modwire-9.0.0/src/modwire/extraction/extractors/resources/php/build.py +27 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/script.php +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/script.src.php +2 -2
- modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/build.py +23 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/script.js +2 -2
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/script.ts +2 -2
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/php_extractor.py +6 -1
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/python_extractor.py +6 -1
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/python_syntax_parser.py +7 -7
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/type_script_extractor.py +2 -1
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/code_map.py +2 -1
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_extraction.py +1 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/types.py +2 -2
- {modwire-8.0.0 → modwire-9.0.0}/tests/application/base_test.py +3 -1
- {modwire-8.0.0 → modwire-9.0.0}/tests/application/test_01_attacks.py +1 -1
- {modwire-8.0.0 → modwire-9.0.0}/tests/application/test_06_happy_path.py +1 -1
- modwire-9.0.0/tests/architecture/base_test.py +13 -0
- modwire-9.0.0/tests/architecture/boundaries/base_test.py +38 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/test_01_attacks.py +5 -5
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/test_02_invariants.py +6 -6
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/test_03_public_api.py +2 -2
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/test_04_paths.py +5 -5
- modwire-9.0.0/tests/architecture/insights/base_test.py +12 -0
- modwire-9.0.0/tests/architecture/insights/test_02_invariants.py +79 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/map/test_02_patterns.py +20 -9
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/report/test_02_invariants.py +5 -3
- modwire-9.0.0/tests/architecture/shape/base_test.py +7 -0
- modwire-9.0.0/tests/architecture/shape/test_01_limits.py +126 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/shape/test_02_invariants.py +9 -5
- modwire-9.0.0/tests/cli/documentation/test_02_invariants.py +19 -0
- modwire-9.0.0/tests/cli/pipeline/base_test.py +24 -0
- modwire-9.0.0/tests/cli/pipeline/test_02_invariants.py +115 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/base_test.py +1 -1
- modwire-9.0.0/tests/extraction/big_projects/project.py +19 -0
- modwire-9.0.0/tests/extraction/big_projects/projects.json +32 -0
- modwire-9.0.0/tests/extraction/big_projects/resolution_results.json +50 -0
- modwire-9.0.0/tests/extraction/big_projects/results.json +20 -0
- modwire-9.0.0/tests/extraction/big_projects/run.py +210 -0
- modwire-9.0.0/tests/extraction/dependency/test_02_invariants.py +107 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/extractors/test_03_native_symbols.py +5 -5
- modwire-9.0.0/tests/extraction/scan_benchmark/prepare.py +68 -0
- modwire-9.0.0/tests/extraction/scan_benchmark/results.json +46 -0
- modwire-9.0.0/tests/extraction/scan_benchmark/run.py +93 -0
- modwire-9.0.0/tests/shared/code/__init__.py +0 -0
- modwire-9.0.0/tests/shared/code/test_02_invariants.py +67 -0
- modwire-9.0.0/tests/support/__init__.py +0 -0
- modwire-9.0.0/tests/support/code_map.py +163 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/support/service_test.py +7 -1
- modwire-8.0.0/.modwire/architecture.yaml +0 -122
- modwire-8.0.0/Makefile +0 -65
- modwire-8.0.0/PKG-INFO +0 -57
- modwire-8.0.0/README.md +0 -29
- modwire-8.0.0/docs/legacy/architecture/.github/workflows/ci.yml +0 -15
- modwire-8.0.0/docs/legacy/architecture/.github/workflows/human-approval.yml +0 -133
- modwire-8.0.0/docs/legacy/architecture/.github/workflows/issue-metadata-check.yml +0 -17
- modwire-8.0.0/docs/legacy/architecture/.github/workflows/issue-metadata.yml +0 -87
- modwire-8.0.0/docs/legacy/architecture/.github/workflows/python-package.yml +0 -84
- modwire-8.0.0/docs/legacy/architecture/.github/workflows/python-release-assets.yml +0 -36
- modwire-8.0.0/docs/legacy/architecture/.github/workflows/python-release-build.yml +0 -86
- modwire-8.0.0/docs/legacy/architecture/.github/workflows/release.yml +0 -47
- modwire-8.0.0/docs/legacy/architecture/.modwire/boundaries.yaml +0 -44
- modwire-8.0.0/docs/legacy/architecture/.modwire/shape.yaml +0 -9
- modwire-8.0.0/docs/legacy/architecture/CHANGELOG.md +0 -140
- modwire-8.0.0/docs/legacy/architecture/CONTRIBUTING.md +0 -38
- modwire-8.0.0/docs/legacy/architecture/LICENSE +0 -21
- modwire-8.0.0/docs/legacy/architecture/MANIFEST.in +0 -2
- modwire-8.0.0/docs/legacy/architecture/Makefile +0 -7
- modwire-8.0.0/docs/legacy/architecture/README.md +0 -105
- modwire-8.0.0/docs/legacy/architecture/docs/migration-5.md +0 -52
- modwire-8.0.0/docs/legacy/architecture/docs/migration-6.md +0 -32
- modwire-8.0.0/docs/legacy/architecture/docs/scaffolding/golden/cli.yaml +0 -44
- modwire-8.0.0/docs/legacy/architecture/docs/scaffolding/golden/library.yaml +0 -40
- modwire-8.0.0/docs/legacy/architecture/docs/scaffolding/repository-contract-v1.yaml +0 -147
- modwire-8.0.0/docs/legacy/architecture/docs/wiki/Development-checks.md +0 -25
- modwire-8.0.0/docs/legacy/architecture/docs/wiki/Home.md +0 -27
- modwire-8.0.0/docs/legacy/architecture/docs/wiki/Reporting-bugs.md +0 -24
- modwire-8.0.0/docs/legacy/architecture/docs/wiki/Requesting-features.md +0 -26
- modwire-8.0.0/docs/legacy/architecture/pyproject.toml +0 -88
- modwire-8.0.0/docs/legacy/cli/.github/workflows/ci.yml +0 -17
- modwire-8.0.0/docs/legacy/cli/.github/workflows/release.yml +0 -40
- modwire-8.0.0/docs/legacy/cli/.modwire/INDEX.md +0 -10
- modwire-8.0.0/docs/legacy/cli/.modwire/architecture.yaml +0 -42
- modwire-8.0.0/docs/legacy/cli/.modwire/docs/PROJECT.md +0 -16
- modwire-8.0.0/docs/legacy/cli/LICENSE +0 -21
- modwire-8.0.0/docs/legacy/cli/Makefile +0 -14
- modwire-8.0.0/docs/legacy/cli/README.md +0 -73
- modwire-8.0.0/docs/legacy/cli/pyproject.toml +0 -85
- modwire-8.0.0/docs/legacy/extraction/.github/workflows/ci.yml +0 -50
- modwire-8.0.0/docs/legacy/extraction/.github/workflows/human-approval.yml +0 -133
- modwire-8.0.0/docs/legacy/extraction/.github/workflows/release.yml +0 -40
- modwire-8.0.0/docs/legacy/extraction/CHANGELOG.md +0 -68
- modwire-8.0.0/docs/legacy/extraction/CONTRIBUTING.md +0 -85
- modwire-8.0.0/docs/legacy/extraction/LICENSE +0 -21
- modwire-8.0.0/docs/legacy/extraction/MANIFEST.in +0 -6
- modwire-8.0.0/docs/legacy/extraction/Makefile +0 -4
- modwire-8.0.0/docs/legacy/extraction/README.md +0 -73
- modwire-8.0.0/docs/legacy/extraction/RELEASE_CHECKLIST.md +0 -40
- modwire-8.0.0/docs/legacy/extraction/docs/migration-2.md +0 -59
- modwire-8.0.0/docs/legacy/extraction/pyproject.toml +0 -94
- modwire-8.0.0/docs/planning/baselines.json +0 -35
- modwire-8.0.0/docs/planning/diagrams/01-ownership.md +0 -32
- modwire-8.0.0/docs/planning/diagrams/01-ownership.snapshot.json +0 -201
- modwire-8.0.0/docs/planning/diagrams/02-issue-dependencies.md +0 -45
- modwire-8.0.0/docs/planning/diagrams/02-issue-dependencies.snapshot.json +0 -336
- modwire-8.0.0/docs/planning/diagrams/03-release-gates.md +0 -39
- modwire-8.0.0/docs/planning/diagrams/03-release-gates.snapshot.json +0 -280
- modwire-8.0.0/docs/planning/diagrams/README.md +0 -11
- modwire-8.0.0/docs/planning/diagrams/manifest.json +0 -28
- modwire-8.0.0/docs/planning/issues.json +0 -107
- modwire-8.0.0/docs/planning/namespace-migration.md +0 -17
- modwire-8.0.0/docs/planning/preflight.md +0 -64
- modwire-8.0.0/docs/planning/removed-modules.json +0 -16
- modwire-8.0.0/docs/planning/report-model-migration.json +0 -11
- modwire-8.0.0/docs/planning/source-imports.json +0 -1070
- modwire-8.0.0/src/modwire/cli/documentation/models/defaults.py +0 -6
- modwire-8.0.0/src/modwire/cli/documentation/services/documentation_generator.py +0 -43
- modwire-8.0.0/src/modwire/cli/resources/templates/AGENTS.md +0 -1
- modwire-8.0.0/src/modwire/cli/resources/templates/ARCHITECTURE.md +0 -49
- modwire-8.0.0/src/modwire/cli/resources/templates/MODWIRE.md +0 -5
- modwire-8.0.0/src/modwire/cli/resources/templates/RULES.md +0 -6
- modwire-8.0.0/src/modwire/cli/resources/templates/TESTING.md +0 -7
- modwire-8.0.0/src/modwire/cli/resources/templates/WORKFLOW.md +0 -8
- modwire-8.0.0/src/modwire/shared/values/__init__.py +0 -1
- modwire-8.0.0/tests/architecture/base_test.py +0 -22
- modwire-8.0.0/tests/architecture/boundaries/base_test.py +0 -8
- modwire-8.0.0/tests/architecture/insights/base_test.py +0 -7
- modwire-8.0.0/tests/architecture/insights/test_02_invariants.py +0 -64
- modwire-8.0.0/tests/architecture/shape/base_test.py +0 -6
- modwire-8.0.0/tests/architecture/shape/test_01_limits.py +0 -68
- modwire-8.0.0/tests/cli/documentation/test_02_invariants.py +0 -32
- modwire-8.0.0/tests/cli/pipeline/base_test.py +0 -14
- modwire-8.0.0/tests/cli/pipeline/test_02_invariants.py +0 -60
- modwire-8.0.0/tests/extraction/dependency/test_02_invariants.py +0 -41
- modwire-8.0.0/tests/shared/code/test_02_invariants.py +0 -52
- {modwire-8.0.0 → modwire-9.0.0}/.github/workflows/release.yml +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/.gitignore +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/AGENTS.md +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/LICENSE +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/scripts/generate_docs.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/setup.cfg +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/setup.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/__main__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/domain.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/edge_rule_violation.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/flow_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/flow_violation.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/models/types.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/backward_flow_analyzer.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/boundaries_flow_analyzer.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/module_boundary_analyzer.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/no_cycles_flow_analyzer.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/boundaries/services/no_reentry_flow_analyzer.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/architecture_config.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/boundaries_config.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/boundary_rule.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/configuration_value.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/flow_realm.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/flow_rules.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/shape_config.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/shape_realm.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/shape_rules.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/config/models/tag_rule.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/facade.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/domain.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/callable_report_entry.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/callables_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/clusters_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/clusters_report_item.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/coherence_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/exports_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/exports_report_item.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/hotspots_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/hotspots_report_item.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/models/insight_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/callables_reporter.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/clusters_reporter.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/coherence_reporter.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/exports_reporter.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/hotspots_reporter.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/insights/services/insight_report_field_map.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/domain.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/architecture_map.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/architecture_realm.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/tag_map.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/models/tag_match.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/services/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/services/architecture_map_loader.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/map/services/tag_matcher.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/domain.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/architecture_group.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/map_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_catalog.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_descriptor.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_item.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_metadata.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_node.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/models/report_section.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/services/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/report/services/map_report_collector.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/domain.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/models/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/models/shape_realm_architecture_map.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/models/shape_report.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/models/shape_violation.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/abstract_class_resolver.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/callable_resolver.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/class_resolver.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/file_resolver.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/import_resolver.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/property_resolver.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/signature_resolver.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/architecture/shape/services/symbol_resolver.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/autowiring.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/documentation/__init__.py +0 -0
- {modwire-8.0.0/src/modwire/cli/documentation/models → modwire-9.0.0/src/modwire/cli/documentation/services}/__init__.py +0 -0
- {modwire-8.0.0/src/modwire/cli/documentation/services → modwire-9.0.0/src/modwire/cli/initialization}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/initialization/application.py +0 -0
- {modwire-8.0.0/src/modwire/cli/initialization → modwire-9.0.0/src/modwire/cli/initialization/models}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/initialization/models/initialization_result.py +0 -0
- {modwire-8.0.0/src/modwire/cli/initialization/models → modwire-9.0.0/src/modwire/cli/initialization/services}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/initialization/services/initialization_service.py +0 -0
- {modwire-8.0.0/src/modwire/cli/initialization/services → modwire-9.0.0/src/modwire/cli/pipeline}/__init__.py +0 -0
- {modwire-8.0.0/src/modwire/cli/pipeline → modwire-9.0.0/src/modwire/cli/pipeline/models}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/command_request.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/extractor_batch_input.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/extractor_command_input.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/extractor_source_input.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/models/report_pipeline_context.py +0 -0
- {modwire-8.0.0/src/modwire/cli/pipeline/models → modwire-9.0.0/src/modwire/cli/pipeline/services}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/callables_insight.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/clusters_insight.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/coherence_insight.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/command_line.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/configuration_loader.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/extractor_command.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/flow_violations.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/hotspots_insight.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/map_tree.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/output_console.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/shape_violations.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/success.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/unknown_files_warning.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/pipeline/services/unused_exports_insight.py +0 -0
- {modwire-8.0.0/src/modwire/cli/pipeline/services → modwire-9.0.0/src/modwire/cli/resources}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/models/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/models/defaults.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/models/init_asset.py +0 -0
- {modwire-8.0.0/docs/legacy/cli → modwire-9.0.0/src/modwire/cli/resources/templates}/AGENTS.md +0 -0
- {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/ARCHITECTURE.md +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/templates/INDEX.md +0 -0
- {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/MODWIRE.md +0 -0
- {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/RULES.md +0 -0
- {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/TESTING.md +0 -0
- {modwire-8.0.0/docs/legacy/cli/.modwire/docs → modwire-9.0.0/src/modwire/cli/resources/templates}/WORKFLOW.md +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/cli/resources/templates/architecture.yaml +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/__init__.py +0 -0
- {modwire-8.0.0/src/modwire/cli/resources → modwire-9.0.0/src/modwire/extraction/dependency}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/dependency/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/dependency/domain.py +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/dependency/services}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/dependency/services/graph_builder.py +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors/python → modwire-9.0.0/src/modwire/extraction/extractors}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/domain.py +0 -0
- {modwire-8.0.0/src/modwire/extraction/dependency → modwire-9.0.0/src/modwire/extraction/extractors/models}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/models/batch_config.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/models/python_call_context.py +0 -0
- {modwire-8.0.0/src/modwire/extraction/dependency/services → modwire-9.0.0/src/modwire/extraction/extractors/resources}/__init__.py +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/build.php +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/composer.json +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/php/composer.lock +0 -0
- {modwire-8.0.0/src/modwire/extraction/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources/python}/__init__.py +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/python/script.py +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/build.mjs +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/package-lock.json +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/package.json +0 -0
- {modwire-8.0.0/src/modwire/cli/resources/extractors → modwire-9.0.0/src/modwire/extraction/extractors/resources}/typescript/tsconfig.json +0 -0
- {modwire-8.0.0/src/modwire/extraction/extractors/models → modwire-9.0.0/src/modwire/extraction/extractors/services}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/extractors/services/python_call_reader.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/extraction/facade.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/py.typed +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/__init__.py +0 -0
- {modwire-8.0.0/src/modwire/extraction/extractors/services → modwire-9.0.0/src/modwire/shared/code}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/application.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/domain.py +0 -0
- {modwire-8.0.0/src/modwire/shared/code → modwire-9.0.0/src/modwire/shared/code/models}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/code_package.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/dependency_edge_result.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/dependency_graph.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/dependency_node_result.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/duplicate_identity_error.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/edge.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/edge_resolution.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/identity.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/node.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/query_builder.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/query_types.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/queryable_code_map.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_abstract_class.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_call.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_callable.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_callable_symbol.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_class.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_class_method.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_class_property.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_export.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_file.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_file_result.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_function.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_import.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_imported_symbol.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_interface.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_item_result.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_parameter.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_signature.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_symbol.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_type.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/models/source_value.py +0 -0
- {modwire-8.0.0/src/modwire/shared/code/models → modwire-9.0.0/src/modwire/shared/code/services}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/services/glob_path_matcher.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/code/services/identity_resolver.py +0 -0
- {modwire-8.0.0/src/modwire/shared/code/services → modwire-9.0.0/src/modwire/shared/values}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/values/models/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/src/modwire/shared/values/models/value_model.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/application/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/boundaries/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/config/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/config/test_01_attacks.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/config/test_02_invariants.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/insights/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/map/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/report/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/architecture/shape/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/base_test.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/documentation/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_01_attacks.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_02_invariants.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_03_interruption.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_04_cleanup.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/initialization/test_05_recovery.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_01_attacks.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_03_interruption.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_04_command_transport.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_05_recovery.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/cli/pipeline/test_06_happy_path.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/conftest.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/__init__.py +0 -0
- {modwire-8.0.0/tests/extraction/dependency → modwire-9.0.0/tests/extraction/big_projects}/__init__.py +0 -0
- {modwire-8.0.0/tests/extraction/extractors → modwire-9.0.0/tests/extraction/dependency}/__init__.py +0 -0
- {modwire-8.0.0/tests/shared → modwire-9.0.0/tests/extraction/extractors}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/extractors/test_01_attacks.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/extraction/extractors/test_02_invariants.py +0 -0
- {modwire-8.0.0/tests/shared/code → modwire-9.0.0/tests/extraction/scan_benchmark}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/ignored/example_generated.php +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/src/example_application/example_actions/example_action.php +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/src/example_domain/example_model/example_record.php +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/src/example_domain/example_services/example_policy.php +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/php/src/example_interfaces/example_http/example_controller.php +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/ignored/example_generated.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/src/example_application/example_actions/example_action.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/src/example_domain/example_model/example_record.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/src/example_domain/example_services/example_policy.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/python/src/example_interfaces/example_http/example_controller.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/ignored/example_generated.ts +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_application/example_actions/example_action.ts +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_record.ts +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_view.tsx +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_audit.js +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_callables.ts +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_policy.ts +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_controller.ts +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_view.jsx +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/syntax/php/example_shapes.php +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/syntax/python/example_shapes.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/fixtures/syntax/typescript/example_shapes.ts +0 -0
- {modwire-8.0.0/tests/support → modwire-9.0.0/tests/shared}/__init__.py +0 -0
- {modwire-8.0.0 → modwire-9.0.0}/tests/support/base_test.py +0 -0
- {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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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
|
|
29
|
+
- run: make host-check
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
name:
|
|
31
|
+
extractors:
|
|
32
|
+
name: Extractor resources
|
|
33
33
|
runs-on: ubuntu-latest
|
|
34
34
|
steps:
|
|
35
35
|
- uses: actions/checkout@v6
|
|
36
|
-
-
|
|
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.
|
modwire-9.0.0/README.md
ADDED
|
@@ -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/*"
|
|
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(
|
|
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,
|
|
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,
|
|
56
|
-
|
|
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
|
-
|
|
62
|
-
|
|
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
|
-
|
|
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.")
|