drupal-scout 3.0.0__tar.gz → 3.0.2__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 (38) hide show
  1. {drupal_scout-3.0.0/drupal_scout.egg-info → drupal_scout-3.0.2}/PKG-INFO +74 -29
  2. drupal_scout-3.0.2/README.md +109 -0
  3. drupal_scout-3.0.2/drupal_scout/tests/conftest.py +20 -0
  4. {drupal_scout-3.0.0 → drupal_scout-3.0.2/drupal_scout.egg-info}/PKG-INFO +74 -29
  5. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout.egg-info/SOURCES.txt +1 -0
  6. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout.egg-info/requires.txt +1 -0
  7. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout.egg-info/top_level.txt +0 -1
  8. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/pyproject.toml +2 -1
  9. drupal_scout-3.0.0/README.md +0 -65
  10. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/LICENSE.txt +0 -0
  11. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/bin/drupal-scout +0 -0
  12. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/__init__.py +0 -0
  13. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/application.py +0 -0
  14. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/exceptions.py +0 -0
  15. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/formatters/__init__.py +0 -0
  16. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/formatters/formatter.py +0 -0
  17. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/formatters/formatterfactory.py +0 -0
  18. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/formatters/jsonformatter.py +0 -0
  19. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/formatters/suggestformatter.py +0 -0
  20. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/formatters/tableformatter.py +0 -0
  21. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/mcp_server.py +0 -0
  22. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/module.py +0 -0
  23. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/output.py +0 -0
  24. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/__init__.py +0 -0
  25. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_application.py +0 -0
  26. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_exceptions.py +0 -0
  27. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_formatterfactory.py +0 -0
  28. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_jsonformatter.py +0 -0
  29. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_mcp_server.py +0 -0
  30. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_suggestformatter.py +0 -0
  31. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_tableformatter.py +0 -0
  32. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_worker.py +0 -0
  33. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/tests/test_workers_manager.py +0 -0
  34. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/worker.py +0 -0
  35. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout/workers_manager.py +0 -0
  36. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout.egg-info/dependency_links.txt +0 -0
  37. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/drupal_scout.egg-info/entry_points.txt +0 -0
  38. {drupal_scout-3.0.0 → drupal_scout-3.0.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drupal-scout
3
- Version: 3.0.0
3
+ Version: 3.0.2
4
4
  Summary: Scout out for transitive versions of Drupal modules for the upgrade of the core.
5
5
  Author-email: "Andrew [R-Tech] Tsyhaniuk" <in0mad91@gmail.com>
6
6
  License: MIT License
@@ -47,6 +47,7 @@ Requires-Dist: packaging
47
47
  Requires-Dist: fastmcp
48
48
  Requires-Dist: rich>=15.0.0
49
49
  Provides-Extra: dev
50
+ Requires-Dist: pytest; extra == "dev"
50
51
  Requires-Dist: nose; extra == "dev"
51
52
  Requires-Dist: coverage; extra == "dev"
52
53
  Requires-Dist: pipdeptree; extra == "dev"
@@ -57,66 +58,110 @@ Dynamic: license-file
57
58
 
58
59
  # Drupal Scout
59
60
 
60
- Search for Drupal module entries with transitive core version requirements to help to upgrade the Drupal Core
61
+ Search for Drupal module entries with transitive core version requirements to help to upgrade the Drupal Core.
61
62
 
62
63
  ## Installation
63
64
 
65
+ ### Using uv (Recommended)
66
+
67
+ ```bash
68
+ uv tool install drupal-scout
69
+ ```
70
+
71
+ Or run directly without installing:
72
+
73
+ ```bash
74
+ uvx drupal-scout --help
75
+ ```
76
+
77
+ ### Using pip
78
+
79
+ ```bash
80
+ pip install drupal-scout
81
+ ```
82
+
83
+ ## Quick Start
84
+
85
+ Get a compatibility report for your current Drupal project:
86
+
87
+ ```bash
88
+ drupal-scout
89
+ ```
90
+
91
+ Scan a specific module for Drupal 11 compatibility:
92
+
64
93
  ```bash
65
- pip install drupal-scout
94
+ drupal-scout --core 11.0.0 --modules drupal/webform
66
95
  ```
67
96
 
68
97
  ## Features
69
98
 
70
- - Use asyncio concurrency to speed up the process of searching for Drupal module entries with transitive core version requirements.
71
- - Quick self-diagnostic check of the environment and dependencies using the `info` command.
72
- - Choose between three output formats: table, json, and suggest.
73
- - `table` format will output the data in the table format.
74
- Example:
75
- ![Table format example](https://raw.githubusercontent.com/rtech91/drupal-scout/main/screenshots/format_table_example.png)
76
- - `json` format will output the raw data in the json format.
77
- - `suggest` format will output the suggested composer.json file with the updated module version requirements.
78
- It will also dump the suggested composer.json file to the specified path if the `--save-dump` argument is used.
99
+ - **Asyncio Concurrency**: High-performance parallel module scanning using `asyncio` to speed up dependency analysis.
100
+ - **Rich TUI Integration**: Beautiful terminal output with structured tables and real-time progress bars powered by the `rich` library.
101
+ - **MCP Server Support**: Built-in [Model Context Protocol](https://modelcontextprotocol.io/) server for integration with AI IDEs (like Claude Desktop or Cursor).
102
+ - **Environment Diagnostics**: Quick self-diagnostic check of the environment and dependencies using the `info` command.
103
+ - **Multiple Output Formats**:
104
+ - `table`: High-fidelity color-coded table for human readability.
105
+ - `json`: Machine-readable raw data for automation scripts.
106
+ - `suggest`: Generates a suggested `composer.json` with updated version requirements.
79
107
 
80
108
  ## Limitations
81
109
 
82
- - The application will only work with Composer-based (Composer v2) Drupal 8+ projects.
110
+ - **Python 3.11+**: The application requires Python 3.11 or higher.
111
+ - **Composer v2**: The application works with **Composer-based (Composer v2)** Drupal 8+ projects.
83
112
 
84
113
  ## Usage/Examples
85
114
 
86
- `drupal-scout [-h] [-v] [-d DIRECTORY] [-n] [-l LIMIT] [-f {table,json,suggest}] [-s] [-c CORE] [-m MODULES [MODULES ...]] {info} ...`
115
+ ```bash
116
+ drupal-scout [-h] [-v] [-d DIRECTORY] [-n] [-l LIMIT] [-f {table,json,suggest}] [-s] [-c CORE] [-m MODULES [MODULES ...]] {info} ...
117
+ ```
87
118
 
88
119
  ### Arguments
89
- &dash; `-h, --help` show this help message and exit
90
- &ndash; `-v, --version` show program's version number and exit
91
- &ndash; `-d DIRECTORY, --directory DIRECTORY` Directory of the Drupal installation
92
- &ndash; `-n, --no-lock` Do not use the composer.lock file to determine the installed versions of the modules
93
- &ndash; `-l LIMIT, --limit LIMIT` The concurrency limit for async requests and data parsing. By default, the application uses all available CPU cores.
94
- &ndash; `-f {table,json,suggest}, --format {table,json,suggest}` The output format. By default, the application will use the table format.
95
- &ndash; `-s, --save-dump` Use in pair with `--format suggest` to dump the suggested composer.json file to the specified path.
96
- &ndash; `-c CORE, --core CORE` Optional core version override for targeted scans. If omitted with `--modules`, core is auto-detected from composer metadata in `--directory`.
97
- &ndash; `-m MODULES [MODULES ...], --modules MODULES [MODULES ...]` Scan only specific modules. When used, full environment module discovery is skipped. If `composer.lock` exists and `--no-lock` is not set, installed versions are still used for downgrade protection.
120
+
121
+ - `-h, --help`: Show help message and exit.
122
+ - `-v, --version`: Show program's version number and exit.
123
+ - `-d DIRECTORY, --directory DIRECTORY`: Directory of the Drupal installation (default: `.`).
124
+ - `-n, --no-lock`: Do not use the `composer.lock` file to determine installed versions.
125
+ - `-l LIMIT, --limit LIMIT`: Concurrency limit for async requests. Default is `10`.
126
+ - `-f {table,json,suggest}, --format {table,json,suggest}`: Output format (default: `table`).
127
+ - `-s, --save-dump`: Use with `--format suggest` to save the suggested `composer.json` to disk.
128
+ - `-c CORE, --core CORE`: Optional Drupal core version override (e.g., `10.0.0`).
129
+ - `-m MODULES [MODULES ...], --modules MODULES [MODULES ...]`: Scan only specific modules, skipping full project discovery.
98
130
 
99
131
  ### Subcommands
100
- &ndash; `info` - show diagnostic information about the tool and the current Drupal environment.
132
+
133
+ - `info`: Show diagnostic information about the tool, `jq` availability, and the current Drupal environment.
134
+
135
+ ### MCP Server Usage
136
+
137
+ To use Drupal Scout as an MCP server in your AI assistant:
138
+
139
+ ```bash
140
+ drupal-scout-mcp
141
+ ```
142
+
143
+ Or with `uvx`:
144
+
145
+ ```bash
146
+ uvx --from drupal-scout drupal-scout-mcp
147
+ ```
101
148
 
102
149
  ### Targeted Scan Examples
103
150
 
104
- Scan one specific module with explicit core version:
151
+ Scan one specific module with an explicit core version:
105
152
 
106
153
  ```bash
107
154
  drupal-scout --core 10.0.0 --modules drupal/webform
108
155
  ```
109
156
 
110
- Scan multiple specific modules and output JSON:
157
+ Scan multiple modules and output JSON:
111
158
 
112
159
  ```bash
113
160
  drupal-scout --core 10.0.0 --modules drupal/webform drupal/ctools --format json
114
161
  ```
115
162
 
116
- Scan targeted modules with auto-detected core from local `composer.lock`/`composer.json` in directory:
163
+ Scan modules with auto-detected core from a local directory:
117
164
 
118
165
  ```bash
119
166
  drupal-scout --directory /path/to/drupal --modules drupal/webform
120
167
  ```
121
-
122
- If core cannot be auto-detected, provide `--core` explicitly.
@@ -0,0 +1,109 @@
1
+ # Drupal Scout
2
+
3
+ Search for Drupal module entries with transitive core version requirements to help to upgrade the Drupal Core.
4
+
5
+ ## Installation
6
+
7
+ ### Using uv (Recommended)
8
+
9
+ ```bash
10
+ uv tool install drupal-scout
11
+ ```
12
+
13
+ Or run directly without installing:
14
+
15
+ ```bash
16
+ uvx drupal-scout --help
17
+ ```
18
+
19
+ ### Using pip
20
+
21
+ ```bash
22
+ pip install drupal-scout
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ Get a compatibility report for your current Drupal project:
28
+
29
+ ```bash
30
+ drupal-scout
31
+ ```
32
+
33
+ Scan a specific module for Drupal 11 compatibility:
34
+
35
+ ```bash
36
+ drupal-scout --core 11.0.0 --modules drupal/webform
37
+ ```
38
+
39
+ ## Features
40
+
41
+ - **Asyncio Concurrency**: High-performance parallel module scanning using `asyncio` to speed up dependency analysis.
42
+ - **Rich TUI Integration**: Beautiful terminal output with structured tables and real-time progress bars powered by the `rich` library.
43
+ - **MCP Server Support**: Built-in [Model Context Protocol](https://modelcontextprotocol.io/) server for integration with AI IDEs (like Claude Desktop or Cursor).
44
+ - **Environment Diagnostics**: Quick self-diagnostic check of the environment and dependencies using the `info` command.
45
+ - **Multiple Output Formats**:
46
+ - `table`: High-fidelity color-coded table for human readability.
47
+ - `json`: Machine-readable raw data for automation scripts.
48
+ - `suggest`: Generates a suggested `composer.json` with updated version requirements.
49
+
50
+ ## Limitations
51
+
52
+ - **Python 3.11+**: The application requires Python 3.11 or higher.
53
+ - **Composer v2**: The application works with **Composer-based (Composer v2)** Drupal 8+ projects.
54
+
55
+ ## Usage/Examples
56
+
57
+ ```bash
58
+ drupal-scout [-h] [-v] [-d DIRECTORY] [-n] [-l LIMIT] [-f {table,json,suggest}] [-s] [-c CORE] [-m MODULES [MODULES ...]] {info} ...
59
+ ```
60
+
61
+ ### Arguments
62
+
63
+ - `-h, --help`: Show help message and exit.
64
+ - `-v, --version`: Show program's version number and exit.
65
+ - `-d DIRECTORY, --directory DIRECTORY`: Directory of the Drupal installation (default: `.`).
66
+ - `-n, --no-lock`: Do not use the `composer.lock` file to determine installed versions.
67
+ - `-l LIMIT, --limit LIMIT`: Concurrency limit for async requests. Default is `10`.
68
+ - `-f {table,json,suggest}, --format {table,json,suggest}`: Output format (default: `table`).
69
+ - `-s, --save-dump`: Use with `--format suggest` to save the suggested `composer.json` to disk.
70
+ - `-c CORE, --core CORE`: Optional Drupal core version override (e.g., `10.0.0`).
71
+ - `-m MODULES [MODULES ...], --modules MODULES [MODULES ...]`: Scan only specific modules, skipping full project discovery.
72
+
73
+ ### Subcommands
74
+
75
+ - `info`: Show diagnostic information about the tool, `jq` availability, and the current Drupal environment.
76
+
77
+ ### MCP Server Usage
78
+
79
+ To use Drupal Scout as an MCP server in your AI assistant:
80
+
81
+ ```bash
82
+ drupal-scout-mcp
83
+ ```
84
+
85
+ Or with `uvx`:
86
+
87
+ ```bash
88
+ uvx --from drupal-scout drupal-scout-mcp
89
+ ```
90
+
91
+ ### Targeted Scan Examples
92
+
93
+ Scan one specific module with an explicit core version:
94
+
95
+ ```bash
96
+ drupal-scout --core 10.0.0 --modules drupal/webform
97
+ ```
98
+
99
+ Scan multiple modules and output JSON:
100
+
101
+ ```bash
102
+ drupal-scout --core 10.0.0 --modules drupal/webform drupal/ctools --format json
103
+ ```
104
+
105
+ Scan modules with auto-detected core from a local directory:
106
+
107
+ ```bash
108
+ drupal-scout --directory /path/to/drupal --modules drupal/webform
109
+ ```
@@ -0,0 +1,20 @@
1
+ import pytest
2
+ from unittest.mock import Mock
3
+ from aiohttp.client_reqrep import ClientResponse
4
+
5
+
6
+ @pytest.fixture(autouse=True, scope="session")
7
+ def _patch_aiohttp_clientresponse_init_stream_writer():
8
+ """Ensure tests remain compatible with aiohttp >= 3.14 when stream_writer is required."""
9
+
10
+ original_init = ClientResponse.__init__
11
+
12
+ def patched_init(self, *args, **kwargs):
13
+ kwargs.setdefault("stream_writer", Mock())
14
+ return original_init(self, *args, **kwargs)
15
+
16
+ ClientResponse.__init__ = patched_init # type: ignore[method-assign]
17
+ try:
18
+ yield
19
+ finally:
20
+ ClientResponse.__init__ = original_init # type: ignore[method-assign]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drupal-scout
3
- Version: 3.0.0
3
+ Version: 3.0.2
4
4
  Summary: Scout out for transitive versions of Drupal modules for the upgrade of the core.
5
5
  Author-email: "Andrew [R-Tech] Tsyhaniuk" <in0mad91@gmail.com>
6
6
  License: MIT License
@@ -47,6 +47,7 @@ Requires-Dist: packaging
47
47
  Requires-Dist: fastmcp
48
48
  Requires-Dist: rich>=15.0.0
49
49
  Provides-Extra: dev
50
+ Requires-Dist: pytest; extra == "dev"
50
51
  Requires-Dist: nose; extra == "dev"
51
52
  Requires-Dist: coverage; extra == "dev"
52
53
  Requires-Dist: pipdeptree; extra == "dev"
@@ -57,66 +58,110 @@ Dynamic: license-file
57
58
 
58
59
  # Drupal Scout
59
60
 
60
- Search for Drupal module entries with transitive core version requirements to help to upgrade the Drupal Core
61
+ Search for Drupal module entries with transitive core version requirements to help to upgrade the Drupal Core.
61
62
 
62
63
  ## Installation
63
64
 
65
+ ### Using uv (Recommended)
66
+
67
+ ```bash
68
+ uv tool install drupal-scout
69
+ ```
70
+
71
+ Or run directly without installing:
72
+
73
+ ```bash
74
+ uvx drupal-scout --help
75
+ ```
76
+
77
+ ### Using pip
78
+
79
+ ```bash
80
+ pip install drupal-scout
81
+ ```
82
+
83
+ ## Quick Start
84
+
85
+ Get a compatibility report for your current Drupal project:
86
+
87
+ ```bash
88
+ drupal-scout
89
+ ```
90
+
91
+ Scan a specific module for Drupal 11 compatibility:
92
+
64
93
  ```bash
65
- pip install drupal-scout
94
+ drupal-scout --core 11.0.0 --modules drupal/webform
66
95
  ```
67
96
 
68
97
  ## Features
69
98
 
70
- - Use asyncio concurrency to speed up the process of searching for Drupal module entries with transitive core version requirements.
71
- - Quick self-diagnostic check of the environment and dependencies using the `info` command.
72
- - Choose between three output formats: table, json, and suggest.
73
- - `table` format will output the data in the table format.
74
- Example:
75
- ![Table format example](https://raw.githubusercontent.com/rtech91/drupal-scout/main/screenshots/format_table_example.png)
76
- - `json` format will output the raw data in the json format.
77
- - `suggest` format will output the suggested composer.json file with the updated module version requirements.
78
- It will also dump the suggested composer.json file to the specified path if the `--save-dump` argument is used.
99
+ - **Asyncio Concurrency**: High-performance parallel module scanning using `asyncio` to speed up dependency analysis.
100
+ - **Rich TUI Integration**: Beautiful terminal output with structured tables and real-time progress bars powered by the `rich` library.
101
+ - **MCP Server Support**: Built-in [Model Context Protocol](https://modelcontextprotocol.io/) server for integration with AI IDEs (like Claude Desktop or Cursor).
102
+ - **Environment Diagnostics**: Quick self-diagnostic check of the environment and dependencies using the `info` command.
103
+ - **Multiple Output Formats**:
104
+ - `table`: High-fidelity color-coded table for human readability.
105
+ - `json`: Machine-readable raw data for automation scripts.
106
+ - `suggest`: Generates a suggested `composer.json` with updated version requirements.
79
107
 
80
108
  ## Limitations
81
109
 
82
- - The application will only work with Composer-based (Composer v2) Drupal 8+ projects.
110
+ - **Python 3.11+**: The application requires Python 3.11 or higher.
111
+ - **Composer v2**: The application works with **Composer-based (Composer v2)** Drupal 8+ projects.
83
112
 
84
113
  ## Usage/Examples
85
114
 
86
- `drupal-scout [-h] [-v] [-d DIRECTORY] [-n] [-l LIMIT] [-f {table,json,suggest}] [-s] [-c CORE] [-m MODULES [MODULES ...]] {info} ...`
115
+ ```bash
116
+ drupal-scout [-h] [-v] [-d DIRECTORY] [-n] [-l LIMIT] [-f {table,json,suggest}] [-s] [-c CORE] [-m MODULES [MODULES ...]] {info} ...
117
+ ```
87
118
 
88
119
  ### Arguments
89
- &dash; `-h, --help` show this help message and exit
90
- &ndash; `-v, --version` show program's version number and exit
91
- &ndash; `-d DIRECTORY, --directory DIRECTORY` Directory of the Drupal installation
92
- &ndash; `-n, --no-lock` Do not use the composer.lock file to determine the installed versions of the modules
93
- &ndash; `-l LIMIT, --limit LIMIT` The concurrency limit for async requests and data parsing. By default, the application uses all available CPU cores.
94
- &ndash; `-f {table,json,suggest}, --format {table,json,suggest}` The output format. By default, the application will use the table format.
95
- &ndash; `-s, --save-dump` Use in pair with `--format suggest` to dump the suggested composer.json file to the specified path.
96
- &ndash; `-c CORE, --core CORE` Optional core version override for targeted scans. If omitted with `--modules`, core is auto-detected from composer metadata in `--directory`.
97
- &ndash; `-m MODULES [MODULES ...], --modules MODULES [MODULES ...]` Scan only specific modules. When used, full environment module discovery is skipped. If `composer.lock` exists and `--no-lock` is not set, installed versions are still used for downgrade protection.
120
+
121
+ - `-h, --help`: Show help message and exit.
122
+ - `-v, --version`: Show program's version number and exit.
123
+ - `-d DIRECTORY, --directory DIRECTORY`: Directory of the Drupal installation (default: `.`).
124
+ - `-n, --no-lock`: Do not use the `composer.lock` file to determine installed versions.
125
+ - `-l LIMIT, --limit LIMIT`: Concurrency limit for async requests. Default is `10`.
126
+ - `-f {table,json,suggest}, --format {table,json,suggest}`: Output format (default: `table`).
127
+ - `-s, --save-dump`: Use with `--format suggest` to save the suggested `composer.json` to disk.
128
+ - `-c CORE, --core CORE`: Optional Drupal core version override (e.g., `10.0.0`).
129
+ - `-m MODULES [MODULES ...], --modules MODULES [MODULES ...]`: Scan only specific modules, skipping full project discovery.
98
130
 
99
131
  ### Subcommands
100
- &ndash; `info` - show diagnostic information about the tool and the current Drupal environment.
132
+
133
+ - `info`: Show diagnostic information about the tool, `jq` availability, and the current Drupal environment.
134
+
135
+ ### MCP Server Usage
136
+
137
+ To use Drupal Scout as an MCP server in your AI assistant:
138
+
139
+ ```bash
140
+ drupal-scout-mcp
141
+ ```
142
+
143
+ Or with `uvx`:
144
+
145
+ ```bash
146
+ uvx --from drupal-scout drupal-scout-mcp
147
+ ```
101
148
 
102
149
  ### Targeted Scan Examples
103
150
 
104
- Scan one specific module with explicit core version:
151
+ Scan one specific module with an explicit core version:
105
152
 
106
153
  ```bash
107
154
  drupal-scout --core 10.0.0 --modules drupal/webform
108
155
  ```
109
156
 
110
- Scan multiple specific modules and output JSON:
157
+ Scan multiple modules and output JSON:
111
158
 
112
159
  ```bash
113
160
  drupal-scout --core 10.0.0 --modules drupal/webform drupal/ctools --format json
114
161
  ```
115
162
 
116
- Scan targeted modules with auto-detected core from local `composer.lock`/`composer.json` in directory:
163
+ Scan modules with auto-detected core from a local directory:
117
164
 
118
165
  ```bash
119
166
  drupal-scout --directory /path/to/drupal --modules drupal/webform
120
167
  ```
121
-
122
- If core cannot be auto-detected, provide `--core` explicitly.
@@ -23,6 +23,7 @@ drupal_scout/formatters/jsonformatter.py
23
23
  drupal_scout/formatters/suggestformatter.py
24
24
  drupal_scout/formatters/tableformatter.py
25
25
  drupal_scout/tests/__init__.py
26
+ drupal_scout/tests/conftest.py
26
27
  drupal_scout/tests/test_application.py
27
28
  drupal_scout/tests/test_exceptions.py
28
29
  drupal_scout/tests/test_formatterfactory.py
@@ -6,6 +6,7 @@ fastmcp
6
6
  rich>=15.0.0
7
7
 
8
8
  [dev]
9
+ pytest
9
10
  nose
10
11
  coverage
11
12
  pipdeptree
@@ -1,4 +1,3 @@
1
1
  bin
2
2
  dist
3
3
  drupal_scout
4
- screenshots
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drupal-scout"
3
- version = "3.0.0"
3
+ version = "3.0.2"
4
4
  description = "Scout out for transitive versions of Drupal modules for the upgrade of the core."
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE.txt" }
@@ -29,6 +29,7 @@ dependencies = [
29
29
 
30
30
  [project.optional-dependencies]
31
31
  dev = [
32
+ 'pytest',
32
33
  'nose',
33
34
  'coverage',
34
35
  'pipdeptree',
@@ -1,65 +0,0 @@
1
- # Drupal Scout
2
-
3
- Search for Drupal module entries with transitive core version requirements to help to upgrade the Drupal Core
4
-
5
- ## Installation
6
-
7
- ```bash
8
- pip install drupal-scout
9
- ```
10
-
11
- ## Features
12
-
13
- - Use asyncio concurrency to speed up the process of searching for Drupal module entries with transitive core version requirements.
14
- - Quick self-diagnostic check of the environment and dependencies using the `info` command.
15
- - Choose between three output formats: table, json, and suggest.
16
- - `table` format will output the data in the table format.
17
- Example:
18
- ![Table format example](https://raw.githubusercontent.com/rtech91/drupal-scout/main/screenshots/format_table_example.png)
19
- - `json` format will output the raw data in the json format.
20
- - `suggest` format will output the suggested composer.json file with the updated module version requirements.
21
- It will also dump the suggested composer.json file to the specified path if the `--save-dump` argument is used.
22
-
23
- ## Limitations
24
-
25
- - The application will only work with Composer-based (Composer v2) Drupal 8+ projects.
26
-
27
- ## Usage/Examples
28
-
29
- `drupal-scout [-h] [-v] [-d DIRECTORY] [-n] [-l LIMIT] [-f {table,json,suggest}] [-s] [-c CORE] [-m MODULES [MODULES ...]] {info} ...`
30
-
31
- ### Arguments
32
- &dash; `-h, --help` show this help message and exit
33
- &ndash; `-v, --version` show program's version number and exit
34
- &ndash; `-d DIRECTORY, --directory DIRECTORY` Directory of the Drupal installation
35
- &ndash; `-n, --no-lock` Do not use the composer.lock file to determine the installed versions of the modules
36
- &ndash; `-l LIMIT, --limit LIMIT` The concurrency limit for async requests and data parsing. By default, the application uses all available CPU cores.
37
- &ndash; `-f {table,json,suggest}, --format {table,json,suggest}` The output format. By default, the application will use the table format.
38
- &ndash; `-s, --save-dump` Use in pair with `--format suggest` to dump the suggested composer.json file to the specified path.
39
- &ndash; `-c CORE, --core CORE` Optional core version override for targeted scans. If omitted with `--modules`, core is auto-detected from composer metadata in `--directory`.
40
- &ndash; `-m MODULES [MODULES ...], --modules MODULES [MODULES ...]` Scan only specific modules. When used, full environment module discovery is skipped. If `composer.lock` exists and `--no-lock` is not set, installed versions are still used for downgrade protection.
41
-
42
- ### Subcommands
43
- &ndash; `info` - show diagnostic information about the tool and the current Drupal environment.
44
-
45
- ### Targeted Scan Examples
46
-
47
- Scan one specific module with explicit core version:
48
-
49
- ```bash
50
- drupal-scout --core 10.0.0 --modules drupal/webform
51
- ```
52
-
53
- Scan multiple specific modules and output JSON:
54
-
55
- ```bash
56
- drupal-scout --core 10.0.0 --modules drupal/webform drupal/ctools --format json
57
- ```
58
-
59
- Scan targeted modules with auto-detected core from local `composer.lock`/`composer.json` in directory:
60
-
61
- ```bash
62
- drupal-scout --directory /path/to/drupal --modules drupal/webform
63
- ```
64
-
65
- If core cannot be auto-detected, provide `--core` explicitly.
File without changes
File without changes