Check the four integration nodes under strict mypy

mqtt, http, influx and delay carried the prototype's annotations and were
excluded wholesale. Annotating them leaves nothing to exclude: what the two
untyped dependencies need is an implicit-reexport allowance for
influxdb_client and the import-site ignore croniter already gets elsewhere.

InfluxDbNode.inject now takes the durable flag its supertype passes, and the
cron loop reads its stop event once instead of dereferencing a field that
stop_cron() may have cleared.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H7LwYgJfpkbLCTeiAf8U4A
This commit is contained in:
2026-08-16 16:46:15 +02:00
co-authored by Claude Fable 5
parent 143395358a
commit 32b35255d0
5 changed files with 49 additions and 37 deletions
+9 -10
View File
@@ -46,18 +46,17 @@ build-backend = "hatchling.build"
[tool.mypy]
strict = true
exclude = ["venv", ".venv", "alembic"]
# influxdb_client's Point builder carries no annotations; calling it is not a
# reason to stop checking the caller (app/flow/nodes/influx.py).
untyped_calls_exclude = ["influxdb_client"]
# The integration nodes still carry the prototype's annotations, and croniter and
# influxdb_client ship no stubs. Shrinking one module at a time as each integration
# is revisited; the rest of the package, and everything around it, is checked strictly.
# Every module is checked strictly. influxdb_client is typed but re-exports its
# names implicitly, which strict mode refuses to follow. (croniter, the other
# untyped dependency, is ignored at its two import sites.)
[[tool.mypy.overrides]]
module = [
"app.flow.nodes.delay",
"app.flow.nodes.http",
"app.flow.nodes.influx",
"app.flow.nodes.mqtt",
]
ignore_errors = true
module = ["influxdb_client"]
implicit_reexport = true
[tool.ruff]
target-version = "py310"