dmint-cli 1.0.0__tar.gz → 1.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 (36) hide show
  1. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/CHANGELOG.md +15 -0
  2. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/PKG-INFO +31 -5
  3. dmint_cli-1.0.0/src/dmint_cli.egg-info/PKG-INFO → dmint_cli-1.0.2/README.md +28 -28
  4. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/pyproject.toml +3 -2
  5. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/__main__.py +9 -0
  6. dmint_cli-1.0.2/src/dmint_cli/dashboard.py +27 -0
  7. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/version.py +4 -4
  8. dmint_cli-1.0.0/README.md → dmint_cli-1.0.2/src/dmint_cli.egg-info/PKG-INFO +54 -3
  9. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli.egg-info/SOURCES.txt +1 -0
  10. dmint_cli-1.0.2/src/dmint_cli.egg-info/requires.txt +6 -0
  11. dmint_cli-1.0.0/src/dmint_cli.egg-info/requires.txt +0 -5
  12. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/LICENSE +0 -0
  13. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/MANIFEST.in +0 -0
  14. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/setup.cfg +0 -0
  15. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/setup.py +0 -0
  16. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/__init__.py +0 -0
  17. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/api.py +0 -0
  18. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/compile_policy.py +0 -0
  19. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/create_mcp_policy.py +0 -0
  20. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/create_policy.py +0 -0
  21. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/errors.py +0 -0
  22. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/install_skill.py +0 -0
  23. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/io_utils.py +0 -0
  24. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/limits.py +0 -0
  25. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/mcp_auth.py +0 -0
  26. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/mcp_connections.py +0 -0
  27. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/mcp_credentials.py +0 -0
  28. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/mcp_oauth.py +0 -0
  29. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/prompts/__init__.py +0 -0
  30. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/prompts/policy_skill.md +0 -0
  31. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/skills/__init__.py +0 -0
  32. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/skills/dmint-policy-manager/SKILL.md +0 -0
  33. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli/verify_policy.py +0 -0
  34. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli.egg-info/dependency_links.txt +0 -0
  35. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli.egg-info/entry_points.txt +0 -0
  36. {dmint_cli-1.0.0 → dmint_cli-1.0.2}/src/dmint_cli.egg-info/top_level.txt +0 -0
@@ -5,6 +5,21 @@ All notable changes to `dmint-cli` will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.2] - 2026-09-17
9
+
10
+ ### Added
11
+ - **Dashboard Command (`dmint dashboard`)**:
12
+ - Integrated local human approval dashboard launcher connecting to Core-owned SQLite.
13
+ - Added CLI options: `--db-path`, `--host`, `--port`, `--deployment-epoch`, `--authority-issuer`, `--approver-id`.
14
+ - Added runtime dependency on `dmint-dashboard>=1.0.0,<2.0.0`.
15
+
16
+ ## [1.0.1] - 2026-09-16
17
+
18
+ ### Changed
19
+ - Bump patch version to work around PyPI filename reuse restriction on `dmint-cli-1.0.0`.
20
+ No functional or security changes from 1.0.0.
21
+ - Update dmint core dependency pin to `>=1.0.0,<2.0.0` following the dmint v1.0.0 release.
22
+
8
23
  ## [1.0.0] - 2026-09-16
9
24
 
10
25
  ### Security & Hardening
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dmint-cli
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: CLI tooling for Dmint policy creation, compilation, and management
5
5
  Author: Dmint Authors
6
6
  License-Expression: Apache-2.0
@@ -17,13 +17,14 @@ Classifier: Topic :: Software Development :: Compilers
17
17
  Requires-Python: >=3.10
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: LICENSE
20
- Requires-Dist: dmint<0.2.0,>=0.1.0
20
+ Requires-Dist: dmint<2.0.0,>=1.0.0
21
21
  Requires-Dist: mcp<3.0.0,>=2.2.0
22
+ Requires-Dist: dmint-dashboard<2.0.0,>=1.0.0
22
23
  Provides-Extra: test
23
24
  Requires-Dist: pytest>=8.0.0; extra == "test"
24
25
  Dynamic: license-file
25
26
 
