{"record":{"id":"8c5dbc94c1e00941","repo":"zylon-ai/private-gpt","slug":"tabular-data-dependencies-are-not-installed-insta","errorCode":null,"errorMessage":"Tabular data dependencies are not installed. Install with `uv sync --inexact --extra tool-tabular`.","messagePattern":"Tabular data dependencies are not installed\\. Install with `uv sync --inexact --extra tool-tabular`\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"private_gpt/components/tools/builders/tabular_data_builder.py","lineNumber":62,"sourceCode":"from private_gpt.utils.dependencies import format_missing_dependency_message\n\nif TYPE_CHECKING:\n    from collections.abc import Coroutine\n\n    from private_gpt.components.tabular.pandasai_service import PandasAIService\n    from private_gpt.components.workflows.tabular.tabular_data import (\n        TabularDataAnalysisInputEvent,\n        TabularDataAnalysisWorkflow,\n    )\n\nconfig = settings()\n\n\ndef _load_pandas_ai_service() -> type[\"PandasAIService\"]:\n    try:\n        from private_gpt.components.tabular.pandasai_service import PandasAIService\n    except ImportError as e:\n        raise ImportError(\n            format_missing_dependency_message(\n                \"Tabular data\",\n                extras=\"tool-tabular\",\n            )\n        ) from e\n\n    return PandasAIService\n\n\ndef _load_tabular_workflow_dependencies() -> tuple[\n    type[\"TabularDataAnalysisInputEvent\"],\n    type[\"TabularDataAnalysisWorkflow\"],\n]:\n    try:\n        from private_gpt.components.workflows.tabular.tabular_data import (\n            TabularDataAnalysisInputEvent,\n            TabularDataAnalysisWorkflow,\n        )","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/zylon-ai/private-gpt/blob/4a030776a31a901ad80b1bf4d7faa2c1a367efbb/private_gpt/components/tools/builders/tabular_data_builder.py#L44-L80","documentation":"ImportError raised by _load_pandas_ai_service when private_gpt.components.tabular.pandasai_service cannot be imported. The tabular data analysis tool depends on pandas-ai and friends, shipped as the optional 'tool-tabular' extra; the loader converts the raw ImportError into an actionable install message.","triggerScenarios":"Building or invoking the tabular data tool in an environment without the tool-tabular extra installed; the import of PandasAIService fails and is chained.","commonSituations":"Base installation used for a deployment that later enables tabular analysis; CI or Docker image built with a minimal extra set; dependency conflict causing pandasai import failure even when nominally installed.","solutions":["Run uv sync --inexact --extra tool-tabular and retry.","If the import still fails after install, check for version conflicts: python -c \"import private_gpt.components.tabular.pandasai_service\" and read the chained ImportError for the actual missing module.","Rebuild Docker/CI images with the extra included."],"exampleFix":"# before\nuv sync --inexact\n\n# after\nuv sync --inexact --extra tool-tabular","handlingStrategy":"type-guard","validationCode":"def pandasai_available() -> bool:\n    try:\n        import private_gpt.components.tabular.pandasai_service  # noqa: F401\n        return True\n    except ImportError:\n        return False","typeGuard":null,"tryCatchPattern":"try:\n    svc = _load_pandas_ai_service()\nexcept ImportError as e:\n    logger.warning(\"tabular tool disabled: %s\", e)\n    return []  # skip registering the tool","preventionTips":["Install uv sync --inexact --extra tool-tabular in every environment that enables the tabular tool.","Probe availability before registering the tool so missing deps do not crash at runtime.","Pin compatible versions of pandasai in the lockfile to avoid broken transitive imports."],"tags":["dependencies","import-error","tabular","optional-extras"],"backgroundTag":null,"analyzedSha":"4a030776a31a901ad80b1bf4d7faa2c1a367efbb","analyzedAt":"2026-08-15T03:51:26.951Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}