Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
115 lines (99 loc) · 3.12 KB
/
Copy pathpyproject.toml
File metadata and controls
115 lines (99 loc) · 3.12 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
[build-system]
requires = ["uv_build>=0.12.19,<0.13"]
build-backend = "uv_build"
[project]
name = "bcbench"
version = "0.15.0"
description = "Benchmarking tool for Business Central (AL) ecosystem, inspired by SWE-Bench"
readme = "README.md"
requires-python = ">=3.13,<3.14"
license = "MIT"
license-files = ["LICENSE"]
authors = [
{name = "Microsoft Corporation"}
]
classifiers = ["Private :: Do Not Upload"]
dependencies = [
"bcbench-core",
"jsonschema>=4.0",
"python-dotenv>=1.2.2",
"requests>=2.0",
"unidiff>=0.7",
"typer>=0.9.0",
"typing-extensions>=4.0",
"pyyaml>=6.0",
"pydantic>=2.0",
"textual>=7.0",
"numpy>=2.3.5",
"scipy>=1.16.3",
"jinja2>=3.1.6",
"packaging>=25.0",
"rich>=14.2.0",
]
[project.optional-dependencies]
# `bcbench redteam` only, and not installed by default: azure-ai-evaluation[redteam] pulls in ~76
# packages (pyrit, transformers, datasets, ...) that no other command needs.
redteam = [
"azure-ai-evaluation[redteam]>=1.18.2",
"azure-identity>=1.25.3",
]
[project.scripts]
bcbench = "bcbench.cli:app"
[tool.uv]
# ty's uv integration (TY_UV=1, used for missing-direct-dependency) needs uv >= 0.12.3
required-version = ">=0.12.19"
[tool.uv.workspace]
members = ["packages/bcbench-core"]
[tool.uv.sources]
bcbench-core = { workspace = true }
[[tool.uv.index]]
name = "microsoft-cfs"
url = "https://packagefeedproxy.microsoft.io/pypi/simple"
default = true
[tool.pytest.ini_options]
testpaths = ["tests", "packages/bcbench-core/tests"]
addopts = ["-v", "--strict-markers", "-m", "not e2e"]
markers = [
"integration",
"e2e",
]
collect_imported_tests = false
[tool.coverage.run]
# Repo-relative paths in coverage.xml so GitHub Code Quality can map them onto PR files
relative_files = true
include = ["src/bcbench/*", "packages/bcbench-core/src/bcbench_core/*"]
[tool.ruff]
# The app inherits the bcbench-core lint baseline; tables redefined below replace the inherited ones.
extend = "packages/bcbench-core/pyproject.toml"
[tool.ruff.lint.flake8-tidy-imports.banned-api]
# Force sandboxed rendering:
"jinja2.Template".msg = "Use jinja2.sandbox.SandboxedEnvironment instead; the bare Template is not sandboxed."
"jinja2.Environment".msg = "Use jinja2.sandbox.SandboxedEnvironment instead; the bare Environment is not sandboxed."
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["ANN"]
"notebooks/**" = ["ANN", "T20"] # notebooks routinely print() for analysis output
"src/bcbench/commands/**" = ["T20"] # CLI commands print user-facing output
"tools/**" = ["T20"] # standalone CLI scripts
[tool.ty.src]
exclude = ["notebooks/"]
[tool.ty.rules]
# Strictest baseline for the whole workspace; relax a specific rule only with a rationale.
all = "error"
[tool.ty.analysis]
# bc-eval is internal and installed only into a separate venv by bcal-evaluation.yml
allowed-unresolved-imports = ["bc_eval.**"]
[dependency-groups]
analysis = [
"ipykernel>=7.1.0",
"nbformat>=5.10.4",
"pandas>=2.3.3",
"plotly>=6.5.0",
]
dev = [
"pytest>=9.0.3",
"pytest-cov>=7.0",
"ruff>=0.16.0",
"pre-commit>=4.3.0",
"ty>=0.0.84",
"click>=8.3.0",
]