26
- # dmint-cli (v1.0.0)
27
+ # dmint-cli (v1.0.2)
27
28
 
28
29
  > **Developer tooling for interactive discovery, authoring, compilation, and offline verification of Dmint security policies and MCP protection artifacts.**
29
30
 
@@ -138,7 +139,7 @@ Verify your installation and version:
138
139
 
139
140
  ```bash
140
141
  dmint --version
141
- # dmint 1.0.0
142
+ # dmint 1.0.2
142
143
  ```
143
144
 
144
145
  ### 3-Step Walkthrough
@@ -290,6 +291,31 @@ When run without `--dest`, `dmint install-skill` displays a numbered menu and al
290
291
 
291
292
  ---
292
293
 
294
+ ### Human Approval Dashboard (`dashboard`)
295
+
296
+ Launch the local human approval web dashboard directly via the CLI:
297
+
298
+ ```bash
299
+ # Launch dashboard pointing to Core-owned SQLite:
300
+ dmint dashboard --db-path /path/to/approvals.sqlite3
301
+
302
+ # Custom bind host and port:
303
+ dmint dashboard --db-path /path/to/approvals.sqlite3 --host 127.0.0.1 --port 8080
304
+
305
+ # With specific deployment epoch:
306
+ dmint dashboard --db-path /path/to/approvals.sqlite3 --deployment-epoch prod-v1
307
+ ```
308
+
309
+ Available options:
310
+ - `--db-path`: Path to Core-owned SQLite database (required, or set `DMINT_DB_PATH`)
311
+ - `--host`: Bind host (default: `127.0.0.1`)
312
+ - `--port`: Bind port (default: `8080`)
313
+ - `--deployment-epoch`: Core deployment epoch (default: `default`)
314
+ - `--authority-issuer`: Issuer ID for the dashboard `LocalApprovalAuthority` (default: `dmint-dashboard`)
315
+ - `--approver-id`: Human subject ID recorded in Core when approving/rejecting (default: `dashboard-human`)
316
+
317
+ ---
318
+
293
319
  ## 8. stdio MCP Transport
294
320
 
295
321
  For local tool servers, `dmint-cli` connects over standard input/output (`stdio`):
@@ -322,7 +348,7 @@ When an MCP endpoint responds with `401 Unauthorized` or `403 Forbidden`:
322
348
  1. **RFC 9728 PRM Discovery**: Looks for the `WWW-Authenticate` header and resolves Protected Resource Metadata (PRM) via `/.well-known/oauth-protected-resource`.
323
349
  2. **RFC 8414 AS Discovery**: Resolves the OAuth 2.0 Authorization Server metadata via `/.well-known/oauth-authorization-server`.
324
350
  3. **Issuer Validation**: Enforces RFC 9207 issuer matching to prevent authorization server mix-up attacks.
325
- 4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.0"`.
351
+ 4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.2"`.
326
352
 
327
353
  ---
328
354
 
@@ -1,29 +1,4 @@
1
- Metadata-Version: 2.4
2
- Name: dmint-cli
3
- Version: 1.0.0
4
- Summary: CLI tooling for Dmint policy creation, compilation, and management
5
- Author: Dmint Authors
6
- License-Expression: Apache-2.0
7
- Classifier: Development Status :: 5 - Production/Stable
8
- Classifier: Environment :: Console
9
- Classifier: Intended Audience :: Developers
10
- Classifier: Operating System :: OS Independent
11
- Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.10
13
- Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
- Classifier: Topic :: Security
16
- Classifier: Topic :: Software Development :: Compilers
17
- Requires-Python: >=3.10
18
- Description-Content-Type: text/markdown
19
- License-File: LICENSE
20
- Requires-Dist: dmint<0.2.0,>=0.1.0
21
- Requires-Dist: mcp<3.0.0,>=2.2.0
22
- Provides-Extra: test
23
- Requires-Dist: pytest>=8.0.0; extra == "test"
24
- Dynamic: license-file
25
-
26
- # dmint-cli (v1.0.0)
1
+ # dmint-cli (v1.0.2)
27
2
 
28
3
  > **Developer tooling for interactive discovery, authoring, compilation, and offline verification of Dmint security policies and MCP protection artifacts.**
