From 2b79d18f7ea5b9f787eafecade7ac6c8d5927e72 Mon Sep 17 00:00:00 2001 From: Kaxil Naik Date: Fri, 8 Nov 2024 13:45:33 +0000 Subject: [PATCH] Rename Fast API serializers/schemas to `datamodels` (#43823) Pierre, Ash & I discussed about making the naming consistent for Pydantic Models. We agreed on `datamodels` since it is what OpenAPI terms it too apart from schemas: https://swagger.io/docs/specification/v3_0/data-models/data-models/. We didn't choose `models` because we have DB models named as such. --- .../{serializers => datamodels}/__init__.py | 0 .../{serializers => datamodels}/backfills.py | 0 .../{serializers => datamodels}/connections.py | 0 .../{serializers => datamodels}/dag_run.py | 0 .../{serializers => datamodels}/dag_sources.py | 0 .../{serializers => datamodels}/dag_stats.py | 0 .../{serializers => datamodels}/dag_warning.py | 0 .../core_api/{serializers => datamodels}/dags.py | 0 .../{serializers => datamodels}/event_logs.py | 0 .../{serializers => datamodels}/import_error.py | 0 .../core_api/{serializers => datamodels}/job.py | 0 .../{serializers => datamodels}/monitor.py | 0 .../{serializers => datamodels}/plugins.py | 0 .../core_api/{serializers => datamodels}/pools.py | 0 .../{serializers => datamodels}/providers.py | 0 .../{serializers => datamodels}/task_instances.py | 4 ++-- .../{serializers => datamodels}/trigger.py | 0 .../{serializers => datamodels}/ui/__init__.py | 0 .../{serializers => datamodels}/ui/dags.py | 4 ++-- .../{serializers => datamodels}/ui/dashboard.py | 0 .../{serializers => datamodels}/variables.py | 0 .../{serializers => datamodels}/version.py | 0 .../api_fastapi/core_api/openapi/v1-generated.yaml | 4 ++-- .../core_api/routes/public/backfills.py | 8 ++++---- .../core_api/routes/public/connections.py | 4 ++-- .../api_fastapi/core_api/routes/public/dag_run.py | 4 ++-- .../core_api/routes/public/dag_sources.py | 2 +- .../core_api/routes/public/dag_stats.py | 4 ++-- .../core_api/routes/public/dag_warning.py | 4 ++-- airflow/api_fastapi/core_api/routes/public/dags.py | 4 ++-- .../core_api/routes/public/event_logs.py | 4 ++-- .../core_api/routes/public/import_error.py | 4 ++-- .../api_fastapi/core_api/routes/public/monitor.py | 2 +- .../api_fastapi/core_api/routes/public/plugins.py | 2 +- .../api_fastapi/core_api/routes/public/pools.py | 4 ++-- .../core_api/routes/public/providers.py | 2 +- .../core_api/routes/public/task_instances.py | 4 ++-- .../core_api/routes/public/variables.py | 4 ++-- .../api_fastapi/core_api/routes/public/version.py | 2 +- airflow/api_fastapi/core_api/routes/ui/dags.py | 6 +++--- .../api_fastapi/core_api/routes/ui/dashboard.py | 2 +- .../execution_api/{schemas.py => datamodels.py} | 0 .../execution_api/routes/connections.py | 14 +++++++------- .../execution_api/routes/task_instance.py | 12 ++++++------ airflow/ui/openapi-gen/requests/schemas.gen.ts | 4 ++-- airflow/ui/openapi-gen/requests/types.gen.ts | 4 ++-- 46 files changed, 56 insertions(+), 56 deletions(-) rename airflow/api_fastapi/core_api/{serializers => datamodels}/__init__.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/backfills.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/connections.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/dag_run.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/dag_sources.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/dag_stats.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/dag_warning.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/dags.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/event_logs.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/import_error.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/job.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/monitor.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/plugins.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/pools.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/providers.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/task_instances.py (94%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/trigger.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/ui/__init__.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/ui/dags.py (89%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/ui/dashboard.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/variables.py (100%) rename airflow/api_fastapi/core_api/{serializers => datamodels}/version.py (100%) rename airflow/api_fastapi/execution_api/{schemas.py => datamodels.py} (100%) diff --git a/airflow/api_fastapi/core_api/serializers/__init__.py b/airflow/api_fastapi/core_api/datamodels/__init__.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/__init__.py rename to airflow/api_fastapi/core_api/datamodels/__init__.py diff --git a/airflow/api_fastapi/core_api/serializers/backfills.py b/airflow/api_fastapi/core_api/datamodels/backfills.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/backfills.py rename to airflow/api_fastapi/core_api/datamodels/backfills.py diff --git a/airflow/api_fastapi/core_api/serializers/connections.py b/airflow/api_fastapi/core_api/datamodels/connections.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/connections.py rename to airflow/api_fastapi/core_api/datamodels/connections.py diff --git a/airflow/api_fastapi/core_api/serializers/dag_run.py b/airflow/api_fastapi/core_api/datamodels/dag_run.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/dag_run.py rename to airflow/api_fastapi/core_api/datamodels/dag_run.py diff --git a/airflow/api_fastapi/core_api/serializers/dag_sources.py b/airflow/api_fastapi/core_api/datamodels/dag_sources.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/dag_sources.py rename to airflow/api_fastapi/core_api/datamodels/dag_sources.py diff --git a/airflow/api_fastapi/core_api/serializers/dag_stats.py b/airflow/api_fastapi/core_api/datamodels/dag_stats.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/dag_stats.py rename to airflow/api_fastapi/core_api/datamodels/dag_stats.py diff --git a/airflow/api_fastapi/core_api/serializers/dag_warning.py b/airflow/api_fastapi/core_api/datamodels/dag_warning.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/dag_warning.py rename to airflow/api_fastapi/core_api/datamodels/dag_warning.py diff --git a/airflow/api_fastapi/core_api/serializers/dags.py b/airflow/api_fastapi/core_api/datamodels/dags.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/dags.py rename to airflow/api_fastapi/core_api/datamodels/dags.py diff --git a/airflow/api_fastapi/core_api/serializers/event_logs.py b/airflow/api_fastapi/core_api/datamodels/event_logs.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/event_logs.py rename to airflow/api_fastapi/core_api/datamodels/event_logs.py diff --git a/airflow/api_fastapi/core_api/serializers/import_error.py b/airflow/api_fastapi/core_api/datamodels/import_error.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/import_error.py rename to airflow/api_fastapi/core_api/datamodels/import_error.py diff --git a/airflow/api_fastapi/core_api/serializers/job.py b/airflow/api_fastapi/core_api/datamodels/job.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/job.py rename to airflow/api_fastapi/core_api/datamodels/job.py diff --git a/airflow/api_fastapi/core_api/serializers/monitor.py b/airflow/api_fastapi/core_api/datamodels/monitor.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/monitor.py rename to airflow/api_fastapi/core_api/datamodels/monitor.py diff --git a/airflow/api_fastapi/core_api/serializers/plugins.py b/airflow/api_fastapi/core_api/datamodels/plugins.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/plugins.py rename to airflow/api_fastapi/core_api/datamodels/plugins.py diff --git a/airflow/api_fastapi/core_api/serializers/pools.py b/airflow/api_fastapi/core_api/datamodels/pools.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/pools.py rename to airflow/api_fastapi/core_api/datamodels/pools.py diff --git a/airflow/api_fastapi/core_api/serializers/providers.py b/airflow/api_fastapi/core_api/datamodels/providers.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/providers.py rename to airflow/api_fastapi/core_api/datamodels/providers.py diff --git a/airflow/api_fastapi/core_api/serializers/task_instances.py b/airflow/api_fastapi/core_api/datamodels/task_instances.py similarity index 94% rename from airflow/api_fastapi/core_api/serializers/task_instances.py rename to airflow/api_fastapi/core_api/datamodels/task_instances.py index 47a48c88b768a..00910bce1c8f5 100644 --- a/airflow/api_fastapi/core_api/serializers/task_instances.py +++ b/airflow/api_fastapi/core_api/datamodels/task_instances.py @@ -21,8 +21,8 @@ from pydantic import AliasPath, BaseModel, BeforeValidator, ConfigDict, Field -from airflow.api_fastapi.core_api.serializers.job import JobResponse -from airflow.api_fastapi.core_api.serializers.trigger import TriggerResponse +from airflow.api_fastapi.core_api.datamodels.job import JobResponse +from airflow.api_fastapi.core_api.datamodels.trigger import TriggerResponse from airflow.utils.state import TaskInstanceState diff --git a/airflow/api_fastapi/core_api/serializers/trigger.py b/airflow/api_fastapi/core_api/datamodels/trigger.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/trigger.py rename to airflow/api_fastapi/core_api/datamodels/trigger.py diff --git a/airflow/api_fastapi/core_api/serializers/ui/__init__.py b/airflow/api_fastapi/core_api/datamodels/ui/__init__.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/ui/__init__.py rename to airflow/api_fastapi/core_api/datamodels/ui/__init__.py diff --git a/airflow/api_fastapi/core_api/serializers/ui/dags.py b/airflow/api_fastapi/core_api/datamodels/ui/dags.py similarity index 89% rename from airflow/api_fastapi/core_api/serializers/ui/dags.py rename to airflow/api_fastapi/core_api/datamodels/ui/dags.py index f985ce99a9725..8c7af4dbf4688 100644 --- a/airflow/api_fastapi/core_api/serializers/ui/dags.py +++ b/airflow/api_fastapi/core_api/datamodels/ui/dags.py @@ -19,8 +19,8 @@ from pydantic import BaseModel -from airflow.api_fastapi.core_api.serializers.dag_run import DAGRunResponse -from airflow.api_fastapi.core_api.serializers.dags import DAGResponse +from airflow.api_fastapi.core_api.datamodels.dag_run import DAGRunResponse +from airflow.api_fastapi.core_api.datamodels.dags import DAGResponse class DAGWithLatestDagRunsResponse(DAGResponse): diff --git a/airflow/api_fastapi/core_api/serializers/ui/dashboard.py b/airflow/api_fastapi/core_api/datamodels/ui/dashboard.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/ui/dashboard.py rename to airflow/api_fastapi/core_api/datamodels/ui/dashboard.py diff --git a/airflow/api_fastapi/core_api/serializers/variables.py b/airflow/api_fastapi/core_api/datamodels/variables.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/variables.py rename to airflow/api_fastapi/core_api/datamodels/variables.py diff --git a/airflow/api_fastapi/core_api/serializers/version.py b/airflow/api_fastapi/core_api/datamodels/version.py similarity index 100% rename from airflow/api_fastapi/core_api/serializers/version.py rename to airflow/api_fastapi/core_api/datamodels/version.py diff --git a/airflow/api_fastapi/core_api/openapi/v1-generated.yaml b/airflow/api_fastapi/core_api/openapi/v1-generated.yaml index 9b52f3bc00347..a4e270ed7e6e3 100644 --- a/airflow/api_fastapi/core_api/openapi/v1-generated.yaml +++ b/airflow/api_fastapi/core_api/openapi/v1-generated.yaml @@ -4336,7 +4336,7 @@ components: dag_run_states: $ref: '#/components/schemas/DAGRunStates' task_instance_states: - $ref: '#/components/schemas/airflow__api_fastapi__core_api__serializers__ui__dashboard__TaskInstanceState' + $ref: '#/components/schemas/airflow__api_fastapi__core_api__datamodels__ui__dashboard__TaskInstanceState' type: object required: - dag_run_types @@ -5056,7 +5056,7 @@ components: - git_version title: VersionInfo description: Version information serializer for responses. - airflow__api_fastapi__core_api__serializers__ui__dashboard__TaskInstanceState: + airflow__api_fastapi__core_api__datamodels__ui__dashboard__TaskInstanceState: properties: no_status: type: integer diff --git a/airflow/api_fastapi/core_api/routes/public/backfills.py b/airflow/api_fastapi/core_api/routes/public/backfills.py index 3b61e0fedb4d5..eec98ffd2b2a4 100644 --- a/airflow/api_fastapi/core_api/routes/public/backfills.py +++ b/airflow/api_fastapi/core_api/routes/public/backfills.py @@ -24,14 +24,14 @@ from airflow.api_fastapi.common.db.common import get_session, paginated_select from airflow.api_fastapi.common.parameters import QueryLimit, QueryOffset, SortParam from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import ( - create_openapi_http_exception_doc, -) -from airflow.api_fastapi.core_api.serializers.backfills import ( +from airflow.api_fastapi.core_api.datamodels.backfills import ( BackfillCollectionResponse, BackfillPostBody, BackfillResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import ( + create_openapi_http_exception_doc, +) from airflow.models import DagRun from airflow.models.backfill import ( AlreadyRunningBackfill, diff --git a/airflow/api_fastapi/core_api/routes/public/connections.py b/airflow/api_fastapi/core_api/routes/public/connections.py index fd378601385a8..a963bd1b43f7f 100644 --- a/airflow/api_fastapi/core_api/routes/public/connections.py +++ b/airflow/api_fastapi/core_api/routes/public/connections.py @@ -24,12 +24,12 @@ from airflow.api_fastapi.common.db.common import get_session, paginated_select from airflow.api_fastapi.common.parameters import QueryLimit, QueryOffset, SortParam from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.connections import ( +from airflow.api_fastapi.core_api.datamodels.connections import ( ConnectionBody, ConnectionCollectionResponse, ConnectionResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.models import Connection from airflow.utils import helpers diff --git a/airflow/api_fastapi/core_api/routes/public/dag_run.py b/airflow/api_fastapi/core_api/routes/public/dag_run.py index 7778d7778fa17..d43fde9e340f1 100644 --- a/airflow/api_fastapi/core_api/routes/public/dag_run.py +++ b/airflow/api_fastapi/core_api/routes/public/dag_run.py @@ -29,12 +29,12 @@ ) from airflow.api_fastapi.common.db.common import get_session from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.dag_run import ( +from airflow.api_fastapi.core_api.datamodels.dag_run import ( DAGRunPatchBody, DAGRunPatchStates, DAGRunResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.models import DAG, DagRun dag_run_router = AirflowRouter(tags=["DagRun"], prefix="/dags/{dag_id}/dagRuns") diff --git a/airflow/api_fastapi/core_api/routes/public/dag_sources.py b/airflow/api_fastapi/core_api/routes/public/dag_sources.py index 1d008e9ad2d1c..77b2522d79bff 100644 --- a/airflow/api_fastapi/core_api/routes/public/dag_sources.py +++ b/airflow/api_fastapi/core_api/routes/public/dag_sources.py @@ -23,8 +23,8 @@ from airflow.api_fastapi.common.db.common import get_session from airflow.api_fastapi.common.router import AirflowRouter +from airflow.api_fastapi.core_api.datamodels.dag_sources import DAGSourceResponse from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.dag_sources import DAGSourceResponse from airflow.models.dagcode import DagCode dag_sources_router = AirflowRouter(tags=["DagSource"], prefix="/dagSources") diff --git a/airflow/api_fastapi/core_api/routes/public/dag_stats.py b/airflow/api_fastapi/core_api/routes/public/dag_stats.py index 5d773703224b4..53d30a6082c2f 100644 --- a/airflow/api_fastapi/core_api/routes/public/dag_stats.py +++ b/airflow/api_fastapi/core_api/routes/public/dag_stats.py @@ -28,12 +28,12 @@ from airflow.api_fastapi.common.db.dag_runs import dagruns_select_with_state_count from airflow.api_fastapi.common.parameters import QueryDagIdsFilter from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.dag_stats import ( +from airflow.api_fastapi.core_api.datamodels.dag_stats import ( DagStatsCollectionResponse, DagStatsResponse, DagStatsStateResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.utils.state import DagRunState dag_stats_router = AirflowRouter(tags=["DagStats"], prefix="/dagStats") diff --git a/airflow/api_fastapi/core_api/routes/public/dag_warning.py b/airflow/api_fastapi/core_api/routes/public/dag_warning.py index a981fd9ed58ad..0d990cb0272cb 100644 --- a/airflow/api_fastapi/core_api/routes/public/dag_warning.py +++ b/airflow/api_fastapi/core_api/routes/public/dag_warning.py @@ -34,11 +34,11 @@ SortParam, ) from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.dag_warning import ( +from airflow.api_fastapi.core_api.datamodels.dag_warning import ( DAGWarningCollectionResponse, DAGWarningResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.models import DagWarning dag_warning_router = AirflowRouter(tags=["DagWarning"]) diff --git a/airflow/api_fastapi/core_api/routes/public/dags.py b/airflow/api_fastapi/core_api/routes/public/dags.py index 9a9583ed22a1c..b5690bd38364b 100644 --- a/airflow/api_fastapi/core_api/routes/public/dags.py +++ b/airflow/api_fastapi/core_api/routes/public/dags.py @@ -43,14 +43,14 @@ SortParam, ) from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.dags import ( +from airflow.api_fastapi.core_api.datamodels.dags import ( DAGCollectionResponse, DAGDetailsResponse, DAGPatchBody, DAGResponse, DAGTagCollectionResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.exceptions import AirflowException, DagNotFound from airflow.models import DAG, DagModel, DagTag diff --git a/airflow/api_fastapi/core_api/routes/public/event_logs.py b/airflow/api_fastapi/core_api/routes/public/event_logs.py index 510846b67c477..1e63167c00da0 100644 --- a/airflow/api_fastapi/core_api/routes/public/event_logs.py +++ b/airflow/api_fastapi/core_api/routes/public/event_logs.py @@ -33,11 +33,11 @@ SortParam, ) from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.event_logs import ( +from airflow.api_fastapi.core_api.datamodels.event_logs import ( EventLogCollectionResponse, EventLogResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.models import Log event_logs_router = AirflowRouter(tags=["Event Log"], prefix="/eventLogs") diff --git a/airflow/api_fastapi/core_api/routes/public/import_error.py b/airflow/api_fastapi/core_api/routes/public/import_error.py index a067a7608fe7c..a978cf985c83f 100644 --- a/airflow/api_fastapi/core_api/routes/public/import_error.py +++ b/airflow/api_fastapi/core_api/routes/public/import_error.py @@ -31,11 +31,11 @@ SortParam, ) from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.import_error import ( +from airflow.api_fastapi.core_api.datamodels.import_error import ( ImportErrorCollectionResponse, ImportErrorResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.models.errors import ParseImportError import_error_router = AirflowRouter(tags=["Import Error"], prefix="/importErrors") diff --git a/airflow/api_fastapi/core_api/routes/public/monitor.py b/airflow/api_fastapi/core_api/routes/public/monitor.py index d855e7bdebf4b..38953a18b99fc 100644 --- a/airflow/api_fastapi/core_api/routes/public/monitor.py +++ b/airflow/api_fastapi/core_api/routes/public/monitor.py @@ -19,7 +19,7 @@ from airflow.api.common.airflow_health import get_airflow_health from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.serializers.monitor import HealthInfoSchema +from airflow.api_fastapi.core_api.datamodels.monitor import HealthInfoSchema monitor_router = AirflowRouter(tags=["Monitor"], prefix="/monitor") diff --git a/airflow/api_fastapi/core_api/routes/public/plugins.py b/airflow/api_fastapi/core_api/routes/public/plugins.py index 516344e9b3a25..d0028b7025082 100644 --- a/airflow/api_fastapi/core_api/routes/public/plugins.py +++ b/airflow/api_fastapi/core_api/routes/public/plugins.py @@ -19,7 +19,7 @@ from airflow.api_fastapi.common.parameters import QueryLimit, QueryOffset from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.serializers.plugins import PluginCollectionResponse, PluginResponse +from airflow.api_fastapi.core_api.datamodels.plugins import PluginCollectionResponse, PluginResponse from airflow.plugins_manager import get_plugin_info plugins_router = AirflowRouter(tags=["Plugin"], prefix="/plugins") diff --git a/airflow/api_fastapi/core_api/routes/public/pools.py b/airflow/api_fastapi/core_api/routes/public/pools.py index 5b58c83d8aa22..210b3d50096c1 100644 --- a/airflow/api_fastapi/core_api/routes/public/pools.py +++ b/airflow/api_fastapi/core_api/routes/public/pools.py @@ -26,14 +26,14 @@ from airflow.api_fastapi.common.db.common import get_session, paginated_select from airflow.api_fastapi.common.parameters import QueryLimit, QueryOffset, SortParam from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.pools import ( +from airflow.api_fastapi.core_api.datamodels.pools import ( BasePool, PoolCollectionResponse, PoolPatchBody, PoolPostBody, PoolResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.models.pool import Pool pools_router = AirflowRouter(tags=["Pool"], prefix="/pools") diff --git a/airflow/api_fastapi/core_api/routes/public/providers.py b/airflow/api_fastapi/core_api/routes/public/providers.py index 0386404f420d2..45f3b9a7a1f08 100644 --- a/airflow/api_fastapi/core_api/routes/public/providers.py +++ b/airflow/api_fastapi/core_api/routes/public/providers.py @@ -21,7 +21,7 @@ from airflow.api_fastapi.common.parameters import QueryLimit, QueryOffset from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.serializers.providers import ProviderCollectionResponse, ProviderResponse +from airflow.api_fastapi.core_api.datamodels.providers import ProviderCollectionResponse, ProviderResponse from airflow.providers_manager import ProviderInfo, ProvidersManager providers_router = AirflowRouter(tags=["Provider"], prefix="/providers") diff --git a/airflow/api_fastapi/core_api/routes/public/task_instances.py b/airflow/api_fastapi/core_api/routes/public/task_instances.py index 9d74ed2731111..6f89dc9ad9746 100644 --- a/airflow/api_fastapi/core_api/routes/public/task_instances.py +++ b/airflow/api_fastapi/core_api/routes/public/task_instances.py @@ -36,12 +36,12 @@ float_range_filter_factory, ) from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.task_instances import ( +from airflow.api_fastapi.core_api.datamodels.task_instances import ( TaskDependencyCollectionResponse, TaskInstanceCollectionResponse, TaskInstanceResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.exceptions import TaskNotFound from airflow.models.taskinstance import TaskInstance as TI from airflow.ti_deps.dep_context import DepContext diff --git a/airflow/api_fastapi/core_api/routes/public/variables.py b/airflow/api_fastapi/core_api/routes/public/variables.py index ac1be6e6edb0f..4cd8d46ef4fb7 100644 --- a/airflow/api_fastapi/core_api/routes/public/variables.py +++ b/airflow/api_fastapi/core_api/routes/public/variables.py @@ -24,12 +24,12 @@ from airflow.api_fastapi.common.db.common import get_session, paginated_select from airflow.api_fastapi.common.parameters import QueryLimit, QueryOffset, SortParam from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.variables import ( +from airflow.api_fastapi.core_api.datamodels.variables import ( VariableBody, VariableCollectionResponse, VariableResponse, ) +from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc from airflow.models.variable import Variable variables_router = AirflowRouter(tags=["Variable"], prefix="/variables") diff --git a/airflow/api_fastapi/core_api/routes/public/version.py b/airflow/api_fastapi/core_api/routes/public/version.py index b2ca6fef6ae24..a53fdb2029a6f 100644 --- a/airflow/api_fastapi/core_api/routes/public/version.py +++ b/airflow/api_fastapi/core_api/routes/public/version.py @@ -19,7 +19,7 @@ import airflow from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.serializers.version import VersionInfo +from airflow.api_fastapi.core_api.datamodels.version import VersionInfo from airflow.utils.platform import get_airflow_git_version version_router = AirflowRouter(tags=["Version"], prefix="/version") diff --git a/airflow/api_fastapi/core_api/routes/ui/dags.py b/airflow/api_fastapi/core_api/routes/ui/dags.py index 14d0c72458d1c..ede151ecec2d8 100644 --- a/airflow/api_fastapi/core_api/routes/ui/dags.py +++ b/airflow/api_fastapi/core_api/routes/ui/dags.py @@ -38,9 +38,9 @@ QueryTagsFilter, ) from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.core_api.serializers.dag_run import DAGRunResponse -from airflow.api_fastapi.core_api.serializers.dags import DAGResponse -from airflow.api_fastapi.core_api.serializers.ui.dags import ( +from airflow.api_fastapi.core_api.datamodels.dag_run import DAGRunResponse +from airflow.api_fastapi.core_api.datamodels.dags import DAGResponse +from airflow.api_fastapi.core_api.datamodels.ui.dags import ( DAGWithLatestDagRunsCollectionResponse, DAGWithLatestDagRunsResponse, ) diff --git a/airflow/api_fastapi/core_api/routes/ui/dashboard.py b/airflow/api_fastapi/core_api/routes/ui/dashboard.py index ada47f2fe8534..bec6130c9e025 100644 --- a/airflow/api_fastapi/core_api/routes/ui/dashboard.py +++ b/airflow/api_fastapi/core_api/routes/ui/dashboard.py @@ -24,8 +24,8 @@ from typing_extensions import Annotated from airflow.api_fastapi.common.parameters import DateTimeQuery +from airflow.api_fastapi.core_api.datamodels.ui.dashboard import HistoricalMetricDataResponse from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc -from airflow.api_fastapi.core_api.serializers.ui.dashboard import HistoricalMetricDataResponse from airflow.models.dagrun import DagRun, DagRunType from airflow.models.taskinstance import TaskInstance from airflow.utils.state import DagRunState, TaskInstanceState diff --git a/airflow/api_fastapi/execution_api/schemas.py b/airflow/api_fastapi/execution_api/datamodels.py similarity index 100% rename from airflow/api_fastapi/execution_api/schemas.py rename to airflow/api_fastapi/execution_api/datamodels.py diff --git a/airflow/api_fastapi/execution_api/routes/connections.py b/airflow/api_fastapi/execution_api/routes/connections.py index c5f5e97542b29..2f2c29daa8bab 100644 --- a/airflow/api_fastapi/execution_api/routes/connections.py +++ b/airflow/api_fastapi/execution_api/routes/connections.py @@ -23,7 +23,7 @@ from typing_extensions import Annotated from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.execution_api import schemas +from airflow.api_fastapi.execution_api import datamodels from airflow.exceptions import AirflowNotFoundException from airflow.models.connection import Connection @@ -37,9 +37,9 @@ log = logging.getLogger(__name__) -def get_task_token() -> schemas.TIToken: +def get_task_token() -> datamodels.TIToken: """TODO: Placeholder for task identity authentication. This should be replaced with actual JWT decoding and validation.""" - return schemas.TIToken(ti_key="test_key") + return datamodels.TIToken(ti_key="test_key") @connection_router.get( @@ -51,8 +51,8 @@ def get_task_token() -> schemas.TIToken: ) async def get_connection( connection_id: str, - token: Annotated[schemas.TIToken, Depends(get_task_token)], -) -> schemas.ConnectionResponse: + token: Annotated[datamodels.TIToken, Depends(get_task_token)], +) -> datamodels.ConnectionResponse: """Get an Airflow connection.""" if not has_connection_access(connection_id, token): raise HTTPException( @@ -72,10 +72,10 @@ async def get_connection( "message": f"Connection with ID {connection_id} not found", }, ) - return schemas.ConnectionResponse.model_validate(connection, from_attributes=True) + return datamodels.ConnectionResponse.model_validate(connection, from_attributes=True) -def has_connection_access(connection_id: str, token: schemas.TIToken) -> bool: +def has_connection_access(connection_id: str, token: datamodels.TIToken) -> bool: """Check if the task has access to the connection.""" # TODO: Placeholder for actual implementation diff --git a/airflow/api_fastapi/execution_api/routes/task_instance.py b/airflow/api_fastapi/execution_api/routes/task_instance.py index 8f6331f5a5991..4612b0c0425bc 100644 --- a/airflow/api_fastapi/execution_api/routes/task_instance.py +++ b/airflow/api_fastapi/execution_api/routes/task_instance.py @@ -29,7 +29,7 @@ from airflow.api_fastapi.common.db.common import get_session from airflow.api_fastapi.common.router import AirflowRouter -from airflow.api_fastapi.execution_api import schemas +from airflow.api_fastapi.execution_api import datamodels from airflow.models.taskinstance import TaskInstance as TI from airflow.utils import timezone from airflow.utils.state import State @@ -58,14 +58,14 @@ ) def ti_update_state( task_instance_id: UUID, - ti_patch_payload: Annotated[schemas.TIStateUpdate, Body()], + ti_patch_payload: Annotated[datamodels.TIStateUpdate, Body()], session: Annotated[Session, Depends(get_session)], ): """ Update the state of a TaskInstance. Not all state transitions are valid, and transitioning to some states requires extra information to be - passed along. (Check out the schemas for details, the rendered docs might not reflect this accurately) + passed along. (Check out the datamodels for details, the rendered docs might not reflect this accurately) """ # We only use UUID above for validation purposes ti_id_str = str(task_instance_id) @@ -88,7 +88,7 @@ def ti_update_state( query = update(TI).where(TI.id == ti_id_str).values(data) - if isinstance(ti_patch_payload, schemas.TIEnterRunningPayload): + if isinstance(ti_patch_payload, datamodels.TIEnterRunningPayload): if previous_state != State.QUEUED: log.warning( "Can not start Task Instance ('%s') in invalid state: %s", @@ -118,7 +118,7 @@ def ti_update_state( pid=ti_patch_payload.pid, state=State.RUNNING, ) - elif isinstance(ti_patch_payload, schemas.TITerminalStatePayload): + elif isinstance(ti_patch_payload, datamodels.TITerminalStatePayload): query = TI.duration_expression_update(ti_patch_payload.end_date, query, session.bind) # TODO: Replace this with FastAPI's Custom Exception handling: @@ -146,7 +146,7 @@ def ti_update_state( ) def ti_heartbeat( task_instance_id: UUID, - ti_payload: schemas.TIHeartbeatInfo, + ti_payload: datamodels.TIHeartbeatInfo, session: Annotated[Session, Depends(get_session)], ): """Update the heartbeat of a TaskInstance to mark it as alive & still running.""" diff --git a/airflow/ui/openapi-gen/requests/schemas.gen.ts b/airflow/ui/openapi-gen/requests/schemas.gen.ts index b8c43b7ac2072..0e583e014f0d3 100644 --- a/airflow/ui/openapi-gen/requests/schemas.gen.ts +++ b/airflow/ui/openapi-gen/requests/schemas.gen.ts @@ -1911,7 +1911,7 @@ export const $HistoricalMetricDataResponse = { $ref: "#/components/schemas/DAGRunStates", }, task_instance_states: { - $ref: "#/components/schemas/airflow__api_fastapi__core_api__serializers__ui__dashboard__TaskInstanceState", + $ref: "#/components/schemas/airflow__api_fastapi__core_api__datamodels__ui__dashboard__TaskInstanceState", }, }, type: "object", @@ -3000,7 +3000,7 @@ export const $VersionInfo = { description: "Version information serializer for responses.", } as const; -export const $airflow__api_fastapi__core_api__serializers__ui__dashboard__TaskInstanceState = +export const $airflow__api_fastapi__core_api__datamodels__ui__dashboard__TaskInstanceState = { properties: { no_status: { diff --git a/airflow/ui/openapi-gen/requests/types.gen.ts b/airflow/ui/openapi-gen/requests/types.gen.ts index 08f174e9b39fc..2b96ab7140a62 100644 --- a/airflow/ui/openapi-gen/requests/types.gen.ts +++ b/airflow/ui/openapi-gen/requests/types.gen.ts @@ -454,7 +454,7 @@ export type HealthInfoSchema = { export type HistoricalMetricDataResponse = { dag_run_types: DAGRunTypes; dag_run_states: DAGRunStates; - task_instance_states: airflow__api_fastapi__core_api__serializers__ui__dashboard__TaskInstanceState; + task_instance_states: airflow__api_fastapi__core_api__datamodels__ui__dashboard__TaskInstanceState; }; /** @@ -715,7 +715,7 @@ export type VersionInfo = { /** * TaskInstance serializer for responses. */ -export type airflow__api_fastapi__core_api__serializers__ui__dashboard__TaskInstanceState = +export type airflow__api_fastapi__core_api__datamodels__ui__dashboard__TaskInstanceState = { no_status: number; removed: number;