devflow-cli 6.3.0__py3-none-any.whl → 6.3.1__py3-none-any.whl

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.
devflow_cli/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """devflow CLI — workflow de développement adaptatif."""
2
2
 
3
- VERSION = "6.3.0"
3
+ VERSION = "6.3.1"
4
4
 
5
5
  SUPPORTED_AGENTS = ["claude-code", "codex", "cursor"]
6
6
 
@@ -6,6 +6,7 @@ import hashlib
6
6
  import json
7
7
  import os
8
8
  import re
9
+ import shutil
9
10
  import tempfile
10
11
  from dataclasses import dataclass, replace
11
12
  from datetime import datetime, timezone
@@ -53,6 +54,10 @@ MAVEN_TEST_SUMMARY_RE = re.compile(
53
54
  )
54
55
 
55
56
 
57
+ class RegressionInterpreterUnavailable(RuntimeError):
58
+ """Aucun interpreteur Python n'est disponible pour la regression."""
59
+
60
+
56
61
  @dataclass(frozen=True)
57
62
  class AutomaticVerificationOutcome:
58
63
  passed: bool
@@ -220,10 +225,21 @@ def select_regression_commands(
220
225
  if commands:
221
226
  return commands
222
227
  if (project_root / "pyproject.toml").is_file() and (project_root / "src").is_dir():
228
+ if (project_root / "uv.lock").is_file():
229
+ interpreter = ["uv", "run", "python"]
230
+ else:
231
+ name = next(
232
+ (name for name in ("python3", "python") if shutil.which(name)), None
233
+ )
234
+ if name is None:
235
+ raise RegressionInterpreterUnavailable(
236
+ "ni python3 ni python dans le PATH pour AUTO-REGRESSION-PYTHON"
237
+ )
238
+ interpreter = [name]
223
239
  return [
224
240
  ValidationCommand(
225
241
  "AUTO-REGRESSION-PYTHON",
226
- ["python", "-m", "compileall", "-q", "src"],
242
+ [*interpreter, "-m", "compileall", "-q", "src"],
227
243
  True,
228
244
  300,
229
245
  )
@@ -453,11 +469,16 @@ def run_automatic_verification(
453
469
  return AutomaticVerificationOutcome(False, "invalid-implementation-result", str(exc))
454
470
 
455
471
  commands = select_validation_commands(project_root, changed_files)
456
- regression_commands = (
457
- select_regression_commands(project_root, changed_files)
458
- if state.profile in {"standard", "deep", "critical"}
459
- else []
460
- )
472
+ try:
473
+ regression_commands = (
474
+ select_regression_commands(project_root, changed_files)
475
+ if state.profile in {"standard", "deep", "critical"}
476
+ else []
477
+ )
478
+ except RegressionInterpreterUnavailable as exc:
479
+ return AutomaticVerificationOutcome(
480
+ False, "regression-interpreter-unavailable", str(exc)
481
+ )
461
482
  security_commands: list[ValidationCommand] = []
462
483
  if state.profile in {"standard", "deep", "critical"}:
463
484
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: devflow-cli
3
- Version: 6.3.0
3
+ Version: 6.3.1
4
4
  Summary: Spec-Driven Development workflow CLI
5
5
  Project-URL: Homepage, https://github.com/sopequenoteck/devflow
6
6
  Project-URL: Repository, https://github.com/sopequenoteck/devflow
@@ -1,4 +1,4 @@
1
- devflow_cli/__init__.py,sha256=EaJQ7YnyA-lEJmnyXiOSovWHa-5JC1C3VWMJ_7Wol4M,1002
1
+ devflow_cli/__init__.py,sha256=ioYcjkCh1DVPMG-XJWw4S3Wnhpfiz9DBZFiiy05u2X0,1002
2
2
  devflow_cli/cli.py,sha256=SY0nIY0R1XjoVxGzSPn7Qcojsh6bMHHmiSKigZBndWE,2216
3
3
  devflow_cli/adapters/__init__.py,sha256=RkjHPU2Lp4hSVIq2iOmyTrv2zYU9NuiIF9wEMWzLdMI,377
4
4
  devflow_cli/adapters/agents.py,sha256=8_y70AIhmtuR8kyPN3Wpj0-i76k9wd_uaycVKTqC96g,26503
@@ -28,7 +28,7 @@ devflow_cli/core/adaptive_runner.py,sha256=o9HHPNZJyA9u_zui9pNZrzMkH_jzszbI-GMwe
28
28
  devflow_cli/core/adaptive_workflow.py,sha256=qsjkahK9yklf6LjyQn69PVl9v0AoX2YPQiG2_umpb_U,13065
29
29
  devflow_cli/core/agent_failure.py,sha256=iX4q249lAHeVdD_ZF1aObmU-FX6sjfYP9dfLSnWGAD0,3771
30
30
  devflow_cli/core/assessment.py,sha256=l5QRntLJyBx3MdN-kepmMAsruHdJsG4TDgSdgOSHkqU,10062
31
- devflow_cli/core/automatic_evidence.py,sha256=DAd74AWeLF1L8ySlTgQ3tVJMgbVKfB1ZqxDv1iYm7NE,36909
31
+ devflow_cli/core/automatic_evidence.py,sha256=xDCsxrNzZh1bWfltRnmv-aI4F_yAA7bKc5o_UKWQ3NQ,37715
32
32
  devflow_cli/core/catalog.py,sha256=nLPc78JkbISaSxJnHlWiMi_lvepaumbfwcjgLuVy7Zc,3102
33
33
  devflow_cli/core/contract_schemas.py,sha256=ugHrC4vcRpf3Dn_4JGHdBIkVr_TjnKu5dvvy3b0yKec,4480
34
34
  devflow_cli/core/docgen.py,sha256=EPDP0EKIToGYN1inQRj3CSYzADNtLTI_YCFYU4YWRuM,3075
@@ -87,8 +87,8 @@ devflow_cli/resources/templates/contracts/api-template.md,sha256=rC5v7JBz71PznCn
87
87
  devflow_cli/resources/templates/contracts/components-template.md,sha256=XIWfEXfC72sNmL5OA3V-7xIywkNDU2DBPLfyiagOWcs,484
88
88
  devflow_cli/resources/templates/contracts/interfaces-template.md,sha256=kf8B7b6HsmN7jyRlLNU7RnZl0rTMlI5s97yVRyI-6yc,336
89
89
  devflow_cli/resources/templates/contracts/services-template.md,sha256=cFafKCyLmq_a7aR7G0LXAaMO2z4Fuflq6iKdxfVg0vg,477
90
- devflow_cli-6.3.0.dist-info/METADATA,sha256=cdAoiz3DaCyQ8xqfA75HC_OGg8kfiPRWXeLnDGxjM2A,4275
91
- devflow_cli-6.3.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
92
- devflow_cli-6.3.0.dist-info/entry_points.txt,sha256=GVJ6bMvFpqyO5589iC4nFKeGTpGIW8aKn_QPPpSZ6kU,48
93
- devflow_cli-6.3.0.dist-info/licenses/LICENSE,sha256=v79PvnmqOdKhQiOa_QcWxng4q8GuGscLOwi7ygUpwpo,1070
94
- devflow_cli-6.3.0.dist-info/RECORD,,
90
+ devflow_cli-6.3.1.dist-info/METADATA,sha256=np6jNYj3Bc5RPgU6DjCUP_QfYG0wQ0_eKei0qnhtAR4,4275
91
+ devflow_cli-6.3.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
92
+ devflow_cli-6.3.1.dist-info/entry_points.txt,sha256=GVJ6bMvFpqyO5589iC4nFKeGTpGIW8aKn_QPPpSZ6kU,48
93
+ devflow_cli-6.3.1.dist-info/licenses/LICENSE,sha256=v79PvnmqOdKhQiOa_QcWxng4q8GuGscLOwi7ygUpwpo,1070
94
+ devflow_cli-6.3.1.dist-info/RECORD,,