29
4
 
@@ -138,7 +113,7 @@ Verify your installation and version:
138
113
 
139
114
  ```bash
140
115
  dmint --version
141
- # dmint 1.0.0
116
+ # dmint 1.0.2
142
117
  ```
143
118
 
144
119
  ### 3-Step Walkthrough
@@ -290,6 +265,31 @@ When run without `--dest`, `dmint install-skill` displays a numbered menu and al
290
265
 
291
266
  ---
292
267
 
268
+ ### Human Approval Dashboard (`dashboard`)
269
+
270
+ Launch the local human approval web dashboard directly via the CLI:
271
+
272
+ ```bash
273
+ # Launch dashboard pointing to Core-owned SQLite:
274
+ dmint dashboard --db-path /path/to/approvals.sqlite3
275
+
276
+ # Custom bind host and port:
277
+ dmint dashboard --db-path /path/to/approvals.sqlite3 --host 127.0.0.1 --port 8080
278
+
279
+ # With specific deployment epoch:
280
+ dmint dashboard --db-path /path/to/approvals.sqlite3 --deployment-epoch prod-v1
281
+ ```
282
+
283
+ Available options:
284
+ - `--db-path`: Path to Core-owned SQLite database (required, or set `DMINT_DB_PATH`)
285
+ - `--host`: Bind host (default: `127.0.0.1`)
286
+ - `--port`: Bind port (default: `8080`)
287
+ - `--deployment-epoch`: Core deployment epoch (default: `default`)
288
+ - `--authority-issuer`: Issuer ID for the dashboard `LocalApprovalAuthority` (default: `dmint-dashboard`)
289
+ - `--approver-id`: Human subject ID recorded in Core when approving/rejecting (default: `dashboard-human`)
290
+
291
+ ---
292
+
293
293
  ## 8. stdio MCP Transport
294
294
 
295
295
  For local tool servers, `dmint-cli` connects over standard input/output (`stdio`):
@@ -322,7 +322,7 @@ When an MCP endpoint responds with `401 Unauthorized` or `403 Forbidden`:
322
322
  1. **RFC 9728 PRM Discovery**: Looks for the `WWW-Authenticate` header and resolves Protected Resource Metadata (PRM) via `/.well-known/oauth-protected-resource`.
323
323
  2. **RFC 8414 AS Discovery**: Resolves the OAuth 2.0 Authorization Server metadata via `/.well-known/oauth-authorization-server`.
324
324
  3. **Issuer Validation**: Enforces RFC 9207 issuer matching to prevent authorization server mix-up attacks.
325
- 4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.0"`.
325
+ 4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.2"`.
326
326
 
327
327
  ---
328
328
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dmint-cli"
7
- version = "1.0.0"
7
+ version = "1.0.2"
8
8
  description = "CLI tooling for Dmint policy creation, compilation, and management"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -25,8 +25,9 @@ classifiers = [
25
25
  "Topic :: Software Development :: Compilers",
26
26
  ]
27
27
  dependencies = [
28
- "dmint>=0.1.0,<0.2.0",
28
+ "dmint>=1.0.0,<2.0.0",
29
29
  "mcp>=2.2.0,<3.0.0",
30
+ "dmint-dashboard>=1.0.0,<2.0.0",
30
31
  ]
31
32
 
32
33
  [project.optional-dependencies]
@@ -8,6 +8,7 @@ import sys
8
8
  from dmint_cli.compile_policy import main_compile
9
9
  from dmint_cli.create_mcp_policy import main_create_mcp
10
10
  from dmint_cli.create_policy import main_create
11
+ from dmint_cli.dashboard import main_dashboard
11
12
  from dmint_cli.install_skill import main_install_skill
12
13
  from dmint_cli.verify_policy import main_verify
13
14
  from dmint_cli.version import __version__
@@ -73,6 +74,7 @@ Recommended Workflow:
73
74
  create-mcp-policy Specialized MCP workflow: live tool discovery + policy authoring + mcp_protection.json generation
74
75
  verify-policy Deterministic offline validation of policy.json against Dmint schema and invariants (LLM-free)
