-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathpyproject.toml
More file actions
113 lines (102 loc) · 3.88 KB
/
Copy pathpyproject.toml
File metadata and controls
113 lines (102 loc) · 3.88 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
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "gabbe"
version = "1.1.1"
description = "Generative Architectural Brain Base Engine - Agentic Engineering Kit"
readme = "README.md"
requires-python = ">=3.9"
# Dual-licensed: executable code (gabbe/, scripts/, agents/scripts/) under
# Apache-2.0 (see LICENSE-CODE); documentation and content (agents/ markdown,
# docs/, skills/templates/guides/personas) under CC-BY-SA-4.0 (see LICENSE).
license = "Apache-2.0 AND CC-BY-SA-4.0"
license-files = ["LICENSE", "LICENSE-CODE"]
authors = [
{name = "Andrei Nicolae Besleaga"}
]
keywords = ["agentic", "ai", "engineering", "cli", "llm", "brain-mode"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Libraries :: Application Frameworks",
]
dependencies = [
"requests>=2.28,<3.0",
"PyYAML>=6.0",
# Required for fail-closed tool-argument validation in the gateway: executing a
# parameterized tool without schema validation is a security gap, so the gateway
# raises rather than silently skipping when jsonschema is absent.
"jsonschema>=4.0",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"pytest-cov",
"hypothesis>=6.0",
"hypothesis-jsonschema>=0.23",
"mutmut>=2.4",
"ruff>=0.6",
"black>=24.0",
"mypy>=1.8",
]
# Optional eval tooling (Track E). NOT required by GABBE's home-grown skill-eval
# harness (agents/scripts/eval_skills.py reuses gabbe/llm.py). Kept out of core
# and [dev] so these heavy libraries never enter the audited dependency set and
# the CVE-delta gate stays clean. Install explicitly to run Ragas/DeepEval/
# Langfuse alongside the harness; promptfoo is a separate external Node CLI.
evals = [
"ragas>=0.2",
"deepeval>=1.0",
"langfuse>=2.0",
]
[project.scripts]
gabbe = "gabbe.main:main"
[project.urls]
"Homepage" = "https://github.com/andreibesleaga/GABBE"
[tool.setuptools.packages.find]
include = ["gabbe*"]
# The Markdown agentic kit (agents/, docs/, scripts/init.py) lives OUTSIDE the
# importable `gabbe*` package, so MANIFEST.in bundles it into the **sdist** only —
# a source/`--no-binary` install (and the GitHub release tarball) carries the kit,
# but a plain wheel install does NOT include it. For a Python-independent kit
# install use `npx gabbe-kit init` or `curl … | sh`. Additive: does NOT alter the
# packages.find selection above.
[tool.setuptools]
include-package-data = true
[tool.pytest.ini_options]
testpaths = ["gabbe/tests", "scripts/tests"]
markers = [
"slow: long-running tests (excluded from per-commit CI)",
"live_llm: calls a real LLM; mocked by default, real only when GABBE_LIVE_LLM=1",
"mutation: targeted by mutmut mutation testing (non-blocking nightly)",
]
[tool.ruff]
line-length = 100
target-version = "py39"
extend-exclude = [".venv", "build", "dist", "scripts/tests/golden"]
[tool.ruff.lint]
# Conservative rule set: pyflakes (F) + a subset of pycodestyle (E) that does
# not fight black. Expand over time.
select = ["F", "E4", "E7", "E9", "I"]
ignore = [
"E741", # ambiguous var names appear in a few math-y spots
"F841", # unused local assignments (several intentional in the wizard flow)
]
[tool.black]
line-length = 100
target-version = ["py39"]
extend-exclude = "scripts/tests/golden"
[tool.mypy]
python_version = "3.10" # mypy analysis target (runtime floor stays >=3.9)
ignore_missing_imports = true
# Gradual typing: warn but don't fail the build on the existing untyped corpus.
disallow_untyped_defs = false
check_untyped_defs = false
exclude = ["scripts/tests/golden", "build", "dist"]