From d5e99eead17f4e0646dd831481732bed62f05930 Mon Sep 17 00:00:00 2001 From: Deeman Date: Tue, 24 Feb 2026 04:26:22 +0100 Subject: [PATCH] fix(ci): lazy-import duckdb to prevent pytest hang DuckDB spawns non-daemon background threads on import. Since analytics.py was imported at module level (transitively by the test suite), these threads kept the pytest process alive after all tests completed. Moving the import into open_analytics_db() means duckdb is only loaded when actually needed. Co-Authored-By: Claude Sonnet 4.6 --- web/src/padelnomics/analytics.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/src/padelnomics/analytics.py b/web/src/padelnomics/analytics.py index adf4273..05d38ff 100644 --- a/web/src/padelnomics/analytics.py +++ b/web/src/padelnomics/analytics.py @@ -14,14 +14,14 @@ import os from pathlib import Path from typing import Any -import duckdb - -_conn: duckdb.DuckDBPyConnection | None = None +_conn = None # duckdb.DuckDBPyConnection | None — lazy import _DUCKDB_PATH = os.environ.get("SERVING_DUCKDB_PATH", "data/analytics.duckdb") def open_analytics_db() -> None: """Open the DuckDB connection. Call once at app startup.""" + import duckdb + global _conn path = Path(_DUCKDB_PATH) if not path.exists():