spooling 0.2.3__tar.gz → 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {spooling-0.2.3/spooling.egg-info → spooling-0.2.4}/PKG-INFO +1 -1
- {spooling-0.2.3 → spooling-0.2.4}/pyproject.toml +1 -1
- {spooling-0.2.3 → spooling-0.2.4}/spooling/cloud.py +13 -5
- {spooling-0.2.3 → spooling-0.2.4/spooling.egg-info}/PKG-INFO +1 -1
- {spooling-0.2.3 → spooling-0.2.4}/LICENSE +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/README.md +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/setup.cfg +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/__init__.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/agent.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/classifiers.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/cli.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/config.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/__init__.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/base.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/bigquery.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/clickhouse.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/factory.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/mongodb.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/mysql.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/postgresql.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/rest/__init__.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/rest/base.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/rest/shopify_connectors.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/snowflake.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/connectors/types.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/db.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/embeddings.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/evals.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/experiments.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/ingest.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/mcp_server.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/parser.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/pricing.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/__init__.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/antigravity.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/base.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/codex.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/copilot.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/cortex_code.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/cursor.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/gemini.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/github.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/gitlab.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/kiro.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/opencode.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/session_file.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/providers/windsurf.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/redact.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/remote_otel.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/schema.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/sdk.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/search.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/server.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/stats.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/subscription_pricing.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/tracing.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/tunnel.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/tunnel_auth.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling/watcher.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling.egg-info/SOURCES.txt +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling.egg-info/dependency_links.txt +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling.egg-info/entry_points.txt +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling.egg-info/requires.txt +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/spooling.egg-info/top_level.txt +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/tests/test_mcp_auth_middleware.py +0 -0
- {spooling-0.2.3 → spooling-0.2.4}/tests/test_tunnel_auth.py +0 -0
|
@@ -221,6 +221,14 @@ def _collect_traces(session_ids: list[str]) -> list[dict]:
|
|
|
221
221
|
"""
|
|
222
222
|
if not session_ids:
|
|
223
223
|
return []
|
|
224
|
+
|
|
225
|
+
def _ts(v) -> str | None:
|
|
226
|
+
"""Return an ISO-8601 string regardless of whether v is a datetime or str."""
|
|
227
|
+
if v is None:
|
|
228
|
+
return None
|
|
229
|
+
if isinstance(v, str):
|
|
230
|
+
return v
|
|
231
|
+
return v.isoformat()
|
|
224
232
|
conn = get_connection()
|
|
225
233
|
try:
|
|
226
234
|
placeholders = ", ".join(["%s"] * len(session_ids))
|
|
@@ -262,8 +270,8 @@ def _collect_traces(session_ids: list[str]) -> list[dict]:
|
|
|
262
270
|
"kind": s["kind"],
|
|
263
271
|
"name": _clean_str(s["name"], _MAX_SPAN_NAME),
|
|
264
272
|
"status": s["status"] or "ok",
|
|
265
|
-
"started_at": s["started_at"]
|
|
266
|
-
"ended_at": s["ended_at"]
|
|
273
|
+
"started_at": _ts(s["started_at"]),
|
|
274
|
+
"ended_at": _ts(s["ended_at"]),
|
|
267
275
|
"duration_ms": int(s["duration_ms"] or 0),
|
|
268
276
|
"depth": int(s["depth"] or 0),
|
|
269
277
|
"sequence": int(s["sequence"] or 0),
|
|
@@ -285,7 +293,7 @@ def _collect_traces(session_ids: list[str]) -> list[dict]:
|
|
|
285
293
|
"events": [
|
|
286
294
|
{
|
|
287
295
|
"name": e["name"],
|
|
288
|
-
"timestamp": e["timestamp"]
|
|
296
|
+
"timestamp": _ts(e["timestamp"]),
|
|
289
297
|
"attrs": e["attrs"] or {},
|
|
290
298
|
}
|
|
291
299
|
for e in events
|
|
@@ -298,8 +306,8 @@ def _collect_traces(session_ids: list[str]) -> list[dict]:
|
|
|
298
306
|
"provider_id": t["provider_id"],
|
|
299
307
|
"project": t["project"],
|
|
300
308
|
"title": _clean_str(t["title"], _MAX_TITLE),
|
|
301
|
-
"started_at": t["started_at"]
|
|
302
|
-
"ended_at": t["ended_at"]
|
|
309
|
+
"started_at": _ts(t["started_at"]),
|
|
310
|
+
"ended_at": _ts(t["ended_at"]),
|
|
303
311
|
"duration_ms": int(t["duration_ms"] or 0),
|
|
304
312
|
"span_count": int(t["span_count"] or 0),
|
|
305
313
|
"agent_count": int(t["agent_count"] or 0),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|