This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new c199b1a105 Move Pydantic classes for ORM objects to serialization 
(#30484)
c199b1a105 is described below

commit c199b1a10563a11cf24436e38cb167ae82c01601
Author: Jarek Potiuk <[email protected]>
AuthorDate: Thu Apr 6 08:44:23 2023 +0200

    Move Pydantic classes for ORM objects to serialization (#30484)
    
    The Pydantic classes are really part of the serialization
    mechanism and they should be moved there, rather than kept in
    the core packages they serialize, following our serialization
    approach.
---
 airflow/models/pydantic/__init__.py                      | 16 ----------------
 airflow/{jobs => serialization}/pydantic/__init__.py     |  0
 airflow/{jobs => serialization}/pydantic/base_job.py     |  2 +-
 airflow/{models => serialization}/pydantic/dag_run.py    |  2 +-
 airflow/{models => serialization}/pydantic/dataset.py    |  0
 .../{models => serialization}/pydantic/taskinstance.py   |  0
 airflow/serialization/serialized_objects.py              |  8 ++++----
 pyproject.toml                                           |  5 +----
 tests/api_internal/endpoints/test_rpc_api_endpoint.py    |  2 +-
 tests/api_internal/test_internal_api_call.py             |  2 +-
 tests/{models => serialization}/test_pydantic_models.py  |  8 ++++----
 tests/serialization/test_serialized_objects.py           |  2 +-
 12 files changed, 14 insertions(+), 33 deletions(-)

diff --git a/airflow/models/pydantic/__init__.py 
b/airflow/models/pydantic/__init__.py
deleted file mode 100644
index 13a83393a9..0000000000
--- a/airflow/models/pydantic/__init__.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
diff --git a/airflow/jobs/pydantic/__init__.py 
b/airflow/serialization/pydantic/__init__.py
similarity index 100%
rename from airflow/jobs/pydantic/__init__.py
rename to airflow/serialization/pydantic/__init__.py
diff --git a/airflow/jobs/pydantic/base_job.py 
b/airflow/serialization/pydantic/base_job.py
similarity index 95%
rename from airflow/jobs/pydantic/base_job.py
rename to airflow/serialization/pydantic/base_job.py
index bad9aeca48..a5c5556d53 100644
--- a/airflow/jobs/pydantic/base_job.py
+++ b/airflow/serialization/pydantic/base_job.py
@@ -20,7 +20,7 @@ from typing import Optional
 
 from pydantic import BaseModel as BaseModelPydantic
 
-from airflow.models.pydantic.taskinstance import TaskInstancePydantic
+from airflow.serialization.pydantic.taskinstance import TaskInstancePydantic
 
 
 class BaseJobPydantic(BaseModelPydantic):
diff --git a/airflow/models/pydantic/dag_run.py 
b/airflow/serialization/pydantic/dag_run.py
similarity index 95%
rename from airflow/models/pydantic/dag_run.py
rename to airflow/serialization/pydantic/dag_run.py
index e2d44296b9..f7d390e731 100644
--- a/airflow/models/pydantic/dag_run.py
+++ b/airflow/serialization/pydantic/dag_run.py
@@ -20,7 +20,7 @@ from typing import List, Optional
 
 from pydantic import BaseModel as BaseModelPydantic
 
-from airflow.models.pydantic.dataset import DatasetEventPydantic
+from airflow.serialization.pydantic.dataset import DatasetEventPydantic
 
 
 class DagRunPydantic(BaseModelPydantic):
diff --git a/airflow/models/pydantic/dataset.py 
b/airflow/serialization/pydantic/dataset.py
similarity index 100%
rename from airflow/models/pydantic/dataset.py
rename to airflow/serialization/pydantic/dataset.py
diff --git a/airflow/models/pydantic/taskinstance.py 
b/airflow/serialization/pydantic/taskinstance.py
similarity index 100%
rename from airflow/models/pydantic/taskinstance.py
rename to airflow/serialization/pydantic/taskinstance.py
diff --git a/airflow/serialization/serialized_objects.py 
b/airflow/serialization/serialized_objects.py
index b3d783ad69..45ef83f927 100644
--- a/airflow/serialization/serialized_objects.py
+++ b/airflow/serialization/serialized_objects.py
@@ -39,7 +39,6 @@ from airflow.configuration import conf
 from airflow.datasets import Dataset
 from airflow.exceptions import AirflowException, RemovedInAirflow3Warning, 
SerializationError
 from airflow.jobs.base_job import BaseJob
-from airflow.jobs.pydantic.base_job import BaseJobPydantic
 from airflow.models.baseoperator import BaseOperator, BaseOperatorLink
 from airflow.models.connection import Connection
 from airflow.models.dag import DAG, create_timetable
@@ -48,9 +47,6 @@ from airflow.models.expandinput import EXPAND_INPUT_EMPTY, 
ExpandInput, create_e
 from airflow.models.mappedoperator import MappedOperator
 from airflow.models.operator import Operator
 from airflow.models.param import Param, ParamsDict
-from airflow.models.pydantic.dag_run import DagRunPydantic
-from airflow.models.pydantic.dataset import DatasetPydantic
-from airflow.models.pydantic.taskinstance import TaskInstancePydantic
 from airflow.models.taskinstance import SimpleTaskInstance, TaskInstance
 from airflow.models.taskmixin import DAGNode
 from airflow.models.xcom_arg import XComArg, deserialize_xcom_arg, 
serialize_xcom_arg
@@ -58,6 +54,10 @@ from airflow.providers_manager import ProvidersManager
 from airflow.serialization.enums import DagAttributeTypes as DAT, Encoding
 from airflow.serialization.helpers import serialize_template_field
 from airflow.serialization.json_schema import Validator, load_dag_schema
+from airflow.serialization.pydantic.base_job import BaseJobPydantic
+from airflow.serialization.pydantic.dag_run import DagRunPydantic
+from airflow.serialization.pydantic.dataset import DatasetPydantic
+from airflow.serialization.pydantic.taskinstance import TaskInstancePydantic
 from airflow.settings import DAGS_FOLDER, json
 from airflow.timetables.base import Timetable
 from airflow.utils.code_utils import get_python_source
diff --git a/pyproject.toml b/pyproject.toml
index 0a5f4eddb6..0568ed62f9 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -139,10 +139,7 @@ known-third-party = [
 
 # The Pydantic representations of SqlAlchemy Models are not parsed well with 
Pydantic
 # when __future__.annotations is used so we need to skip them from upgrading
-"airflow/models/pydantic/taskinstance.py" = ["I002"]
-"airflow/models/pydantic/dag_run.py" = ["I002"]
-"airflow/models/pydantic/dataset.py" = ["I002"]
-"airflow/jobs/pydantic/base_job.py" = ["I002"]
+"airflow/serialization/pydantic/*.py" = ["I002"]
 
 # Ignore pydoc style from these
 "*.pyi" = ["D"]
diff --git a/tests/api_internal/endpoints/test_rpc_api_endpoint.py 
b/tests/api_internal/endpoints/test_rpc_api_endpoint.py
index 9e09376dd6..39f3af7388 100644
--- a/tests/api_internal/endpoints/test_rpc_api_endpoint.py
+++ b/tests/api_internal/endpoints/test_rpc_api_endpoint.py
@@ -23,9 +23,9 @@ from unittest import mock
 import pytest
 from flask import Flask
 
-from airflow.models.pydantic.taskinstance import TaskInstancePydantic
 from airflow.models.taskinstance import TaskInstance
 from airflow.operators.empty import EmptyOperator
+from airflow.serialization.pydantic.taskinstance import TaskInstancePydantic
 from airflow.serialization.serialized_objects import BaseSerialization
 from airflow.utils.state import State
 from airflow.www import app
diff --git a/tests/api_internal/test_internal_api_call.py 
b/tests/api_internal/test_internal_api_call.py
index e7cd488e66..a70e5d6993 100644
--- a/tests/api_internal/test_internal_api_call.py
+++ b/tests/api_internal/test_internal_api_call.py
@@ -25,9 +25,9 @@ import pytest
 import requests
 
 from airflow.api_internal.internal_api_call import InternalApiConfig, 
internal_api_call
-from airflow.models.pydantic.taskinstance import TaskInstancePydantic
 from airflow.models.taskinstance import TaskInstance
 from airflow.operators.empty import EmptyOperator
+from airflow.serialization.pydantic.taskinstance import TaskInstancePydantic
 from airflow.serialization.serialized_objects import BaseSerialization
 from airflow.utils.state import State
 from tests.test_utils.config import conf_vars
diff --git a/tests/models/test_pydantic_models.py 
b/tests/serialization/test_pydantic_models.py
similarity index 94%
rename from tests/models/test_pydantic_models.py
rename to tests/serialization/test_pydantic_models.py
index bc36e0cda4..d81401315c 100644
--- a/tests/models/test_pydantic_models.py
+++ b/tests/serialization/test_pydantic_models.py
@@ -20,16 +20,16 @@ from __future__ import annotations
 from pydantic import parse_raw_as
 
 from airflow.jobs.local_task_job import LocalTaskJob
-from airflow.jobs.pydantic.base_job import BaseJobPydantic
 from airflow.models.dataset import (
     DagScheduleDatasetReference,
     DatasetEvent,
     DatasetModel,
     TaskOutletDatasetReference,
 )
-from airflow.models.pydantic.dag_run import DagRunPydantic
-from airflow.models.pydantic.dataset import DatasetEventPydantic
-from airflow.models.pydantic.taskinstance import TaskInstancePydantic
+from airflow.serialization.pydantic.base_job import BaseJobPydantic
+from airflow.serialization.pydantic.dag_run import DagRunPydantic
+from airflow.serialization.pydantic.dataset import DatasetEventPydantic
+from airflow.serialization.pydantic.taskinstance import TaskInstancePydantic
 from airflow.utils import timezone
 from airflow.utils.state import State
 from airflow.utils.types import DagRunType
diff --git a/tests/serialization/test_serialized_objects.py 
b/tests/serialization/test_serialized_objects.py
index 7ccf16bb6a..8981cafcc4 100644
--- a/tests/serialization/test_serialized_objects.py
+++ b/tests/serialization/test_serialized_objects.py
@@ -20,9 +20,9 @@ from __future__ import annotations
 import pytest
 
 from airflow.exceptions import SerializationError
-from airflow.models.pydantic.taskinstance import TaskInstancePydantic
 from airflow.models.taskinstance import TaskInstance
 from airflow.operators.empty import EmptyOperator
+from airflow.serialization.pydantic.taskinstance import TaskInstancePydantic
 from airflow.utils.state import State
 from tests import REPO_ROOT
 

Reply via email to