# #region SupersetClientModule [C:5] [TYPE Module] [SEMANTICS superset, package, superset-client]
# @defgroup Core Module group.
# @LAYER Service
# @BRIEF Предоставляет высокоуровневый асинхронный клиент для взаимодействия с Superset REST API, инкапсулируя логику запросов, обработку ошибок и пагинацию.
# @RELATION DEPENDS_ON -> [ConfigModels]
# @RELATION DEPENDS_ON -> [AsyncAPIClient]
# @RELATION DEPENDS_ON -> [SupersetAPIError]
# @RELATION DEPENDS_ON -> [get_filename_from_headers]
# @RELATION DEPENDS_ON -> [SupersetDatasetsPreviewFiltersMixin]
#
# @INVARIANT  All network operations must use the internal AsyncAPIClient instance.
# @PUBLIC_API  SupersetClient
#
# @RATIONALE  Decomposed from monolithic superset_client.py (2145 lines) into
# domain-scoped mixins to satisfy INV_7 (module < 400 lines). The composed class
# preserves the original public API surface — all consumers continue to import
# `from src.core.superset_client import SupersetClient` without changes.
# Все методы теперь асинхронные, используют AsyncAPIClient вместо APIClient.
# @REJECTED  Keeping a single 2145-line file — violates fractal limit INV_7.
# @PRE  Superset instance URL and credentials configured
# @POST  SupersetClient class exported with async methods
# @SIDE_EFFECT  Асинхронные HTTP-вызовы к Superset API через AsyncAPIClient
# @DATA_CONTRACT  SupersetConfig -> SupersetClient

from ._base import SupersetClientBase
from ._charts import SupersetChartsMixin
from ._dashboards_crud import SupersetDashboardsCrudMixin
from ._dashboards_filters import SupersetDashboardsFiltersMixin
from ._dashboards_list import SupersetDashboardsListMixin
from ._dashboards_write import SupersetDashboardsWriteMixin
from ._databases import SupersetDatabasesMixin
from ._datasets import SupersetDatasetsMixin
from ._datasets_preview import SupersetDatasetsPreviewMixin
from ._datasets_preview_filters import SupersetDatasetsPreviewFiltersMixin
from ._user_projection import SupersetUserProjectionMixin


# #region SupersetClient [C:3] [TYPE Class]
# @defgroup Core Module group.
# @BRIEF Класс-обёртка над Superset REST API, предоставляющий асинхронные методы для работы с дашбордами и датасетами.
# @RELATION DEPENDS_ON -> [ConfigModels]
# @RELATION DEPENDS_ON -> [AsyncAPIClient]
# @RELATION DEPENDS_ON -> [SupersetAPIError]
# @RELATION INHERITS -> [SupersetClientBase]
# @RELATION INHERITS -> [SupersetUserProjectionMixin]
# @RELATION INHERITS -> [SupersetDashboardsListMixin]
# @RELATION INHERITS -> [SupersetDashboardsFiltersMixin]
# @RELATION INHERITS -> [SupersetDashboardsCrudMixin]
# @RELATION INHERITS -> [SupersetChartsMixin]
# @RELATION INHERITS -> [SupersetDatasetsMixin]
# @RELATION INHERITS -> [SupersetDatasetsPreviewMixin]
# @RELATION INHERITS -> [SupersetDatasetsPreviewFiltersMixin]
# @RELATION INHERITS -> [SupersetDatabasesMixin]
# @RELATION INHERITS -> [SupersetDashboardsWriteMixin]
# @SIDE_EFFECT Асинхронные HTTP-вызовы к Superset API через AsyncAPIClient.
class SupersetClient(
    SupersetDatabasesMixin,
    SupersetDatasetsPreviewFiltersMixin,
    SupersetDatasetsPreviewMixin,
    SupersetDatasetsMixin,
    SupersetChartsMixin,
    SupersetDashboardsCrudMixin,
    SupersetDashboardsFiltersMixin,
    SupersetDashboardsListMixin,
    SupersetDashboardsWriteMixin,
    SupersetUserProjectionMixin,
    SupersetClientBase,
):
    """Composed Superset REST API client.

    MRO order ensures domain mixins resolve before base class.
    All consumers continue to use: from src.core.superset_client import SupersetClient

    Все методы асинхронные. Использует AsyncAPIClient для HTTP-вызовов.
    """
    pass


# #endregion SupersetClient

# #endregion SupersetClientModule
