feat: Explorable protocol (#36245)

This commit is contained in:
Beto Dealmeida
2025-12-04 13:18:34 -05:00
committed by GitHub
parent c36ac53445
commit 16e6452b8c
14 changed files with 563 additions and 109 deletions

View File

@@ -16,7 +16,7 @@
# under the License.
from __future__ import annotations
from typing import Any, TYPE_CHECKING
from typing import Any
from flask import current_app
@@ -26,13 +26,11 @@ from superset.common.query_object import QueryObject
from superset.common.query_object_factory import QueryObjectFactory
from superset.daos.chart import ChartDAO
from superset.daos.datasource import DatasourceDAO
from superset.explorables.base import Explorable
from superset.models.slice import Slice
from superset.superset_typing import Column
from superset.utils.core import DatasourceDict, DatasourceType, is_adhoc_column
if TYPE_CHECKING:
from superset.connectors.sqla.models import BaseDatasource
def create_query_object_factory() -> QueryObjectFactory:
return QueryObjectFactory(current_app.config, DatasourceDAO())
@@ -104,7 +102,7 @@ class QueryContextFactory: # pylint: disable=too-few-public-methods
cache_values=cache_values,
)
def _convert_to_model(self, datasource: DatasourceDict) -> BaseDatasource:
def _convert_to_model(self, datasource: DatasourceDict) -> Explorable:
return DatasourceDAO.get_datasource(
datasource_type=DatasourceType(datasource["type"]),
database_id_or_uuid=datasource["id"],
@@ -115,7 +113,7 @@ class QueryContextFactory: # pylint: disable=too-few-public-methods
def _process_query_object(
self,
datasource: BaseDatasource,
datasource: Explorable,
form_data: dict[str, Any] | None,
query_object: QueryObject,
) -> QueryObject:
@@ -201,7 +199,7 @@ class QueryContextFactory: # pylint: disable=too-few-public-methods
self,
query_object: QueryObject,
form_data: dict[str, Any] | None,
datasource: BaseDatasource,
datasource: Explorable,
) -> None:
temporal_columns = {
column["column_name"] if isinstance(column, dict) else column.column_name