python-harness 0.0.2__tar.gz → 0.0.3__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 (21) hide show
  1. {python_harness-0.0.2/python_harness.egg-info → python_harness-0.0.3}/PKG-INFO +1 -1
  2. {python_harness-0.0.2 → python_harness-0.0.3}/pyproject.toml +1 -1
  3. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness/cli.py +17 -2
  4. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness/hard_evaluator.py +3 -1
  5. {python_harness-0.0.2 → python_harness-0.0.3/python_harness.egg-info}/PKG-INFO +1 -1
  6. {python_harness-0.0.2 → python_harness-0.0.3}/LICENSE +0 -0
  7. {python_harness-0.0.2 → python_harness-0.0.3}/README.md +0 -0
  8. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness/__init__.py +0 -0
  9. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness/evaluator.py +0 -0
  10. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness/qc_evaluator.py +0 -0
  11. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness/soft_evaluator.py +0 -0
  12. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness.egg-info/SOURCES.txt +0 -0
  13. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness.egg-info/dependency_links.txt +0 -0
  14. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness.egg-info/entry_points.txt +0 -0
  15. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness.egg-info/requires.txt +0 -0
  16. {python_harness-0.0.2 → python_harness-0.0.3}/python_harness.egg-info/top_level.txt +0 -0
  17. {python_harness-0.0.2 → python_harness-0.0.3}/setup.cfg +0 -0
  18. {python_harness-0.0.2 → python_harness-0.0.3}/tests/test_cli.py +0 -0
  19. {python_harness-0.0.2 → python_harness-0.0.3}/tests/test_evaluator.py +0 -0
  20. {python_harness-0.0.2 → python_harness-0.0.3}/tests/test_hard_evaluator.py +0 -0
  21. {python_harness-0.0.2 → python_harness-0.0.3}/tests/test_soft_evaluator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-harness
3
- Version: 0.0.2
3
+ Version: 0.0.3
4
4
  Summary: An agentic codebase evaluation and evolution tool for Python projects.
5
5
  Author-email: Mingli Yuan <mingli.yuan@gmail.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-harness"
3
- version = "0.0.2"
3
+ version = "0.0.3"
4
4
  description = "An agentic codebase evaluation and evolution tool for Python projects."
5
5
  requires-python = ">=3.10"
6
6
  readme = "README.md"
@@ -94,13 +94,28 @@ def measure(path: str = typer.Argument(".", help="The path to evaluate")) -> Non
94
94
  if not hard_results["all_passed"]:
95
95
  console.print("[bold red]Hard Evaluation Failed! Exiting.[/bold red]")
96
96
  if hard_results["ruff"]["status"] != "success":
97
- console.print("[red]Ruff issues found.[/red]")
97
+ console.print("[red]Ruff issues found:[/red]")
98
+ # Assuming ruff output is JSON as configured in HardEvaluator
99
+ for issue in hard_results["ruff"].get("issues", []):
100
+ file = issue.get("filename", "unknown")
101
+ line = issue.get("location", {}).get("row", "?")
102
+ msg = issue.get("message", "unknown issue")
103
+ console.print(f" - {file}:{line} {msg}")
98
104
  if hard_results["mypy"]["status"] != "success":
99
105
  output = hard_results["mypy"].get("output", "")
100
106
  console.print(f"[red]Mypy issues found:[/red]\n{output}")
101
107
  if hard_results["ty"]["status"] != "success":
102
108
  output = hard_results["ty"].get("output", "")
103
- console.print(f"[red]Ty issues found:[/red]\n{output}")
109
+ # ty might print to stderr instead of stdout, or it might be missing
110
+ error_msg = hard_results["ty"].get("error_message", "")
111
+ if output:
112
+ console.print(f"[red]Ty issues found:[/red]\n{output}")
113
+ elif error_msg:
114
+ console.print(f"[red]Ty error:[/red]\n{error_msg}")
115
+ else:
116
+ console.print(
117
+ "[red]Ty failed, but no standard output was captured.[/red]"
118
+ )
104
119
  if hard_results["radon_cc"]["status"] != "success":
105
120
  issues = hard_results["radon_cc"].get("issues", [])
106
121
  console.print(
@@ -72,9 +72,11 @@ class HardEvaluator:
72
72
  check=False
73
73
  )
74
74
  status = "success" if result.returncode == 0 else "failed"
75
+ # ty might print to stderr
76
+ output = result.stdout if result.stdout else result.stderr
75
77
  return {
76
78
  "status": status,
77
- "output": result.stdout,
79
+ "output": output,
78
80
  "return_code": result.returncode,
79
81
  }
80
82
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-harness
3
- Version: 0.0.2
3
+ Version: 0.0.3
4
4
  Summary: An agentic codebase evaluation and evolution tool for Python projects.
5
5
  Author-email: Mingli Yuan <mingli.yuan@gmail.com>
6
6
  License: MIT
File without changes
File without changes
File without changes