modwire 2.1.0__tar.gz → 2.2.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 (92) hide show
  1. modwire-2.2.0/.github/workflows/large-repo-fixtures.yml +88 -0
  2. {modwire-2.1.0 → modwire-2.2.0}/PKG-INFO +1 -1
  3. {modwire-2.1.0 → modwire-2.2.0}/pyproject.toml +3 -2
  4. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/_version.py +3 -3
  5. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extraction/manifest.py +5 -4
  6. modwire-2.2.0/src/modwire/extractors/base.py +781 -0
  7. modwire-2.2.0/src/modwire/extractors/php.py +348 -0
  8. modwire-2.2.0/src/modwire/extractors/python.py +472 -0
  9. modwire-2.2.0/src/modwire/extractors/resources.py +29 -0
  10. modwire-2.2.0/src/modwire/extractors/scripts/__init__.py +2 -0
  11. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extractors/scripts/php_extractor.php +25 -1
  12. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extractors/scripts/typescript_extractor.js +29 -3
  13. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extractors/typescript.py +27 -6
  14. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/metadata.py +16 -20
  15. {modwire-2.1.0 → modwire-2.2.0}/src/modwire.egg-info/PKG-INFO +1 -1
  16. {modwire-2.1.0 → modwire-2.2.0}/src/modwire.egg-info/SOURCES.txt +7 -1
  17. modwire-2.2.0/tests/large_projects/README.md +47 -0
  18. modwire-2.2.0/tests/large_projects/fixtures.json +242 -0
  19. modwire-2.2.0/tests/large_projects/run_large_project_fixtures.py +534 -0
  20. {modwire-2.1.0 → modwire-2.2.0}/tests/test_api.py +204 -34
  21. modwire-2.1.0/src/modwire/extractors/base.py +0 -356
  22. modwire-2.1.0/src/modwire/extractors/php.py +0 -199
  23. modwire-2.1.0/src/modwire/extractors/python.py +0 -150
  24. {modwire-2.1.0 → modwire-2.2.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  25. {modwire-2.1.0 → modwire-2.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  26. {modwire-2.1.0 → modwire-2.2.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  27. {modwire-2.1.0 → modwire-2.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  28. {modwire-2.1.0 → modwire-2.2.0}/.github/workflows/ci.yml +0 -0
  29. {modwire-2.1.0 → modwire-2.2.0}/.github/workflows/release.yml +0 -0
  30. {modwire-2.1.0 → modwire-2.2.0}/.gitignore +0 -0
  31. {modwire-2.1.0 → modwire-2.2.0}/CONTRIBUTING.md +0 -0
  32. {modwire-2.1.0 → modwire-2.2.0}/LICENSE +0 -0
  33. {modwire-2.1.0 → modwire-2.2.0}/README.md +0 -0
  34. {modwire-2.1.0 → modwire-2.2.0}/docs/wiki/Development-checks.md +0 -0
  35. {modwire-2.1.0 → modwire-2.2.0}/docs/wiki/Home.md +0 -0
  36. {modwire-2.1.0 → modwire-2.2.0}/docs/wiki/Reporting-bugs.md +0 -0
  37. {modwire-2.1.0 → modwire-2.2.0}/docs/wiki/Requesting-features.md +0 -0
  38. {modwire-2.1.0 → modwire-2.2.0}/setup.cfg +0 -0
  39. {modwire-2.1.0 → modwire-2.2.0}/show_test_source_files.py +0 -0
  40. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/__init__.py +0 -0
  41. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/architecture/__init__.py +0 -0
  42. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/architecture/analyzers.py +0 -0
  43. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/architecture/config.py +0 -0
  44. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/architecture/insights.py +0 -0
  45. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/architecture/matching.py +0 -0
  46. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/architecture/policy.py +0 -0
  47. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/architecture/render.py +0 -0
  48. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/architecture/violations.py +0 -0
  49. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/callables.py +0 -0
  50. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/definitions.py +0 -0
  51. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/exports.py +0 -0
  52. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extraction/__init__.py +0 -0
  53. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extraction/cache.py +0 -0
  54. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extraction/models.py +0 -0
  55. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extraction/roots.py +0 -0
  56. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extraction/serialization.py +0 -0
  57. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extraction/service.py +0 -0
  58. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extractors/__init__.py +0 -0
  59. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extractors/loader.py +0 -0
  60. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/extractors/scripts/python_extractor.py +0 -0
  61. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/graph.py +0 -0
  62. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/shape/__init__.py +0 -0
  63. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/shape/config.py +0 -0
  64. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/shape/evaluator.py +0 -0
  65. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/shape/rules.py +0 -0
  66. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/shape/violations.py +0 -0
  67. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/testing/__init__.py +0 -0
  68. {modwire-2.1.0 → modwire-2.2.0}/src/modwire/testing/factories.py +0 -0
  69. {modwire-2.1.0 → modwire-2.2.0}/src/modwire.egg-info/dependency_links.txt +0 -0
  70. {modwire-2.1.0 → modwire-2.2.0}/src/modwire.egg-info/requires.txt +0 -0
  71. {modwire-2.1.0 → modwire-2.2.0}/src/modwire.egg-info/top_level.txt +0 -0
  72. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/php/ignored/generated.php +0 -0
  73. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/php/src/application/use_cases/activate.php +0 -0
  74. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/php/src/domain/model/user.php +0 -0
  75. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/php/src/domain/services/policy.php +0 -0
  76. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/php/src/interfaces/http/controller.php +0 -0
  77. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/python/ignored/generated.py +0 -0
  78. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/python/src/application/use_cases/activate.py +0 -0
  79. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/python/src/domain/model/user.py +0 -0
  80. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/python/src/domain/services/policy.py +0 -0
  81. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/python/src/interfaces/http/controller.py +0 -0
  82. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/typescript/ignored/generated.ts +0 -0
  83. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/typescript/src/application/use_cases/activate.ts +0 -0
  84. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/typescript/src/domain/model/profile.tsx +0 -0
  85. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/typescript/src/domain/model/user.ts +0 -0
  86. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/typescript/src/domain/services/audit.js +0 -0
  87. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/typescript/src/domain/services/policy.ts +0 -0
  88. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/typescript/src/interfaces/http/controller.ts +0 -0
  89. {modwire-2.1.0 → modwire-2.2.0}/tests/apps/typescript/src/interfaces/http/view.jsx +0 -0
  90. {modwire-2.1.0 → modwire-2.2.0}/tests/test_architecture_api.py +0 -0
  91. {modwire-2.1.0 → modwire-2.2.0}/tests/test_standalone.py +0 -0
  92. {modwire-2.1.0 → modwire-2.2.0}/uv.lock +0 -0
@@ -0,0 +1,88 @@
1
+ name: Large Repository Fixtures
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ fixture:
7
+ description: "Fixture id to run, or all."
8
+ required: true
9
+ default: "all"
10
+ type: choice
11
+ options:
12
+ - all
13
+ - django
14
+ - ansible
15
+ - salt
16
+ - vscode
17
+ - angular
18
+ - typescript
19
+ - wordpress
20
+ - drupal
21
+ - moodle
22
+ mode:
23
+ description: "Fixture execution mode."
24
+ required: true
25
+ default: "enclosure"
26
+ type: choice
27
+ options:
28
+ - enclosure
29
+ - modwire
30
+ - both
31
+ command-timeout:
32
+ description: "Seconds allowed for each enclosure command."
33
+ required: true
34
+ default: "60"
35
+ schedule:
36
+ - cron: "17 3 * * 0"
37
+
38
+ jobs:
39
+ large-fixture:
40
+ name: ${{ matrix.fixture }}
41
+ runs-on: ubuntu-latest
42
+ timeout-minutes: 60
43
+ if: github.event_name != 'workflow_dispatch' || inputs.fixture == 'all' || inputs.fixture == matrix.fixture
44
+ strategy:
45
+ fail-fast: false
46
+ matrix:
47
+ fixture:
48
+ - django
49
+ - ansible
50
+ - salt
51
+ - vscode
52
+ - angular
53
+ - typescript
54
+ - wordpress
55
+ - drupal
56
+ - moodle
57
+
58
+ steps:
59
+ - name: Check out repository
60
+ uses: actions/checkout@v4
61
+
62
+ - name: Set up Python
63
+ uses: actions/setup-python@v5
64
+ with:
65
+ python-version: "3.13"
66
+
67
+ - name: Set up Node.js
68
+ uses: actions/setup-node@v4
69
+ with:
70
+ node-version: "20"
71
+
72
+ - name: Set up PHP
73
+ uses: shivammathur/setup-php@v2
74
+ with:
75
+ php-version: "8.3"
76
+
77
+ - name: Install enclosure and local modwire
78
+ run: |
79
+ python -m pip install --upgrade pip
80
+ python -m pip install "enclosure @ git+https://github.com/9orky/enclosure.git"
81
+ python -m pip install -e .
82
+
83
+ - name: Run large fixture
84
+ run: >
85
+ python tests/large_projects/run_large_project_fixtures.py
86
+ --fixture "${{ matrix.fixture }}"
87
+ --mode "${{ github.event_name == 'workflow_dispatch' && inputs.mode || 'enclosure' }}"
88
+ --command-timeout "${{ github.event_name == 'workflow_dispatch' && inputs['command-timeout'] || '60' }}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modwire
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Extract source-code dependencies and build dependency graphs.
5
5
  Author: Tomasz Szpak
6
6
  License-Expression: MIT
@@ -72,8 +72,9 @@ include-package-data = true
72
72
  where = ["src"]
73
73
 
74
74
  [tool.setuptools.package-data]
75
- modwire = [
76
- "extractors/scripts/*",
75
+ "modwire.extractors.scripts" = [
76
+ "*.js",
77
+ "*.php",
77
78
  ]
78
79
 
79
80
  [tool.setuptools_scm]
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.1.0'
22
- __version_tuple__ = version_tuple = (2, 1, 0)
21
+ __version__ = version = '2.2.0'
22
+ __version_tuple__ = version_tuple = (2, 2, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g54f33f5a3'
24
+ __commit_id__ = commit_id = 'gc116aabfa'
@@ -8,6 +8,7 @@ from pathlib import Path
8
8
  from .._version import __version__
9
9
  from ..extractors import load_extractor
10
10
  from ..extractors.base import _collect_extraction_targets
11
+ from ..extractors.resources import extractor_script_path
11
12
  from .models import SourceManifest, SourceManifestEntry
12
13
  from .roots import (
13
14
  DEFAULT_SOURCE_ROOTS,
@@ -57,14 +58,14 @@ def discover_sources(
57
58
  mtime_ns=stat.st_mtime_ns,
58
59
  )
59
60
  )
60
- extractor_path = (
61
- Path(__file__).parents[1] / "extractors" / "scripts" / extractor.extractor_file
62
- ).resolve()
63
61
  runtime_path = shutil.which(extractor.command) or ""
64
62
  runtime_mtime_ns = 0
65
63
  if runtime_path != "":
66
64
  runtime_mtime_ns = Path(runtime_path).stat().st_mtime_ns
67
65
 
66
+ with extractor_script_path(extractor.extractor_file) as extractor_path:
67
+ extractor_mtime_ns = extractor_path.stat().st_mtime_ns
68
+
68
69
  return SourceManifest(
69
70
  language=language,
70
71
  workspace_root=(
@@ -83,7 +84,7 @@ def discover_sources(
83
84
  runtime_mtime_ns=runtime_mtime_ns,
84
85
  extractor_file=extractor.extractor_file,
85
86
  extractor_path=extractor_path,
86
- extractor_mtime_ns=extractor_path.stat().st_mtime_ns,
87
+ extractor_mtime_ns=extractor_mtime_ns,
87
88
  modwire_version=__version__,
88
89
  files_found=files_found,
89
90
  files_checked=len(entries),