75
76
  install-skill Install Dmint AI coding agent skill into workspace (.agents/skills/) or global config
77
+ dashboard Launch the local human approval dashboard (connects to Core SQLite)
76
78
 
77
79
  Compatibility Commands:
78
80
  compile-policy [Compatibility] Legacy batch compilation of policy requirements (prefer 'create-policy')
@@ -108,6 +110,11 @@ Compatibility Commands:
108
110
  help="Install Dmint AI coding agent skill into workspace (.agents/skills/) or global config",
109
111
  add_help=False,
110
112
  )
113
+ subparsers.add_parser(
114
+ "dashboard",
115
+ help="Launch the local human approval dashboard (connects to Core SQLite)",
116
+ add_help=False,
117
+ )
111
118
  subparsers.add_parser(
112
119
  "compile-policy",
113
120
  help="[Compatibility] Legacy batch compilation of policy requirements (prefer 'create-policy')",
@@ -140,6 +147,8 @@ Compatibility Commands:
140
147
  return main_compile(cmd_args)
141
148
  elif cmd == "install-skill":
142
149
  return main_install_skill(cmd_args)
150
+ elif cmd == "dashboard":
151
+ return main_dashboard(cmd_args)
143
152
  else:
144
153
  parser.print_help(file=sys.stderr)
145
154
  return 2
@@ -0,0 +1,27 @@
1
+ """Dashboard launcher for dmint CLI."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import sys
6
+
7
+
8
+ def main_dashboard(args: list[str] | None = None) -> int:
9
+ """Launch the Dmint local human approval dashboard."""
10
+ try:
11
+ from dmint_dashboard import main as dashboard_main
12
+ except ImportError as exc:
13
+ print(
14
+ f"Error: dmint-dashboard is required for this command: {exc}\n"
15
+ f"Install it with: pip install dmint-dashboard",
16
+ file=sys.stderr,
17
+ )
18
+ return 1
19
+
20
+ try:
21
+ dashboard_main(argv=args, prog="dmint dashboard")
22
+ return 0
23
+ except SystemExit as exc:
24
+ return exc.code if isinstance(exc.code, int) else (0 if exc.code is None else 1)
25
+ except Exception as exc:
26
+ print(f"Error starting dashboard: {exc}", file=sys.stderr)
27
+ return 1
@@ -6,16 +6,16 @@ Single source of truth for package version, User-Agent strings, and client metad
6
6
  from __future__ import annotations
7
7
 
8
8
  # Canonical package version (single source of truth for runtime code)
9
- __version__ = "1.0.0"
9
+ __version__ = "1.0.2"
10
10
 
11
11
 
12
12
  def get_user_agent(component: str | None = None) -> str:
13
13
  """Return the canonical User-Agent header string.
14
14
 
15
15
  Examples:
16
- get_user_agent() -> 'dmint-cli/1.0.0'
17
- get_user_agent('oauth') -> 'dmint-oauth/1.0.0'
18
- get_user_agent('policy-author') -> 'dmint-policy-author/1.0.0'
16
+ get_user_agent() -> 'dmint-cli/1.0.1'
17
+ get_user_agent('oauth') -> 'dmint-oauth/1.0.1'
18
+ get_user_agent('policy-author') -> 'dmint-policy-author/1.0.1'
19
19
  """
20
20
  if component:
21
21
  return f"dmint-{component}/{__version__}"
@@ -1,4 +1,30 @@
1
- # dmint-cli (v1.0.0)
1
+ Metadata-Version: 2.4
2
+ Name: dmint-cli
3
+ Version: 1.0.2
4
+ Summary: CLI tooling for Dmint policy creation, compilation, and management
5
+ Author: Dmint Authors
6
+ License-Expression: Apache-2.0
7
+ Classifier: Development Status :: 5 - Production/Stable
8
+ Classifier: Environment :: Console
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Security
16
+ Classifier: Topic :: Software Development :: Compilers
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: dmint<2.0.0,>=1.0.0
21
+ Requires-Dist: mcp<3.0.0,>=2.2.0
22
+ Requires-Dist: dmint-dashboard<2.0.0,>=1.0.0
23
+ Provides-Extra: test
24
+ Requires-Dist: pytest>=8.0.0; extra == "test"
25
+ Dynamic: license-file
26
+
27
+ # dmint-cli (v1.0.2)
2
28
 
3
29
  > **Developer tooling for interactive discovery, authoring, compilation, and offline verification of Dmint security policies and MCP protection artifacts.**
4
30
 
@@ -113,7 +139,7 @@ Verify your installation and version:
113
139
 
114
140
  ```bash
115
141
  dmint --version
116
- # dmint 1.0.0
142
+ # dmint 1.0.2
117
143
  ```
118
144
 
119
145
  ### 3-Step Walkthrough
@@ -265,6 +291,31 @@ When run without `--dest`, `dmint install-skill` displays a numbered menu and al
265
291
 
266
292
  ---
267
293
 
294
+ ### Human Approval Dashboard (`dashboard`)
295
+
296
+ Launch the local human approval web dashboard directly via the CLI:
297
+
298
+ ```bash
299
+ # Launch dashboard pointing to Core-owned SQLite:
300
+ dmint dashboard --db-path /path/to/approvals.sqlite3
301
+
302
+ # Custom bind host and port:
303
+ dmint dashboard --db-path /path/to/approvals.sqlite3 --host 127.0.0.1 --port 8080
304
+
305
+ # With specific deployment epoch:
306
+ dmint dashboard --db-path /path/to/approvals.sqlite3 --deployment-epoch prod-v1
307
+ ```
308
+
309
+ Available options:
310
+ - `--db-path`: Path to Core-owned SQLite database (required, or set `DMINT_DB_PATH`)
311
+ - `--host`: Bind host (default: `127.0.0.1`)
312
+ - `--port`: Bind port (default: `8080`)
313
+ - `--deployment-epoch`: Core deployment epoch (default: `default`)
314
+ - `--authority-issuer`: Issuer ID for the dashboard `LocalApprovalAuthority` (default: `dmint-dashboard`)
315
+ - `--approver-id`: Human subject ID recorded in Core when approving/rejecting (default: `dashboard-human`)
316
+
317
+ ---
318
+
268
319
  ## 8. stdio MCP Transport
269
320
 
270
321
  For local tool servers, `dmint-cli` connects over standard input/output (`stdio`):
@@ -297,7 +348,7 @@ When an MCP endpoint responds with `401 Unauthorized` or `403 Forbidden`:
297
348
  1. **RFC 9728 PRM Discovery**: Looks for the `WWW-Authenticate` header and resolves Protected Resource Metadata (PRM) via `/.well-known/oauth-protected-resource`.
298
349
  2. **RFC 8414 AS Discovery**: Resolves the OAuth 2.0 Authorization Server metadata via `/.well-known/oauth-authorization-server`.
299
350
  3. **Issuer Validation**: Enforces RFC 9207 issuer matching to prevent authorization server mix-up attacks.
300
- 4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.0"`.
351
+ 4. **Dynamic Client Registration**: Performs RFC 7591 Dynamic Client Registration if the server supports it, advertising `client_name="dmint-cli"` and `software_version="1.0.2"`.
301
352
 
302
353
  ---
303
354
 
@@ -10,6 +10,7 @@ src/dmint_cli/api.py
10
10
  src/dmint_cli/compile_policy.py
11
11
  src/dmint_cli/create_mcp_policy.py
12
12
  src/dmint_cli/create_policy.py
13
+ src/dmint_cli/dashboard.py
13
14
  src/dmint_cli/errors.py
14
15
  src/dmint_cli/install_skill.py
15
16
  src/dmint_cli/io_utils.py
@@ -0,0 +1,6 @@
1
+ dmint<2.0.0,>=1.0.0
2
+ mcp<3.0.0,>=2.2.0
3
+ dmint-dashboard<2.0.0,>=1.0.0
4
+
5
+ [test]
6
+ pytest>=8.0.0
@@ -1,5 +0,0 @@
1
- dmint<0.2.0,>=0.1.0
2
- mcp<3.0.0,>=2.2.0
3
-
4
- [test]
5
- pytest>=8.0.0
File without changes
File without changes
File without changes
File without changes