diff --git a/analysis/clustering.py b/analysis/clustering.py index 92d35fb..f023871 100644 --- a/analysis/clustering.py +++ b/analysis/clustering.py @@ -11,7 +11,13 @@ import logging from typing import Dict, List, Optional, Tuple import numpy as np -import duckdb + +try: + import duckdb +except ( + Exception +): # pragma: no cover - import-time guard for environments without duckdb + duckdb = None # type: ignore _logger = logging.getLogger(__name__) diff --git a/analysis/explorer_data.py b/analysis/explorer_data.py index 7e81505..1ecdab4 100644 --- a/analysis/explorer_data.py +++ b/analysis/explorer_data.py @@ -9,7 +9,12 @@ from __future__ import annotations import logging from typing import Dict, List, Set, Tuple -import duckdb +try: + import duckdb +except ( + Exception +): # pragma: no cover - allow lightweight import without duckdb installed + duckdb = None # type: ignore import numpy as np import pandas as pd diff --git a/analysis/political_axis.py b/analysis/political_axis.py index 3b62608..01719f7 100644 --- a/analysis/political_axis.py +++ b/analysis/political_axis.py @@ -18,7 +18,11 @@ from typing import Dict, List, Optional, Tuple import numpy as np from . import trajectory as _trajectory -import duckdb + +try: + import duckdb +except Exception: # pragma: no cover - allow importing module in lightweight test envs + duckdb = None # type: ignore _logger = logging.getLogger(__name__) diff --git a/analysis/trajectory.py b/analysis/trajectory.py index ee0b5e7..e343c1b 100644 --- a/analysis/trajectory.py +++ b/analysis/trajectory.py @@ -15,7 +15,13 @@ from typing import Dict, List, Optional, Tuple import numpy as np import pandas as pd -import duckdb + +try: + import duckdb +except ( + Exception +): # pragma: no cover - import-time guard for environments without duckdb + duckdb = None # type: ignore try: from scipy.linalg import orthogonal_procrustes as _scipy_procrustes