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(
|
applied = dict(
|
||||||
session.execute(
|
session.execute(
|
||||||
select(image_tag.c.tag_id, func.count())
|
select(image_tag.c.tag_id, func.count())
|
||||||
.where(image_tag.c.source == "head_auto")
|
.where(image_tag.c.source == "head_auto")
|
||||||
.group_by(image_tag.c.tag_id)
|
.group_by(image_tag.c.tag_id)
|
||||||
)
|
).all()
|
||||||
)
|
)
|
||||||
tag_ids = set(heads) | set(metrics)
|
tag_ids = set(heads) | set(metrics)
|
||||||
if not tag_ids:
|
if not tag_ids:
|
||||||
return 0
|
return 0
|
||||||
names = dict(
|
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:
|
for tid in tag_ids:
|
||||||
h = heads.get(tid)
|
h = heads.get(tid)
|
||||||
|
|||||||
Reference in New Issue
Block a user