Release v0.7.0 #113

Merged
xavierk merged 11 commits from release/v0.7.0 into main 2026-10-06 07:41:01 +00:00
4 changed files with 8 additions and 2 deletions
Showing only changes of commit ef9e7fa7a8 - Show all commits
+3
View File
@@ -711,15 +711,18 @@ def _counter_deltas(
columns = ", ".join( columns = ", ".join(
key if key in present else "NULL" for key, _, _ in DIAGNOSTIC_COUNTERS) key if key in present else "NULL" for key, _, _ in DIAGNOSTIC_COUNTERS)
columns += ", segment_id" columns += ", segment_id"
# nosemgrep: python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query -- columns come from module constants, values are bound
last = conn.execute( last = conn.execute(
"SELECT id, %s FROM samples WHERE ts <= ? ORDER BY ts DESC, id DESC " "SELECT id, %s FROM samples WHERE ts <= ? ORDER BY ts DESC, id DESC "
"LIMIT 1" % columns, (end.isoformat(),), "LIMIT 1" % columns, (end.isoformat(),),
).fetchone() ).fetchone()
first = None first = None
if start is not None and last is not None: if start is not None and last is not None:
# nosemgrep: python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query -- columns come from module constants, values are bound
first = conn.execute( first = conn.execute(
"SELECT id, %s FROM samples WHERE ts <= ? ORDER BY ts DESC, id DESC " "SELECT id, %s FROM samples WHERE ts <= ? ORDER BY ts DESC, id DESC "
"LIMIT 1" % columns, (start.isoformat(),), "LIMIT 1" % columns, (start.isoformat(),),
# nosemgrep: python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query -- columns come from module constants, values are bound
).fetchone() or conn.execute( ).fetchone() or conn.execute(
"SELECT id, %s FROM samples WHERE ts > ? AND ts <= ? " "SELECT id, %s FROM samples WHERE ts > ? AND ts <= ? "
"ORDER BY ts, id LIMIT 1" % columns, "ORDER BY ts, id LIMIT 1" % columns,
+2
View File
@@ -254,6 +254,7 @@ def write_sample(
segment_id = current_segment["id"] if current_segment else None segment_id = current_segment["id"] if current_segment else None
# Insert sample with segment_id # Insert sample with segment_id
# nosemgrep: python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query -- columns come from module constants, values are bound
cursor = conn.execute( cursor = conn.execute(
""" """
INSERT INTO samples ( INSERT INTO samples (
@@ -387,6 +388,7 @@ def _stage_observation(
separators=(",", ":"), separators=(",", ":"),
sort_keys=True, sort_keys=True,
) )
# nosemgrep: python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query -- columns come from module constants, values are bound
cursor = conn.execute( cursor = conn.execute(
"INSERT INTO pending_publications (sample_ts, payload) VALUES (?, ?)", "INSERT INTO pending_publications (sample_ts, payload) VALUES (?, ?)",
(sample["ts"], payload), (sample["ts"], payload),
+1
View File
@@ -447,6 +447,7 @@ def _migrate_6_to_7(conn: sqlite3.Connection) -> None:
return return
for column in DIAGNOSTIC_SAMPLE_COLUMNS: for column in DIAGNOSTIC_SAMPLE_COLUMNS:
if column not in cols: if column not in cols:
# nosemgrep: python.lang.security.audit.formatted-sql-query.formatted-sql-query, python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query -- column is from DIAGNOSTIC_SAMPLE_COLUMNS, a constant
conn.execute(f"ALTER TABLE samples ADD COLUMN {column} INTEGER") conn.execute(f"ALTER TABLE samples ADD COLUMN {column} INTEGER")
+2 -2
View File
@@ -15,7 +15,7 @@ from __future__ import annotations
import json import json
import math import math
import sqlite3 import sqlite3
from datetime import date, datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
from pathlib import Path from pathlib import Path
from typing import Any, Callable, Dict, List, Optional from typing import Any, Callable, Dict, List, Optional
@@ -1906,7 +1906,7 @@ class FenrisTuiApp(App):
"tbw_terabytes": tbw, "tbw_terabytes": tbw,
"source_url": source_url, "source_url": source_url,
"document_revision": None, "document_revision": None,
"entry_date": date.today().isoformat(), "entry_date": self._clock_now.date().isoformat(),
"model_string": None, "model_string": None,
"nominal_capacity_bytes": None, "nominal_capacity_bytes": None,
"validated_by": "user", "validated_by": "user",