__init__.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #
  2. # Licensed to the Apache Software Foundation (ASF) under one
  3. # or more contributor license agreements. See the NOTICE file
  4. # distributed with this work for additional information
  5. # regarding copyright ownership. The ASF licenses this file
  6. # to you under the Apache License, Version 2.0 (the
  7. # "License"); you may not use this file except in compliance
  8. # with the License. You may obtain a copy of the License at
  9. #
  10. # http://www.apache.org/licenses/LICENSE-2.0
  11. #
  12. # Unless required by applicable law or agreed to in writing,
  13. # software distributed under the License is distributed on an
  14. # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. # KIND, either express or implied. See the License for the
  16. # specific language governing permissions and limitations
  17. # under the License.
  18. """Airflow models."""
  19. from __future__ import annotations
  20. # Do not add new models to this -- this is for compat only
  21. __all__ = [
  22. "DAG",
  23. "ID_LEN",
  24. "Base",
  25. "BaseOperator",
  26. "BaseOperatorLink",
  27. "Connection",
  28. "DagBag",
  29. "DagWarning",
  30. "DagModel",
  31. "DagPickle",
  32. "DagRun",
  33. "DagTag",
  34. "DbCallbackRequest",
  35. "Log",
  36. "MappedOperator",
  37. "Operator",
  38. "Param",
  39. "Pool",
  40. "RenderedTaskInstanceFields",
  41. "SkipMixin",
  42. "SlaMiss",
  43. "TaskFail",
  44. "TaskInstance",
  45. "TaskReschedule",
  46. "Trigger",
  47. "Variable",
  48. "XCom",
  49. "clear_task_instances",
  50. ]
  51. from typing import TYPE_CHECKING
  52. def import_all_models():
  53. for name in __lazy_imports:
  54. __getattr__(name)
  55. import airflow.models.dagwarning
  56. import airflow.models.dataset
  57. import airflow.models.errors
  58. import airflow.models.serialized_dag
  59. import airflow.models.taskinstancehistory
  60. import airflow.models.tasklog
  61. def __getattr__(name):
  62. # PEP-562: Lazy loaded attributes on python modules
  63. if name != "ImportError":
  64. path = __lazy_imports.get(name)
  65. if not path:
  66. raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
  67. from airflow.utils.module_loading import import_string
  68. val = import_string(f"{path}.{name}")
  69. else:
  70. import warnings
  71. from airflow.exceptions import RemovedInAirflow3Warning
  72. from airflow.models.errors import ParseImportError
  73. warnings.warn(
  74. f"Import '{__name__}.ImportError' is deprecated due to shadowing with builtin exception "
  75. f"ImportError and will be removed in the future. "
  76. f"Please consider to use '{ParseImportError.__module__}.ParseImportError' instead.",
  77. RemovedInAirflow3Warning,
  78. stacklevel=2,
  79. )
  80. val = ParseImportError
  81. # Store for next time
  82. globals()[name] = val
  83. return val
  84. __lazy_imports = {
  85. "DAG": "airflow.models.dag",
  86. "ID_LEN": "airflow.models.base",
  87. "Base": "airflow.models.base",
  88. "BaseOperator": "airflow.models.baseoperator",
  89. "BaseOperatorLink": "airflow.models.baseoperatorlink",
  90. "Connection": "airflow.models.connection",
  91. "DagBag": "airflow.models.dagbag",
  92. "DagModel": "airflow.models.dag",
  93. "DagPickle": "airflow.models.dagpickle",
  94. "DagRun": "airflow.models.dagrun",
  95. "DagTag": "airflow.models.dag",
  96. "DagWarning": "airflow.models.dagwarning",
  97. "DbCallbackRequest": "airflow.models.db_callback_request",
  98. "Log": "airflow.models.log",
  99. "MappedOperator": "airflow.models.mappedoperator",
  100. "Operator": "airflow.models.operator",
  101. "Param": "airflow.models.param",
  102. "Pool": "airflow.models.pool",
  103. "RenderedTaskInstanceFields": "airflow.models.renderedtifields",
  104. "SkipMixin": "airflow.models.skipmixin",
  105. "SlaMiss": "airflow.models.slamiss",
  106. "TaskFail": "airflow.models.taskfail",
  107. "TaskInstance": "airflow.models.taskinstance",
  108. "TaskReschedule": "airflow.models.taskreschedule",
  109. "Trigger": "airflow.models.trigger",
  110. "Variable": "airflow.models.variable",
  111. "XCom": "airflow.models.xcom",
  112. "clear_task_instances": "airflow.models.taskinstance",
  113. }
  114. if TYPE_CHECKING:
  115. # I was unable to get mypy to respect a airflow/models/__init__.pyi, so
  116. # having to resort back to this hacky method
  117. from airflow.models.base import ID_LEN, Base
  118. from airflow.models.baseoperator import BaseOperator
  119. from airflow.models.baseoperatorlink import BaseOperatorLink
  120. from airflow.models.connection import Connection
  121. from airflow.models.dag import DAG, DagModel, DagTag
  122. from airflow.models.dagbag import DagBag
  123. from airflow.models.dagpickle import DagPickle
  124. from airflow.models.dagrun import DagRun
  125. from airflow.models.dagwarning import DagWarning
  126. from airflow.models.db_callback_request import DbCallbackRequest
  127. from airflow.models.log import Log
  128. from airflow.models.mappedoperator import MappedOperator
  129. from airflow.models.operator import Operator
  130. from airflow.models.param import Param
  131. from airflow.models.pool import Pool
  132. from airflow.models.renderedtifields import RenderedTaskInstanceFields
  133. from airflow.models.skipmixin import SkipMixin
  134. from airflow.models.slamiss import SlaMiss
  135. from airflow.models.taskfail import TaskFail
  136. from airflow.models.taskinstance import TaskInstance, clear_task_instances
  137. from airflow.models.taskinstancehistory import TaskInstanceHistory
  138. from airflow.models.taskreschedule import TaskReschedule
  139. from airflow.models.trigger import Trigger
  140. from airflow.models.variable import Variable
  141. from airflow.models.xcom import XCom