Files
llm-connect/pyproject.toml
Bernd Worsch d71f4114d1 feat: WP-0001 foundation + WP-0002 core extensions
WP-0001 — Foundation & GAAF Baseline
- SCOPE.md, ARCHITECTURE-LAYERS.md, contracts/ tree
- .claude/rules/ stubs filled (architecture, stack, boundary)
- 57 tests (pytest), pyproject.toml with ruff+mypy, CI workflow

WP-0002 — Core Extensions (FR-4 + FR-3)
- FR-4: BudgetTracker (thread-safe) + LLMBudgetExceededError +
  optional RunConfig.budget_tracker + enforcement in all adapters
- FR-3: async_execute_prompt on LLMAdapter ABC (asyncio.to_thread
  fallback) + native asyncio.create_subprocess_exec in ClaudeCodeAdapter

81 tests passing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 22:24:14 +00:00

51 lines
903 B
TOML

[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "llm-connect"
version = "0.1.0"
description = "Pluggable LLM adapters for OpenRouter, Gemini, OpenAI and Claude Code CLI"
requires-python = ">=3.10"
dependencies = [
"toml",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"ruff>=0.4",
"mypy>=1.10",
]
[tool.setuptools.packages.find]
where = ["."]
include = ["llm_connect*"]
[dependency-groups]
dev = [
"pytest>=9.0.2",
"ruff>=0.4",
"mypy>=1.10",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-v"
[tool.ruff]
target-version = "py310"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "W", "I", "UP"]
ignore = ["E501"]
[tool.mypy]
python_version = "3.10"
strict = false
ignore_missing_imports = true
disallow_untyped_defs = true
warn_return_any = true
warn_unused_ignores = true