mirror of
https://github.com/BillyOutlast/CLI-Anything-WEB.git
synced 2026-10-12 02:24:59 +00:00
- delete docs/REFACTORING-PLAN.md and docs/superpowers/{plans,specs}/*
(internal planning artifacts — not for the public repo)
- scrub the now-dangling REFACTORING-PLAN.md references from the
repl_skin canonical source (resynced to all copies) and pyproject.toml
- methodology and boilerplate skills: document doctor.py and mcp_server.py
as vendored runtime adapters alongside repl_skin, and the entry point's
doctor + mcp-serve registration (previously only repl_skin was noted)
103 lines
3.4 KiB
TOML
103 lines
3.4 KiB
TOML
[project]
|
|
name = "cli-anything-web-workspace"
|
|
version = "0.0.0"
|
|
description = "Workspace metadata for the CLI-Anything-Web monorepo (not a published package)"
|
|
requires-python = ">=3.10"
|
|
|
|
# ── Ruff: lint + format for the whole monorepo ─────────────────────────────
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py310"
|
|
extend-exclude = [
|
|
"cli-anything-web-plugin/templates", # .tpl files contain ${} placeholders
|
|
"assets",
|
|
]
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"F", # pyflakes
|
|
"W", # pycodestyle warnings
|
|
"I", # isort
|
|
"UP", # pyupgrade
|
|
"B", # flake8-bugbear
|
|
]
|
|
ignore = [
|
|
# Long lines are governed by `ruff format`; remaining E501 hits are
|
|
# docstrings/comments/string literals where wrapping hurts readability.
|
|
"E501",
|
|
# CLI entry points and pipeline scripts intentionally run code before
|
|
# imports (sys.stdout UTF-8 reconfigure, sys.path setup for sibling
|
|
# modules). Tracked as ratchet debt until the devkit package migration
|
|
# removes the need.
|
|
"E402",
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# Reference examples are intentionally incomplete teaching snippets.
|
|
"cli-anything-web-plugin/skills/*/references/*.py" = ["F821", "F401", "B"]
|
|
# Re-export modules.
|
|
"**/__init__.py" = ["F401"]
|
|
|
|
# ── Pytest: repo-level suites (plugin scripts, devkit, core, contract) ─────
|
|
# Generated CLI tests are run per-package (see scripts/test-all.sh and CI),
|
|
# because each requires its own installed dependencies.
|
|
[tool.pytest.ini_options]
|
|
testpaths = [
|
|
"cli-anything-web-plugin/scripts/tests",
|
|
"devkit/tests",
|
|
"cli-web-core/tests",
|
|
]
|
|
addopts = "-q"
|
|
markers = [
|
|
"contract: fleet-wide contract tests (require installed CLIs)",
|
|
"live: tests that hit live external services",
|
|
]
|
|
|
|
# ── Coverage ────────────────────────────────────────────────────────────────
|
|
[tool.coverage.run]
|
|
source = [
|
|
"cli-anything-web-plugin/scripts",
|
|
"devkit/cli_web_devkit",
|
|
"cli-web-core/cli_web_core",
|
|
]
|
|
omit = ["*/tests/*"]
|
|
|
|
# ── Mypy: strict on the new packages, off elsewhere (ratchet) ───────────────
|
|
[tool.mypy]
|
|
python_version = "3.10"
|
|
files = ["devkit/cli_web_devkit", "cli-web-core/cli_web_core"]
|
|
strict = true
|
|
warn_unreachable = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
# repl_skin predates the typing standard; vendored byte-identically across
|
|
# the fleet, so annotations are added only with a coordinated resync.
|
|
module = "cli_web_core.repl_skin"
|
|
disallow_untyped_defs = false
|
|
disallow_incomplete_defs = false
|
|
check_untyped_defs = false
|
|
warn_return_any = false
|
|
|
|
[[tool.mypy.overrides]]
|
|
# Optional dependency — only installed with the [repl] extra.
|
|
module = "prompt_toolkit.*"
|
|
ignore_missing_imports = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
# mcp_server is vendored into CLIs (which all depend on click); core itself
|
|
# keeps zero hard deps, so click is a lazy import here.
|
|
module = "cli_web_core.mcp_server"
|
|
disallow_untyped_decorators = false
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = "click.*"
|
|
ignore_missing_imports = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
# doctor is vendored into CLIs (click is a lazy import); the py<3.10 branch
|
|
# is an intentional runtime guard mypy sees as unreachable under py310.
|
|
module = "cli_web_core.doctor"
|
|
disallow_untyped_decorators = false
|
|
warn_unreachable = false
|