-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
162 lines (146 loc) · 6.33 KB
/
Copy pathpyproject.toml
File metadata and controls
162 lines (146 loc) · 6.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
[project]
name = "codeprobe"
version = "0.14.0"
description = "Benchmark AI coding agents against your own codebase. Mine real tasks from repo history, run agents, interpret results."
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.11,<3.14"
authors = [
{ name = "codeprobe contributors" },
]
keywords = ["ai", "benchmark", "eval", "coding-agent", "mcp"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Operating System :: POSIX :: Linux",
"Operating System :: MacOS :: MacOS X",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Testing",
]
dependencies = [
"click>=8.0,<9",
"pyyaml>=6.0,<7",
"anthropic>=0.39,<1",
"openai>=1.66,<3",
"tiktoken>=0.7,<1",
"scipy>=1.11,<2",
"rich>=13.7,<14",
"jinja2>=3.1,<4",
"docker-image-py>=0.2,<0.3",
]
[project.urls]
Homepage = "https://github.com/sjarmak/codeprobe"
Repository = "https://github.com/sjarmak/codeprobe"
Issues = "https://github.com/sjarmak/codeprobe/issues"
[project.optional-dependencies]
dev = [
"pytest>=8.0,<9",
"pytest-cov>=5.0,<6",
# Pinned to a minor range, not >=0.4,<1: ruff adds lint rules in minor
# releases, so an open range turns CI red with no code change (codeprobe-pb4z
# — 35 errors accumulated this way). Bump deliberately and fix the new rules
# in the same commit.
"ruff>=0.15,<0.16",
"mypy>=1.10,<2",
"types-PyYAML>=6.0,<7",
"types-requests>=2.31,<3",
"scipy-stubs>=1.11,<2",
"scipy>=1.11,<2",
# Needed by tests/test_release_gate.py::test_build_and_stage_real_wheel
# which shells out to ``python -m build --wheel`` to verify the wheel
# produced at release time is installable and version-consistent.
"build>=1.0,<2",
]
[project.scripts]
codeprobe = "codeprobe.cli:main"
[project.entry-points."codeprobe.agents"]
claude = "codeprobe.adapters.claude:ClaudeAdapter"
codex = "codeprobe.adapters.codex:CodexAdapter"
copilot = "codeprobe.adapters.copilot:CopilotAdapter"
[project.entry-points."codeprobe.sessions"]
claude = "codeprobe.adapters.session:ClaudeSessionCollector"
codex = "codeprobe.adapters.session:CodexSessionCollector"
copilot = "codeprobe.adapters.session:CopilotSessionCollector"
[project.entry-points."codeprobe.scorers"]
binary = "codeprobe.core.scoring:BinaryScorer"
continuous = "codeprobe.core.scoring:ContinuousScorer"
checkpoint = "codeprobe.core.scoring:CheckpointScorer"
test_ratio = "codeprobe.core.scoring:ContinuousScorer"
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
"codeprobe.preambles" = ["*.md", "*.j2"]
# Subpackage holding Jinja preamble templates loaded at runtime via
# FileSystemLoader (see codeprobe/preambles/templates/__init__.py). Must be
# listed explicitly — setuptools package-data is per-package, not recursive.
"codeprobe.preambles.templates" = ["*.j2", "*.md.j2"]
"codeprobe.templates" = ["*.yaml"]
"codeprobe.llm" = ["*.yaml"]
"codeprobe.cli" = ["error_codes.json"]
# Embedded Go AST scanner sourced at runtime by AstResolver via `go run`.
# Single-file program with no external deps; ships as plain text and is
# compiled on-demand by the user's local go toolchain.
"codeprobe.mining._go_ast_scanner" = ["*.go"]
# Shipped agent skills (see PRD §7). The canonical copies live in-tree at
# src/codeprobe/skills_data/codeprobe-*/SKILL.md so this glob covers both the
# wheel and the sdist; `codeprobe skills install` materializes them for
# customers. The .claude/skills/codeprobe-*/SKILL.md files are byte-identical
# mirrors for this repo's own agents and are NOT packaged — never add a graft
# or recursive-include for .claude/, which would sweep whatever machine-local
# agent skills the build host happens to have into a public sdist.
"codeprobe.skills_data" = ["*/SKILL.md"]
[tool.setuptools]
include-package-data = true
[tool.pytest.ini_options]
testpaths = ["tests"]
markers = [
"integration: cross-component or external-service checks (included in default pytest and CI runs)",
]
[tool.mypy]
python_version = "3.11"
strict = true
warn_return_any = true
warn_unused_configs = true
disallow_any_generics = false
# numpy (>=2.5) and scipy-stubs ship PEP 695 ``type`` alias statements (3.12+
# syntax) that mypy rejects while checking under ``python_version = 3.11`` — the
# whole run aborts with "Type statement is only supported in Python 3.12 and
# greater" even though no codeprobe code is at fault (a fresh ``pip install``
# pulls whatever numpy / scipy-stubs resolve to, e.g. numpy 2.5.1). Neither is
# imported directly; codeprobe only touches ``scipy.stats`` in analysis/stats.py
# and assess/oracle_diff.py, and numpy comes in transitively. Skip following
# both stub trees instead of pinning versions that will drift again. Remove once
# the floor mypy version parses these stubs cleanly.
[[tool.mypy.overrides]]
module = ["scipy", "scipy.*", "numpy", "numpy.*"]
follow_imports = "skip"
follow_imports_for_stubs = true
[tool.ruff]
target-version = "py311"
line-length = 120
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP"]
# N802 — one intentional mixed-case test method name asserting on camelCase
# flag forwarding (``--disallowedTools``).
# UP028/UP042 — one-off modernizations not worth the churn in this release.
# (N818 was removed in codeprobe-6c9 — all exception classes now carry the
# ``Error`` suffix, with deprecated aliases for one minor-version cycle.)
ignore = ["N802", "UP028", "UP042"]
[tool.ruff.lint.per-file-ignores]
# One stale local var + one unused-but-kept-for-shape helper in existing tests.
"tests/test_verify.py" = ["F841"]
# Pre-existing alias intentionally re-exports the registry under a private name;
# ruff's explicit-re-export suggestion would be a larger refactor.
"src/codeprobe/cli/__init__.py" = ["F401"]
# Wide HTML template string that reads better on one line than broken up.
"src/codeprobe/snapshot/exporters/browse.py" = ["E501"]
# Same: the self-contained run-explorer HTML/JS template (codeprobe-3cs).
"src/codeprobe/analysis/run_explorer.py" = ["E501"]
# Same: the arm-vs-arm comparison-viewer HTML/JS template (codeprobe-00e).
"src/codeprobe/analysis/comparison_viewer.py" = ["E501"]