mirror of
https://github.com/NickoScope/nickol-knx-mcp.git
synced 2026-09-30 03:41:58 +02:00
The CI ran tests only. Added a lint job with two narrow gates: ruff with select = E9,F — syntax errors and pyflakes (undefined names, unused imports, broken f-strings). Style rules are deliberately off: the full default set flagged 202 things, almost all cosmetic, and a gate nobody reads is not a gate. Fixed the 9 findings it did have (8 unused imports, 1 empty f-string). mypy, clean at 13 errors fixed. None of the 13 was a live bug, so every fix is an annotation or a local rename: the two accumulators in advanced, the block map in appprog_parser, a reused loop name in project and in repair, a TypedDict lost through dict(), a mixed-type summary dict in handover. Two are worth naming. _CH_TOKEN_RE now captures the letter prefix directly instead of re-matching its own capture, which removes an unguarded .group() on a possibly-None match; the regex accepts exactly the same strings. repair's status-DPT lookup now spells out the None case, which is what dict.get already did since None is not a key there. Verified the fixes moved nothing: the full suite passes, and the corpus guard reports no drift across all six real projects, the 3646-GA one included. Matrix extended to 3.13 and 3.14; both were smoke-tested locally first. Dependabot config for pip and github-actions, weekly and grouped so a quiet week is one PR. Dependabot security updates and CodeQL default setup enabled in the repository settings.
61 lines
2.0 KiB
TOML
61 lines
2.0 KiB
TOML
[project]
|
|
name = "nickol-knx-mcp"
|
|
version = "0.8.1"
|
|
description = "Design-time KNX/ETS6 project assistant as an MCP server (parse .knxproj, validate, generate HA YAML + ETS CSV/XML). No live bus access."
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
license = { text = "MIT" }
|
|
authors = [{ name = "Nikolay Miroshnichenko" }]
|
|
keywords = ["knx", "ets", "ets6", "home-assistant", "mcp", "model-context-protocol", "smart-home", "home-automation"]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: Home Automation",
|
|
"Topic :: Software Development :: Libraries",
|
|
]
|
|
dependencies = [
|
|
"mcp>=1.10,<2", # v2 renames mcp.server.fastmcp.FastMCP -> mcp.server.MCPServer (breaking)
|
|
"xknxproject>=3.8",
|
|
"PyYAML>=6.0",
|
|
"defusedxml>=0.7", # hardened XML parsing of untrusted .knxproj (XXE/billion-laughs)
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/NickoScope/nickol-knx-mcp"
|
|
Repository = "https://github.com/NickoScope/nickol-knx-mcp"
|
|
Issues = "https://github.com/NickoScope/nickol-knx-mcp/issues"
|
|
Changelog = "https://github.com/NickoScope/nickol-knx-mcp/blob/main/CHANGELOG.md"
|
|
|
|
[project.scripts]
|
|
nickol-knx-mcp = "nickol_knx_mcp.server:main"
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools]
|
|
packages = ["nickol_knx_mcp"]
|
|
|
|
[tool.setuptools.package-data]
|
|
nickol_knx_mcp = ["room_templates/*.yaml", "room_templates/*.md"]
|
|
|
|
[tool.ruff]
|
|
target-version = "py310"
|
|
line-length = 110
|
|
|
|
[tool.ruff.lint]
|
|
# Deliberately narrow: real errors, not style. E9 = syntax/IO errors, F = pyflakes
|
|
# (undefined names, unused imports, broken f-strings). Style rules are left off so the
|
|
# gate stays meaningful instead of noisy.
|
|
select = ["E9", "F"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.10"
|
|
ignore_missing_imports = true
|
|
files = ["nickol_knx_mcp"]
|