fix(heads): .all() before dict() in snapshot_head_metrics
dict(session.execute(...)) on a bare Result invokes the mapping protocol (a Result has .keys() = column names) and subscripts it → "CursorResult is not subscriptable". Materialize with .all() so dict() consumes rows as key-value pairs. The API path already did this; the snapshot task missed it. Caught by test_snapshot_records_timeseries_point (run 1628). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ttrj5P7upUTueSfoJcxEqa
This commit is contained in:
@@ -882,18 +882,22 @@ def snapshot_head_metrics() -> int:
|
||||
)
|
||||
)
|
||||
}
|
||||
# .all() first: dict() of a bare Result tries the mapping protocol (a
|
||||
# Result exposes .keys()) and subscripts it, which fails.
|
||||
applied = dict(
|
||||
session.execute(
|
||||
select(image_tag.c.tag_id, func.count())
|
||||
.where(image_tag.c.source == "head_auto")
|
||||
.group_by(image_tag.c.tag_id)
|
||||
)
|
||||
).all()
|
||||
)
|
||||
tag_ids = set(heads) | set(metrics)
|
||||
if not tag_ids:
|
||||
return 0
|
||||
names = dict(
|
||||
session.execute(select(Tag.id, Tag.name).where(Tag.id.in_(tag_ids)))
|
||||
session.execute(
|
||||
select(Tag.id, Tag.name).where(Tag.id.in_(tag_ids))
|
||||
).all()
|
||||
)
|
||||
for tid in tag_ids:
|
||||
h = heads.get(tid)
|
||||
|
||||
Reference in New Issue
Block a user