apache-airflow-task-sdk 1.3.2rc1__tar.gz → 1.4.0b2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/PKG-INFO +7 -5
  2. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/dev/generate_task_sdk_models.py +3 -7
  3. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/airflow-metadata.schema.json +47 -5
  4. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/api.rst +49 -0
  5. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/concepts.rst +1 -1
  6. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/conf.py +2 -1
  7. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/deferred-vs-async-operators.rst +8 -8
  8. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/dynamic-task-mapping.rst +4 -4
  9. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/examples.rst +3 -3
  10. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/executable-bundle-spec.rst +85 -41
  11. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/index.rst +4 -0
  12. apache_airflow_task_sdk-1.4.0b2/docs/lang-sdk-spec.rst +170 -0
  13. apache_airflow_task_sdk-1.4.0b2/docs/lang-sdk.rst +42 -0
  14. apache_airflow_task_sdk-1.4.0b2/docs/ts-bundle-spec.rst +219 -0
  15. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/pyproject.toml +17 -12
  16. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/__init__.py +13 -1
  17. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/__init__.pyi +16 -0
  18. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/configuration/parser.py +13 -5
  19. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/_shared/dagnode/cycle.py +73 -0
  20. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/dagnode/node.py +113 -8
  21. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/logging/percent_formatter.py +1 -4
  22. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/logging/remote.py +12 -4
  23. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/logging/structlog.py +7 -12
  24. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/module_loading/__init__.py +4 -0
  25. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/_shared/module_loading/dag_file.py +152 -0
  26. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/_shared/observability/__init__.py +21 -0
  27. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/datadog_logger.py +18 -31
  28. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/metrics_template.yaml +116 -36
  29. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/otel_logger.py +20 -3
  30. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/stats.py +30 -1
  31. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/statsd_logger.py +63 -16
  32. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/validators.py +0 -1
  33. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/traces/__init__.py +61 -24
  34. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/plugins_manager/__init__.py +6 -0
  35. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/plugins_manager/plugins_manager.py +76 -8
  36. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/providers_discovery/providers_discovery.py +30 -2
  37. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/secrets_backend/base.py +19 -13
  38. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/secrets_masker/secrets_masker.py +20 -12
  39. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/state/__init__.py +40 -10
  40. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/api/client.py +182 -65
  41. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/api/datamodels/_generated.py +91 -4
  42. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/decorator.py +27 -5
  43. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/operator.py +23 -17
  44. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/timetable.py +7 -0
  45. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/xcom.py +362 -73
  46. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/_bundle_metadata.py +142 -0
  47. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/_dag_importer.py +166 -0
  48. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/_subprocess.py +784 -0
  49. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/executable/_bundle_reader.py +195 -0
  50. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/executable/_dag_importer.py +105 -0
  51. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/coordinators/executable/coordinator.py +132 -91
  52. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/java/_dag_importer.py +122 -0
  53. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/java/_jar_manifest.py +71 -0
  54. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/java/coordinator.py +325 -0
  55. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/node/__init__.py +28 -0
  56. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/node/_bundle_reader.py +560 -0
  57. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/node/_dag_importer.py +72 -0
  58. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/coordinators/node/coordinator.py +142 -0
  59. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/abstractoperator.py +2 -0
  60. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/definitions/_internal/loop.py +218 -0
  61. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/node.py +9 -6
  62. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/asset/__init__.py +14 -1
  63. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/asset/decorators.py +5 -4
  64. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/callback.py +23 -1
  65. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/connection.py +38 -2
  66. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/context.py +4 -4
  67. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/dag.py +99 -52
  68. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/deadline.py +72 -28
  69. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/decorators/__init__.pyi +6 -0
  70. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/decorators/task_group.py +35 -8
  71. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/definitions/loop.py +33 -0
  72. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/mappedoperator.py +3 -1
  73. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/retry_policy.py +176 -6
  74. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/taskgroup.py +61 -45
  75. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/definitions/timetables/assets.py +152 -0
  76. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/variable.py +54 -1
  77. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/xcom_arg.py +10 -5
  78. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/exceptions.py +4 -0
  79. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/execution_time/bundles.py +90 -0
  80. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/cache.py +31 -9
  81. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/callback_supervisor.py +39 -2
  82. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/comms.py +71 -6
  83. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/connection_test_supervisor.py +9 -4
  84. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/context.py +276 -45
  85. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/execution_time/coordinator.py +466 -0
  86. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/lazy_sequence.py +6 -2
  87. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/execution_time/loop.py +130 -0
  88. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/request_handlers.py +43 -6
  89. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/schema/schema.json +541 -5
  90. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/schema/versions/__init__.py +18 -0
  91. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/execution_time/schema/versions/v2026_10_30.py +121 -0
  92. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/supervisor.py +997 -449
  93. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/task_runner.py +288 -146
  94. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/execution_time/tracing.py +60 -0
  95. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/__init__.py +56 -0
  96. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/base.py +695 -0
  97. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/python_importer.py +343 -0
  98. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/yaml_importer/__init__.py +33 -0
  99. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/yaml_importer/builder.py +651 -0
  100. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/yaml_importer/importer.py +169 -0
  101. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/yaml_importer/migrator.py +169 -0
  102. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/yaml_importer/models.py +527 -0
  103. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/yaml_importer/parser.py +102 -0
  104. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/yaml_importer/schema.json +417 -0
  105. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/yaml_importer/versions/__init__.py +38 -0
  106. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/importers/zip_importer.py +320 -0
  107. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/io/path.py +2 -1
  108. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/lineage.py +1 -1
  109. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/log.py +34 -14
  110. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/observability/metrics/datadog_logger.py +1 -0
  111. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/observability/metrics/statsd_logger.py +70 -0
  112. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/plugins_manager.py +18 -1
  113. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/providers_manager_runtime.py +75 -1
  114. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/__init__.py +3 -7
  115. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/datetime.py +2 -2
  116. apache_airflow_task_sdk-1.4.0b2/src/airflow/sdk/serde/serializers/lazy_xcom_sequence.py +46 -0
  117. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/state.py +1 -0
  118. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/types.py +12 -1
  119. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/yaml.py +2 -4
  120. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/conftest.py +6 -0
  121. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/__init__.py +5 -5
  122. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/api/test_client.py +694 -374
  123. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/test_decorator.py +12 -0
  124. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/test_operator.py +156 -2
  125. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/bases/test_xcom.py +667 -0
  126. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/executable/_bundle_test_utils.py +98 -0
  127. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/executable/test_bundle_reader.py +217 -0
  128. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/coordinators/executable/test_coordinator.py +275 -40
  129. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/executable/test_dag_importer.py +283 -0
  130. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/java/_jar_test_utils.py +53 -0
  131. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/java/test_coordinator.py +709 -0
  132. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/java/test_dag_importer.py +327 -0
  133. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/java/test_jar_manifest.py +94 -0
  134. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/node/__init__.py +17 -0
  135. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/node/_bundle_test_utils.py +180 -0
  136. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/node/test_bundle_reader.py +623 -0
  137. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/node/test_coordinator.py +429 -0
  138. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/node/test_dag_importer.py +275 -0
  139. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/test_dag_importer.py +214 -0
  140. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/coordinators/test_subprocess.py +1692 -0
  141. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/definitions/_internal/test_loop.py +431 -0
  142. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/_internal/test_templater.py +2 -2
  143. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/decorators/test_result.py +38 -1
  144. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/decorators/test_task_group.py +119 -1
  145. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_asset.py +28 -9
  146. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_asset_decorators.py +38 -0
  147. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_callback.py +17 -1
  148. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_connection.py +67 -0
  149. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_dag.py +369 -10
  150. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_deadline.py +131 -17
  151. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_mappedoperator.py +10 -0
  152. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_retry_policy.py +336 -7
  153. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_variables.py +137 -2
  154. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_xcom_arg.py +115 -2
  155. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/definitions/timetables/test_assets.py +166 -0
  156. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/docs/test_public_api.py +1 -0
  157. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/execution_time/_request_registration_types.py +41 -0
  158. apache_airflow_task_sdk-1.3.2rc1/src/airflow/sdk/_shared/observability/__init__.py → apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/execution_time/exec_probe_target.py +9 -5
  159. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/schema/test_migrator.py +289 -6
  160. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/execution_time/test_bundles.py +86 -0
  161. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_cache.py +43 -0
  162. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_callback_supervisor.py +182 -3
  163. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_comms.py +75 -1
  164. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_connection_test_supervisor.py +112 -0
  165. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_context.py +665 -8
  166. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/execution_time/test_coordinator.py +800 -0
  167. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_lazy_sequence.py +27 -0
  168. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/execution_time/test_loop.py +287 -0
  169. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_request_handlers.py +51 -0
  170. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_secrets.py +20 -0
  171. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_supervisor.py +1974 -183
  172. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_task_runner.py +1105 -233
  173. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/execution_time/test_tracing.py +144 -0
  174. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers/test_python_importer.py +395 -0
  175. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers/test_registry.py +754 -0
  176. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers/test_zip_importer.py +367 -0
  177. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers/yaml_importer/example_dag.yaml +69 -0
  178. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers/yaml_importer/test_importer.py +806 -0
  179. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers/yaml_importer/test_migrator.py +188 -0
  180. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers/yaml_importer/test_parser.py +586 -0
  181. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/io/__init__.py +16 -0
  182. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/serde/__init__.py +16 -0
  183. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/serde/test_serializers.py +13 -1
  184. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/test_log.py +121 -0
  185. apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/test_plugins_manager.py +112 -0
  186. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/test_providers_manager_runtime.py +137 -2
  187. apache_airflow_task_sdk-1.3.2rc1/src/airflow/sdk/_shared/module_loading/dag_file.py +0 -23
  188. apache_airflow_task_sdk-1.3.2rc1/src/airflow/sdk/coordinators/_subprocess.py +0 -431
  189. apache_airflow_task_sdk-1.3.2rc1/src/airflow/sdk/coordinators/java/coordinator.py +0 -230
  190. apache_airflow_task_sdk-1.3.2rc1/src/airflow/sdk/definitions/timetables/assets.py +0 -86
  191. apache_airflow_task_sdk-1.3.2rc1/src/airflow/sdk/execution_time/coordinator.py +0 -275
  192. apache_airflow_task_sdk-1.3.2rc1/src/airflow/sdk/observability/metrics/statsd_logger.py +0 -62
  193. apache_airflow_task_sdk-1.3.2rc1/tests/task_sdk/bases/test_xcom.py +0 -274
  194. apache_airflow_task_sdk-1.3.2rc1/tests/task_sdk/coordinators/java/test_coordinator.py +0 -388
  195. apache_airflow_task_sdk-1.3.2rc1/tests/task_sdk/coordinators/test_subprocess.py +0 -846
  196. apache_airflow_task_sdk-1.3.2rc1/tests/task_sdk/dags/signal_forward_test.py +0 -44
  197. apache_airflow_task_sdk-1.3.2rc1/tests/task_sdk/execution_time/test_coordinator.py +0 -231
  198. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/.gitignore +0 -0
  199. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/.pre-commit-config.yaml +0 -0
  200. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/LICENSE +0 -0
  201. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/NOTICE +0 -0
  202. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/README.md +0 -0
  203. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/dev/datamodel_code_formatter.py +0 -0
  204. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/.gitignore +0 -0
  205. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/img/airflow-2-approach.png +0 -0
  206. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/img/airflow-2-arch.png +0 -0
  207. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/img/airflow-3-arch.png +0 -0
  208. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/img/airflow-3-task-sdk.png +0 -0
  209. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/docs/resumable-job-mixin.rst +0 -0
  210. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/configuration/__init__.py +0 -0
  211. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/configuration/exceptions.py +0 -0
  212. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/dagnode/__init__.py +0 -0
  213. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/listeners/__init__.py +0 -0
  214. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/listeners/listener.py +0 -0
  215. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/listeners/spec/__init__.py +0 -0
  216. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/listeners/spec/lifecycle.py +0 -0
  217. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/listeners/spec/taskinstance.py +0 -0
  218. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/logging/__init__.py +0 -0
  219. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/logging/_config.py +0 -0
  220. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/logging/_noncaching.py +0 -0
  221. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/logging/factory.py +0 -0
  222. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/logging/types.py +0 -0
  223. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/module_loading/file_discovery.py +0 -0
  224. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/common.py +0 -0
  225. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/exceptions.py +0 -0
  226. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/__init__.py +0 -0
  227. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/base_stats_logger.py +0 -0
  228. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/metrics_registry.py +0 -0
  229. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/metrics/protocols.py +0 -0
  230. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/observability/otel_env_config.py +0 -0
  231. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/providers_discovery/__init__.py +0 -0
  232. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/secrets_backend/__init__.py +0 -0
  233. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/secrets_masker/__init__.py +0 -0
  234. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/serialization/__init__.py +0 -0
  235. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/template_rendering/__init__.py +0 -0
  236. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/timezones/__init__.py +0 -0
  237. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/_shared/timezones/timezone.py +0 -0
  238. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/api/__init__.py +0 -0
  239. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/api/datamodels/__init__.py +0 -0
  240. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/api/datamodels/activities.py +0 -0
  241. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/__init__.py +0 -0
  242. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/branch.py +0 -0
  243. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/hook.py +0 -0
  244. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/notifier.py +0 -0
  245. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/operatorlink.py +0 -0
  246. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/resumablejobmixin.py +0 -0
  247. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/secrets_backend.py +0 -0
  248. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/sensor.py +0 -0
  249. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/bases/skipmixin.py +0 -0
  250. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/configuration.py +0 -0
  251. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/coordinators/__init__.py +0 -0
  252. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/coordinators/executable/__init__.py +0 -0
  253. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/coordinators/java/__init__.py +0 -0
  254. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/crypto.py +0 -0
  255. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/__init__.py +0 -0
  256. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/__init__.py +0 -0
  257. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/contextmanager.py +0 -0
  258. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/dag_parsing_context.py +0 -0
  259. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/decorators.py +0 -0
  260. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/expandinput.py +0 -0
  261. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/logging_mixin.py +0 -0
  262. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/mixins.py +0 -0
  263. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/setup_teardown.py +0 -0
  264. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/templater.py +0 -0
  265. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/_internal/types.py +0 -0
  266. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/asset/access_control.py +0 -0
  267. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/asset/metadata.py +0 -0
  268. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/decorators/__init__.py +0 -0
  269. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/decorators/condition.py +0 -0
  270. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/decorators/setup_teardown.py +0 -0
  271. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/edges.py +0 -0
  272. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/operator_resources.py +0 -0
  273. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/param.py +0 -0
  274. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/__init__.py +0 -0
  275. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/allowed_key.py +0 -0
  276. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/base.py +0 -0
  277. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/chain.py +0 -0
  278. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/fixed_key.py +0 -0
  279. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/identity.py +0 -0
  280. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/product.py +0 -0
  281. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/temporal.py +0 -0
  282. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/wait_policy.py +0 -0
  283. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/partition_mappers/window.py +0 -0
  284. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/template.py +0 -0
  285. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/timetables/__init__.py +0 -0
  286. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/timetables/_cron.py +0 -0
  287. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/timetables/_delta.py +0 -0
  288. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/timetables/events.py +0 -0
  289. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/timetables/interval.py +0 -0
  290. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/timetables/simple.py +0 -0
  291. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/definitions/timetables/trigger.py +0 -0
  292. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/__init__.py +0 -0
  293. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/callback_runner.py +0 -0
  294. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/email_backend.py +0 -0
  295. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/execute_workload.py +0 -0
  296. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/hitl.py +0 -0
  297. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/macros.py +0 -0
  298. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/schema/AGENTS.md +0 -0
  299. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/schema/__init__.py +0 -0
  300. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/schema/migrator.py +0 -0
  301. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/secrets/__init__.py +0 -0
  302. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/secrets/execution_api.py +0 -0
  303. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/secrets_masker.py +0 -0
  304. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/sentry/__init__.py +0 -0
  305. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/sentry/configured.py +0 -0
  306. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/sentry/noop.py +0 -0
  307. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/task_mapping.py +0 -0
  308. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/timeout.py +0 -0
  309. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/execution_time/xcom.py +0 -0
  310. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/io/__init__.py +0 -0
  311. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/io/fs.py +0 -0
  312. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/io/stat.py +0 -0
  313. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/io/store.py +0 -0
  314. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/io/typedef.py +0 -0
  315. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/listener.py +0 -0
  316. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/module_loading.py +0 -0
  317. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/observability/__init__.py +0 -0
  318. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/observability/metrics/__init__.py +0 -0
  319. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/observability/metrics/otel_logger.py +0 -0
  320. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/observability/metrics/stats_utils.py +0 -0
  321. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/observability/stats.py +0 -0
  322. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/py.typed +0 -0
  323. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/__init__.py +0 -0
  324. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/bignum.py +0 -0
  325. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/builtin.py +0 -0
  326. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/deltalake.py +0 -0
  327. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/iceberg.py +0 -0
  328. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/kubernetes.py +0 -0
  329. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/numpy.py +0 -0
  330. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/pandas.py +0 -0
  331. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/pydantic.py +0 -0
  332. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/timezone.py +0 -0
  333. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/serializers/uuid.py +0 -0
  334. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/serde/typing.py +0 -0
  335. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/src/airflow/sdk/timezone.py +0 -0
  336. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/__init__.py +0 -0
  337. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/api/__init__.py +0 -0
  338. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/__init__.py +0 -0
  339. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/notifier/test_notifier.txt +0 -0
  340. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/test_branch.py +0 -0
  341. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/test_hook.py +0 -0
  342. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/test_notifier.py +0 -0
  343. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/test_resumablejobmixin.py +0 -0
  344. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/test_sensor.py +0 -0
  345. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/bases/test_skipmixin.py +0 -0
  346. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/coordinators/__init__.py +0 -0
  347. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/coordinators/executable/__init__.py +0 -0
  348. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/coordinators/java/__init__.py +0 -0
  349. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/dags/dag_parsing_context.py +0 -0
  350. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/dags/super_basic.py +0 -0
  351. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/dags/super_basic_deferred_run.py +0 -0
  352. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/dags/super_basic_run.py +0 -0
  353. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/__init__.py +0 -0
  354. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/_internal/__init__.py +0 -0
  355. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/_internal/test_decorators.py +0 -0
  356. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/conftest.py +0 -0
  357. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/decorators/__init__.py +0 -0
  358. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/decorators/test_condition.py +0 -0
  359. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/decorators/test_mapped.py +0 -0
  360. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/decorators/test_setup_teardown.py +0 -0
  361. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/sensors/__init__.py +0 -0
  362. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_asset_access_control.py +0 -0
  363. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_context.py +0 -0
  364. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_macros.py +0 -0
  365. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_mixins.py +0 -0
  366. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_module_loading.py +0 -0
  367. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_operator_resources.py +0 -0
  368. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_param.py +0 -0
  369. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_partition_mappers.py +0 -0
  370. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_taskgroup.py +0 -0
  371. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_template.py +0 -0
  372. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/test_wait_policy.py +0 -0
  373. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/timetables/__init__.py +0 -0
  374. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/definitions/timetables/test__cron.py +0 -0
  375. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/docs/__init__.py +0 -0
  376. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/docs/test_docs_inventory.py +0 -0
  377. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/__init__.py +0 -0
  378. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/conftest.py +0 -0
  379. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/schema/__init__.py +0 -0
  380. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/schema/_mock_version_bundle.py +0 -0
  381. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/schema/test_integration.py +0 -0
  382. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_context_cache.py +0 -0
  383. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_email_backend.py +0 -0
  384. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_hitl.py +0 -0
  385. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_sentry.py +0 -0
  386. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_supervisor_schemas_name_type_sync.py +0 -0
  387. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_task_mapping.py +0 -0
  388. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/execution_time/test_timeout.py +0 -0
  389. {apache_airflow_task_sdk-1.3.2rc1/tests/task_sdk/io → apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers}/__init__.py +0 -0
  390. {apache_airflow_task_sdk-1.3.2rc1/tests/task_sdk/serde → apache_airflow_task_sdk-1.4.0b2/tests/task_sdk/importers/yaml_importer}/__init__.py +0 -0
  391. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/io/test_path.py +0 -0
  392. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/serde/test_serde.py +0 -0
  393. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/test_configuration.py +0 -0
  394. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/test_crypto.py +0 -0
  395. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/test_exceptions.py +0 -0
  396. {apache_airflow_task_sdk-1.3.2rc1 → apache_airflow_task_sdk-1.4.0b2}/tests/task_sdk/test_lineage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: apache-airflow-task-sdk
3
- Version: 1.3.2rc1
3
+ Version: 1.4.0b2
4
4
  Summary: Python Task SDK for Apache Airflow DAG Authors
5
5
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
6
6
  Project-URL: Documentation, https://airflow.staged.apache.org/docs/
@@ -22,22 +22,22 @@ Classifier: Environment :: Web Environment
22
22
  Classifier: Framework :: Apache Airflow
23
23
  Classifier: Intended Audience :: Developers
24
24
  Classifier: Intended Audience :: System Administrators
25
- Classifier: Programming Language :: Python :: 3.10
26
25
  Classifier: Programming Language :: Python :: 3.11
27
26
  Classifier: Programming Language :: Python :: 3.12
28
27
  Classifier: Programming Language :: Python :: 3.13
29
28
  Classifier: Programming Language :: Python :: 3.14
30
29
  Classifier: Topic :: System :: Monitoring
31
- Requires-Python: !=3.15,>=3.10
32
- Requires-Dist: apache-airflow-core<3.4.0,>=3.3.0rc1
30
+ Requires-Python: !=3.15,>=3.11
31
+ Requires-Dist: apache-airflow-core<3.5.0,>=3.4.0b1
33
32
  Requires-Dist: asgiref>=2.3.0; python_version < '3.14'
34
33
  Requires-Dist: asgiref>=3.11.1; python_version >= '3.14'
35
34
  Requires-Dist: attrs!=25.2.0,>=24.2.0
36
35
  Requires-Dist: babel>=2.17.0
36
+ Requires-Dist: cadwyn>=6.1.1
37
37
  Requires-Dist: colorlog>=6.8.2
38
38
  Requires-Dist: fsspec>=2023.10.0
39
39
  Requires-Dist: greenback>=1.2.1
40
- Requires-Dist: httpx>=0.27.0
40
+ Requires-Dist: httpx2>=2.0.0
41
41
  Requires-Dist: importlib-metadata>=6.5; python_version < '3.12'
42
42
  Requires-Dist: isoduration>=20.11.0
43
43
  Requires-Dist: jinja2>=3.1.5
@@ -53,8 +53,10 @@ Requires-Dist: psutil>=6.1.0
53
53
  Requires-Dist: pydantic>2.11.0
54
54
  Requires-Dist: pygtrie>=2.5.0
55
55
  Requires-Dist: python-dateutil>=2.7.0
56
+ Requires-Dist: pyyaml>=6.0.3
56
57
  Requires-Dist: structlog>=26.1.0
57
58
  Requires-Dist: tenacity>=8.3.0
59
+ Requires-Dist: truststore>=0.10.0
58
60
  Requires-Dist: typing-extensions>=4.14.1
59
61
  Provides-Extra: all
60
62
  Requires-Dist: datadog>=0.50.0; extra == 'all'
@@ -20,8 +20,9 @@ import json
20
20
  import os
21
21
  import sys
22
22
  from pathlib import Path
23
+ from tomllib import load as load_tomllib
23
24
 
24
- import httpx
25
+ import httpx2
25
26
  from datamodel_code_generator import (
26
27
  DataModelType,
27
28
  DatetimeClassType,
@@ -47,11 +48,6 @@ task_sdk_root = Path(__file__).parents[1]
47
48
 
48
49
 
49
50
  def load_config():
50
- try:
51
- from tomllib import load as load_tomllib
52
- except ImportError:
53
- from tomli import load as load_tomllib
54
-
55
51
  pyproject = AIRFLOW_TASK_SDK_ROOT_PATH / "pyproject.toml"
56
52
  # Simulate what `datamodel-code-generator` does on the CLI
57
53
  with pyproject.open("rb") as fh:
@@ -81,7 +77,7 @@ def generate_file():
81
77
  app = InProcessExecutionAPI()
82
78
 
83
79
  latest_version = app.app.versions.version_values[0]
84
- client = httpx.Client(transport=app.transport)
80
+ client = httpx2.Client(transport=app.transport)
85
81
  openapi_schema = (
86
82
  client.get(f"http://localhost/openapi.json?version={latest_version}").raise_for_status().text
87
83
  )
@@ -4,7 +4,7 @@
4
4
  "title": "Airflow Executable SDK Bundle Metadata",
5
5
  "description": "Build-time manifest declaring DAG and task identifiers exposed by an Airflow native-executable SDK bundle. See the Executable Bundle Spec documentation in the Airflow Task SDK.",
6
6
  "type": "object",
7
- "required": ["airflow_bundle_metadata_version", "sdk", "source", "dags"],
7
+ "required": ["airflow_bundle_metadata_version", "sdk", "dags"],
8
8
  "additionalProperties": true,
9
9
  "properties": {
10
10
  "airflow_bundle_metadata_version": {
@@ -35,21 +35,63 @@
35
35
  }
36
36
  }
37
37
  },
38
- "source": {
38
+ "entrypoint_path": {
39
39
  "type": "string",
40
- "description": "Original filename of the primary DAG source file (e.g. 'example.go'). The file's bytes are embedded in the bundle's source region; this field is a display name used by the Airflow UI.",
40
+ "description": "Path of the entrypoint source file (e.g. 'example/bundle/main.go'). It must be one of the sources paths. Shown for a Dag that dag_source_paths does not map.",
41
41
  "minLength": 1
42
42
  },
43
+ "dag_source_paths": {
44
+ "type": "object",
45
+ "description": "Mapping of dag_id to the path of the file that defines the Dag. Every value must be one of the sources paths.",
46
+ "additionalProperties": {
47
+ "type": "string",
48
+ "minLength": 1
49
+ }
50
+ },
51
+ "sources": {
52
+ "type": "array",
53
+ "description": "The embedded source files, in the order they appear in the source region. A bundle without it embeds no source. Paths must be unique.",
54
+ "items": {
55
+ "$ref": "#/$defs/sourceEntry"
56
+ }
57
+ },
43
58
  "dags": {
44
59
  "type": "object",
45
- "description": "Mapping of dag_id to DAG entry. Every dag_id the bundle exposes must appear here.",
46
- "minProperties": 1,
60
+ "description": "Mapping of dag_id to the tasks the bundle runs for a Python Dag with stub TaskHandler. May be empty, for example when the bundle only declares Dag definitions.",
47
61
  "additionalProperties": {
48
62
  "$ref": "#/$defs/dagEntry"
49
63
  }
50
64
  }
51
65
  },
52
66
  "$defs": {
67
+ "sourceEntry": {
68
+ "type": "object",
69
+ "description": "One embedded source file inside the bundle's source region.",
70
+ "required": ["path", "offset", "length", "sha256"],
71
+ "additionalProperties": true,
72
+ "properties": {
73
+ "path": {
74
+ "type": "string",
75
+ "description": "The file's path as the author knows it (e.g. 'example/bundle/main.go').",
76
+ "minLength": 1
77
+ },
78
+ "offset": {
79
+ "type": "integer",
80
+ "description": "The file's start, in bytes from the start of the source region.",
81
+ "minimum": 0
82
+ },
83
+ "length": {
84
+ "type": "integer",
85
+ "description": "The file's length in bytes.",
86
+ "minimum": 0
87
+ },
88
+ "sha256": {
89
+ "type": "string",
90
+ "description": "Lower-case hexadecimal SHA-256 of the file's bytes.",
91
+ "pattern": "^[0-9a-f]{64}$"
92
+ }
93
+ }
94
+ },
53
95
  "dagEntry": {
54
96
  "type": "object",
55
97
  "description": "Static description of a single DAG declared in the bundle.",
@@ -94,6 +94,8 @@ Bases
94
94
 
95
95
  .. autoapiclass:: airflow.sdk.BaseXCom
96
96
 
97
+ .. autoapiclass:: airflow.sdk.bases.xcom.XComCoordinate
98
+
97
99
  .. autoapiclass:: airflow.sdk.BranchMixIn
98
100
 
99
101
  .. autoapiclass:: airflow.sdk.PokeReturnValue
@@ -130,6 +132,8 @@ Tasks & Operators
130
132
  -----------------
131
133
  .. autoapiclass:: airflow.sdk.TaskGroup
132
134
 
135
+ .. autoapiclass:: airflow.sdk.LoopDecision
136
+
133
137
  .. autoclass:: airflow.sdk.TaskInstance
134
138
 
135
139
  .. autoapiclass:: airflow.sdk.XComArg
@@ -156,6 +160,8 @@ Tasks page in the core docs for usage and design rationale.
156
160
 
157
161
  .. autoapiclass:: airflow.sdk.ExceptionRetryPolicy
158
162
 
163
+ .. autoapiclass:: airflow.sdk.ChainRetryPolicy
164
+
159
165
  .. autoapiclass:: airflow.sdk.RetryRule
160
166
 
161
167
  .. autoapiclass:: airflow.sdk.RetryDecision
@@ -202,8 +208,12 @@ Assets
202
208
 
203
209
  Timetables
204
210
  ----------
211
+ .. autoapiclass:: airflow.sdk.AssetAndTimeSchedule
212
+
205
213
  .. autoapiclass:: airflow.sdk.AssetOrTimeSchedule
206
214
 
215
+ .. autoapiclass:: airflow.sdk.AssetTriggeredTimetable
216
+
207
217
  .. autoapiclass:: airflow.sdk.CronDataIntervalTimetable
208
218
 
209
219
  .. autoapiclass:: airflow.sdk.CronTriggerTimetable
@@ -302,6 +312,45 @@ See :doc:`apache-airflow:authoring-and-scheduling/language-sdks/index` for a con
302
312
 
303
313
  .. autoapiclass:: airflow.sdk.coordinators.executable.ExecutableCoordinator
304
314
 
315
+ .. rubric:: Node.js (TypeScript)
316
+
317
+ .. autoapiclass:: airflow.sdk.coordinators.node.NodeCoordinator
318
+
319
+ Dag Importers
320
+ -------------
321
+
322
+ |experimental|
323
+
324
+ Dag importers turn the contents of a Dag bundle into Dags. This interface may still change in a minor
325
+ release while it is being stabilized. See :doc:`apache-airflow:administration-and-deployment/dag-importers` for how
326
+ importers are configured and how to write one.
327
+
328
+ .. autoapiclass:: airflow.sdk.importers.AbstractDagImporter
329
+
330
+ .. autoapiclass:: airflow.sdk.importers.DagDefinition
331
+
332
+ .. autoapiclass:: airflow.sdk.importers.FileDagDefinition
333
+
334
+ .. autoapiclass:: airflow.sdk.importers.FilesystemDagDefinition
335
+
336
+ .. autoapiclass:: airflow.sdk.importers.DagImportResult
337
+
338
+ .. autoapiclass:: airflow.sdk.importers.DagImportError
339
+
340
+ .. autoapiclass:: airflow.sdk.importers.DagImportWarning
341
+
342
+ .. autoapiclass:: airflow.sdk.importers.DagSourceCode
343
+
344
+ .. autoapifunction:: airflow.sdk.importers.find_file_dag_definitions
345
+
346
+ .. autoapifunction:: airflow.sdk.importers.get_file_suffix
347
+
348
+ .. rubric:: Built-in importers
349
+
350
+ .. autoapiclass:: airflow.sdk.importers.PythonDagImporter
351
+
352
+ .. autoapiclass:: airflow.sdk.importers.ZipImporter
353
+
305
354
  Execution Time Components
306
355
  -------------------------
307
356
  .. rubric:: Context
@@ -45,7 +45,7 @@ Understanding the task lifecycle helps Dag authors write more effective tasks an
45
45
  - ``task_reschedule_count``: Number of times this task has been rescheduled
46
46
  - ``variables``: List of Airflow variables accessible to the task instance
47
47
  - ``connections``: List of Airflow connections accessible to the task instance
48
- - ``upstream_map_indexes``: Mapping of upstream task IDs to their map indexes for dynamic task mapping scenarios
48
+ - ``upstream_map_indexes``: Mapping of upstream task IDs to their map indexes for task mapping scenarios
49
49
  - ``next_method``: Method name to call when resuming from a deferred state (set when task resumes from a trigger)
50
50
  - ``next_kwargs``: Arguments to pass to the ``next_method`` (can be encrypted for sensitive data)
51
51
  - ``xcom_keys_to_clear``: List of XCom keys that need to be cleared and purged by the worker
@@ -57,7 +57,8 @@ extensions = [
57
57
  "sphinx.ext.intersphinx",
58
58
  "airflow_intersphinx",
59
59
  "exampleinclude",
60
- "sphinxcontrib.spelling",
60
+ "mermaid_svg",
61
+ "airflow_spelling",
61
62
  ]
62
63
 
63
64
  autoapi_dirs = [CONF_DIR.joinpath("..", "src").resolve()]
@@ -38,7 +38,7 @@ Deferred Operators
38
38
  ------------------
39
39
 
40
40
  A deferred operator is an operator that can pause its execution until an external trigger event occurs,
41
- without holding a worker slot. For more details see :doc:`airflow:authoring-and-scheduling/deferring`.
41
+ without holding a worker slot. For more details see :doc:`apache-airflow:authoring-and-scheduling/deferring`.
42
42
  Examples include the HttpOperator in deferrable mode, sensors or operators integrated with triggers.
43
43
 
44
44
  Key characteristics:
@@ -65,7 +65,7 @@ When to Use Deferred Operators
65
65
  Prefer a deferred operator when:
66
66
 
67
67
  - There is an existing deferrable operator that covers your use case (e.g., HttpOperator deferrable mode).
68
- - The task waits for a single or limited external events.
68
+ - The task waits for a single external event or a limited number of events.
69
69
  - You want to free worker resources while waiting for triggers.
70
70
  - You don't need to loop over the same operator multiple times (e.g. multiplexing).
71
71
 
@@ -265,17 +265,17 @@ it is equally important to understand scenarios where one may **not** be appropr
265
265
  If your workflow is better suited for deferring but no operator exists yet,
266
266
  consider implementing a custom deferred operator rather than defaulting to async.
267
267
 
268
- Comparison with Dynamic Task Mapping
269
- ------------------------------------
268
+ Comparison with task mapping
269
+ ----------------------------
270
270
 
271
- Async operators and Dynamic Task Mapping solve different problems and have different trade-offs.
271
+ Async operators and task mapping solve different problems and have different trade-offs.
272
272
 
273
273
  .. list-table::
274
274
  :header-rows: 1
275
275
 
276
276
  * - Aspect
277
277
  - Async ``@task``
278
- - Dynamic Task Mapping (deferrable)
278
+ - Task mapping (deferrable)
279
279
  * - Worker slots
280
280
  - 1 worker slot (shared event loop)
281
281
  - N worker slots (one per mapped task instance)
@@ -292,5 +292,5 @@ Async operators and Dynamic Task Mapping solve different problems and have diffe
292
292
  - Minimal
293
293
  - Scheduler must manage N task instances
294
294
 
295
- For more details about Dynamic Task Mapping, see the
296
- :ref:`dynamic task mapping <sdk-dynamic-task-mapping>` page.
295
+ For more details about task mapping, see the
296
+ :ref:`task mapping <sdk-dynamic-task-mapping>` page.
@@ -17,10 +17,10 @@
17
17
 
18
18
  .. _sdk-dynamic-task-mapping:
19
19
 
20
- Dynamic Task Mapping with Task SDK
21
- ==================================
20
+ Mapped tasks with Task SDK
21
+ ==========================
22
22
 
23
- Dynamic Task Mapping allows tasks defined with the Task SDK to generate
23
+ Task mapping, also called dynamic task mapping, allows tasks defined with the Task SDK to generate
24
24
  a variable number of task instances at runtime based on upstream data.
25
25
  This is enabled via the ``expand()`` method on tasks, providing a way
26
26
  to parallelize execution without knowing the number of tasks ahead of time.
@@ -96,4 +96,4 @@ For advanced patterns—such as repeated mapping, cross-product mapping,
96
96
  named mappings (via ``map_index_template``), and handling large
97
97
  datasets—see the Airflow Core documentation:
98
98
 
99
- `Dynamic Task Mapping in the Airflow Core docs <https://airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/dynamic-task-mapping.html>`_.
99
+ `Mapped tasks in the Airflow Core docs <https://airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/dynamic-task-mapping.html>`_.
@@ -63,13 +63,13 @@ Tasks and Operators
63
63
 
64
64
  Example: Defining tasks and using operators
65
65
 
66
- Use the :func:`airflow.sdk.task` decorator to wrap Python callables as tasks and leverage dynamic task mapping with the ``.expand()`` method. Tasks communicate via :class:`airflow.sdk.XComArg`. For traditional operators and sensors, import classes like :class:`airflow.sdk.BaseOperator` or :class:`airflow.sdk.Sensor`.
66
+ Use the :func:`airflow.sdk.task` decorator to wrap Python callables as tasks and leverage task mapping with the ``.expand()`` method. Tasks communicate via :class:`airflow.sdk.XComArg`. For traditional operators and sensors, import classes like :class:`airflow.sdk.BaseOperator` or :class:`airflow.sdk.Sensor`.
67
67
 
68
68
  .. exampleinclude:: ../../airflow-core/src/airflow/example_dags/example_dynamic_task_mapping.py
69
69
  :language: python
70
70
  :start-after: [START example_dynamic_task_mapping]
71
71
  :end-before: [END example_dynamic_task_mapping]
72
- :caption: Dynamic task mapping with ``expand()``
72
+ :caption: Task mapping with ``expand()``
73
73
 
74
74
  .. exampleinclude:: ../../airflow-core/src/airflow/example_dags/example_xcomargs.py
75
75
  :language: python
@@ -100,7 +100,7 @@ TaskFlow API Tutorial
100
100
  ---------------------
101
101
 
102
102
  This section provides a concise, code-first view. For the full tutorial and context,
103
- see the `core TaskFlow tutorial <../../airflow-core/docs/tutorial/taskflow.rst>`_.
103
+ see the :doc:`core TaskFlow tutorial <apache-airflow:tutorial/taskflow>`.
104
104
 
105
105
  Step 1: Define the Dag
106
106
  ----------------------
@@ -42,29 +42,37 @@ A bundle file therefore has three regions, in order from offset 0:
42
42
 
43
43
  1. The native executable (ELF / Mach-O / PE), including any code-signing
44
44
  structures the platform appends.
45
- 2. The primary DAG source file, embedded verbatim (UTF-8). MAY have length 0.
45
+ 2. The embedded source files, each verbatim (UTF-8), back to back. MAY have length 0.
46
+ The metadata indexes them. See :ref:`the source region <bundle-source-region>`.
46
47
  3. The build-time manifest (``airflow-metadata.yaml`` content, UTF-8).
47
48
 
48
49
  The file ends with a fixed 64-byte trailer that locates regions (2) and (3),
49
50
  carries an integrity hash of the binary region, and identifies the file as a
50
51
  bundle. See :ref:`bundle-trailer-layout`.
51
52
 
52
- Filenames follow OS conventions for executables: no extension on Linux/macOS,
53
- ``.exe`` on Windows. The scanner identifies bundles by the trailer's magic,
54
- not by the filename.
53
+ A bundle file has no file extension, and the Dag processor does not treat a
54
+ file with an extension as a bundle. The scanner identifies bundles by the
55
+ trailer's magic.
55
56
 
56
57
  The complete bundle file regions are:
57
58
 
58
59
  .. code-block:: text
59
60
 
60
61
  [0, source_start) native binary (must be non-empty)
61
- [source_start, metadata_start) embedded source (may be zero length)
62
+ [source_start, metadata_start) embedded source files (may be zero length)
62
63
  [metadata_start, file_size-64) build-time manifest
63
64
  [file_size-64, file_size) 64-byte trailer
64
65
 
65
66
  where ``metadata_start = file_size - 64 - metadata_len`` and
66
67
  ``source_start = metadata_start - source_len``.
67
68
 
69
+ .. _bundle-source-region:
70
+
71
+ The source region holds the source files of the Dags the bundle defines, one entry per file. Files
72
+ are concatenated with no separator, and the ``sources`` list in the manifest gives each file's
73
+ ``path``, ``offset`` and ``length`` within the region and its ``sha256``. A file's ``offset`` is
74
+ relative to ``source_start``, so the first file has offset ``0``.
75
+
68
76
  Reference Implementation
69
77
  ------------------------
70
78
 
@@ -78,12 +86,13 @@ for SDK users. Go SDK's ``airflow-go-pack`` is a good example.
78
86
  #!/usr/bin/env python3
79
87
 
80
88
  import hashlib
89
+ import pathlib
81
90
  import shutil
82
91
  import struct
83
92
 
84
93
  BINARY = pathlib.Path(...) # Path to the compiled executable.
85
94
  OUTPUT = pathlib.Path(...) # Where to put the processed executable.
86
- SOURCE = b"..." # Source code to embed.
95
+ SOURCES = [b"..."] # Source files to embed, in the order the manifest lists them.
87
96
  METADATA = b"..." # UTF-8-encoded YAML metadata.
88
97
 
89
98
  # SHA-256 covers the binary region only: bytes [0, source_start).
@@ -91,7 +100,7 @@ for SDK users. Go SDK's ``airflow-go-pack`` is a good example.
91
100
 
92
101
  trailer = struct.pack(
93
102
  "<III 32s 12s 8s",
94
- len(SOURCE), # source_len
103
+ sum(map(len, SOURCES)), # source_len
95
104
  len(METADATA), # metadata_len
96
105
  1, # footer_ver
97
106
  binary_sha256,
@@ -102,7 +111,7 @@ for SDK users. Go SDK's ``airflow-go-pack`` is a good example.
102
111
 
103
112
  shutil.copy(BINARY, OUTPUT)
104
113
  with OUTPUT.open("ab") as fh:
105
- fh.write(SOURCE) # Embedded source region.
114
+ fh.writelines(SOURCES) # Embedded source region.
106
115
  fh.write(METADATA) # Metadata region.
107
116
  fh.write(trailer)
108
117
  OUTPUT.chmod(0o755)
@@ -155,9 +164,17 @@ Reader algorithm:
155
164
  re-hash on every exec; a cache miss (file replaced, mtime bumped)
156
165
  triggers re-verification.
157
166
  7. Read ``metadata_len`` bytes from ``metadata_start`` for the manifest.
158
- 8. Read ``source_len`` bytes from ``source_start`` for the source view.
159
- If ``source_len == 0``, no source is embedded; the UI displays
160
- "(source not available)".
167
+ 8. Read the source files through the manifest's ``sources`` list. For each entry, check that
168
+ ``offset`` and ``length`` are non-negative integers and that ``offset + length <= source_len``.
169
+ To read a file, read ``length`` bytes from ``source_start + offset`` and compare their SHA-256 to
170
+ ``sha256``. A duplicate ``path`` or a digest mismatch is an error. Without a ``sources`` key, no
171
+ source is embedded, and the UI shows a notice in place of the source.
172
+
173
+ A Dag's source file is the ``dag_source_paths`` entry for its ``dag_id``. A Dag with no entry,
174
+ such as one built dynamically, shows ``entrypoint_path``. A Dag owned by another language, such as
175
+ the Python Dag that a bundle's task handlers run for, shows its own source and not an embedded
176
+ file. ``entrypoint_path`` and every ``dag_source_paths`` value MUST be one of the ``sources``
177
+ paths.
161
178
 
162
179
  Source comes *before* metadata so a future ``footer_ver`` MAY introduce
163
180
  additional trailing blobs (e.g. signed checksums, compressed deps) by
@@ -181,7 +198,19 @@ and editors.
181
198
  language: go
182
199
  version: "0.1.0"
183
200
  supervisor_schema_version: "2026-06-16"
184
- source: example.go
201
+ entrypoint_path: example/bundle/main.go
202
+ dag_source_paths:
203
+ example_dag: example/bundle/main.go
204
+ another_dag: example/bundle/dags/another.go
205
+ sources:
206
+ - path: example/bundle/main.go
207
+ offset: 0
208
+ length: 1532
209
+ sha256: 0f3a...e91c
210
+ - path: example/bundle/dags/another.go
211
+ offset: 1532
212
+ length: 811
213
+ sha256: 7b21...04d8
185
214
  dags:
186
215
  example_dag:
187
216
  tasks:
@@ -213,17 +242,30 @@ Top-level keys:
213
242
  task-execution time, and an unknown version causes that bundle to be
214
243
  skipped.
215
244
 
216
- ``source`` (string, required)
217
- Original filename of the primary DAG source file (e.g. ``example.go``).
218
- The file's bytes live in the source region of the bundle, not at this
219
- path; this field is a display name the Airflow UI uses to label the
220
- source-view panel and pick a syntax-highlighting mode from the
221
- extension.
245
+ ``entrypoint_path`` (string, optional)
246
+ Path of the entrypoint source file, such as the Go ``main`` package file. It MUST be one of
247
+ the ``sources`` paths. The Airflow UI shows it for a Dag that ``dag_source_paths`` does not map.
248
+
249
+ ``dag_source_paths`` (mapping, optional)
250
+ Mapping of ``dag_id`` to the path of the file that defines the Dag. Every value MUST be one of
251
+ the ``sources`` paths.
252
+
253
+ ``sources`` (list, optional)
254
+ The embedded source files, in the order they appear in the source region. A bundle without it
255
+ embeds no source. Each entry has:
256
+
257
+ - ``path`` (string, required): the file's path as the author knows it, such as
258
+ ``example/bundle/main.go``. Paths MUST be unique. The Airflow UI picks a syntax-highlighting
259
+ mode from the extension.
260
+ - ``offset`` (integer, required): the file's start, in bytes from ``source_start``.
261
+ - ``length`` (integer, required): the file's length in bytes.
262
+ - ``sha256`` (string, required): the lower-case hexadecimal SHA-256 of the file's bytes.
222
263
 
223
264
  ``dags`` (mapping, required)
224
- Mapping of ``dag_id`` to a *DAG entry*. Every ``dag_id`` the bundle
225
- exposes MUST appear here. The scanner uses these keys to match a DAG
226
- parsing or task-execution request to the bundle that owns it.
265
+ Mapping of ``dag_id`` to a *DAG entry*, for each Python Dag with stub TaskHandler whose tasks the
266
+ bundle runs. The scanner uses these keys to match a task-execution request to the bundle that
267
+ owns it. The mapping MAY be empty, for example when the bundle only declares Dag definitions,
268
+ because the Dag processor finds those by running the binary.
227
269
 
228
270
  DAG entry fields:
229
271
 
@@ -242,16 +284,16 @@ Go bundle::
242
284
 
243
285
  example
244
286
  ├── ELF/Mach-O/PE executable
245
- ├── source region: contents of example.go
246
- ├── metadata region: airflow-metadata.yaml (source: example.go)
287
+ ├── source region: example/bundle/main.go, example/bundle/dags/another.go
288
+ ├── metadata region: airflow-metadata.yaml (entrypoint_path, dag_source_paths, sources)
247
289
  └── trailer (64 B): lengths + binary_sha256 + AFBNDL01 magic
248
290
 
249
291
  Rust bundle::
250
292
 
251
293
  pipeline
252
294
  ├── ELF/Mach-O/PE executable
253
- ├── source region: contents of main.rs
254
- ├── metadata region: airflow-metadata.yaml (source: main.rs)
295
+ ├── source region: src/main.rs
296
+ ├── metadata region: airflow-metadata.yaml (entrypoint_path: src/main.rs)
255
297
  └── trailer (64 B): lengths + binary_sha256 + AFBNDL01 magic
256
298
 
257
299
  The bundle is one file. ``./example`` runs the binary; the appended data
@@ -271,7 +313,7 @@ that perform additional post-build steps MUST observe the following order:
271
313
  binary region; nothing has been written past its OS-defined end yet, so
272
314
  the digest matches what the reader will recompute over
273
315
  ``[0, source_start)`` after the append.
274
- - **Append** ``<source><metadata><trailer>`` in a single write so a
316
+ - **Append** ``<sources><metadata><trailer>`` in a single write so a
275
317
  partially written file fails the magic or hash check rather than
276
318
  appearing as a half-valid bundle.
277
319
 
@@ -282,10 +324,10 @@ Code Signing
282
324
 
283
325
  The bundle format itself does not require OS-level code signing.
284
326
  ``binary_sha256`` provides integrity against truncation, in-flight
285
- corruption, and naive tampering, and Airflow's threat model treats
286
- ``executables_root`` as Deployment-Manager-controlled — *authenticity*
287
- (signed by a trusted identity) is a deployment-time concern rather than a
288
- bundle-format one.
327
+ corruption, and naive tampering, and Airflow's threat model treats the Dag
328
+ bundle holding the bundles as Deployment-Manager-controlled, so
329
+ *authenticity* (signed by a trusted identity) is a deployment-time concern
330
+ rather than a bundle-format one.
289
331
 
290
332
  **Compressors** such as UPX are NOT supported. They rewrite the file
291
333
  end-to-end, destroying both the trailer and the hash invariant.
@@ -298,22 +340,24 @@ yields a byte-identical bundle file (and therefore a stable
298
340
  Deployment Layout
299
341
  -----------------
300
342
 
301
- Bundle files are placed **as-is** in any of the directories configured as the
302
- ``executables_root`` kwarg on the
343
+ Bundle files are placed **as-is** in the Dag bundle named by the
344
+ ``task_handler_bundle_name`` kwarg on the
303
345
  :class:`~airflow.sdk.coordinators.executable.ExecutableCoordinator` entry
304
- under ``[sdk] coordinators``. The scanner walks each directory **recursively**
305
- and considers only regular files whose **executable bit is set** for the
306
- invoking user; files without the executable bit are skipped without reading
307
- their trailer. For each candidate it reads the last 64 bytes and treats files
346
+ under ``[sdk] coordinators`` (or, when it is unset, in the task's own Dag
347
+ bundle). The scanner walks the Dag bundle **recursively** and considers every
348
+ regular file. For each candidate it reads the last 64 bytes and treats files
308
349
  whose magic matches ``"AFBNDL01"`` as bundles. Matched files are then
309
- SHA-256-verified per the reader algorithm; a mismatch demotes the file back
310
- to "ignored, with an error log." Files without the magic are silently
311
- ignored, so non-bundle files (READMEs, dotfiles) MAY share the directory
312
- without interfering with the scan.
350
+ SHA-256-verified per the reader algorithm; a mismatch demotes the file back to
351
+ "ignored, with an error log." Files without the magic are silently ignored, so
352
+ non-bundle files (READMEs, dotfiles) MAY share the Dag bundle without
353
+ interfering with the scan. A file that matches the selected bundle's
354
+ ``dag_id`` is marked executable before it is run, so an object-store Dag
355
+ bundle (which has no concept of file permissions, and so cannot preserve the
356
+ execute bit a build produced) works too.
313
357
 
314
358
  ::
315
359
 
316
- /opt/airflow/executable-bundles/
360
+ /opt/airflow/go-task-handlers/
317
361
  ├── example
318
362
  ├── team-a/
319
363
  │ └── pipeline
@@ -86,6 +86,7 @@ Why use ``airflow.sdk``?
86
86
  - :class:`airflow.sdk.BaseOperator`
87
87
  - :class:`airflow.sdk.BaseOperatorLink`
88
88
  - :class:`airflow.sdk.BaseSensorOperator`
89
+ - :class:`airflow.sdk.ChainRetryPolicy`
89
90
  - :class:`airflow.sdk.Connection`
90
91
  - :class:`airflow.sdk.Context`
91
92
  - :class:`airflow.sdk.DAG`
@@ -99,6 +100,7 @@ Why use ``airflow.sdk``?
99
100
  - :class:`airflow.sdk.RetryPolicy`
100
101
  - :class:`airflow.sdk.RetryRule`
101
102
  - :class:`airflow.sdk.TaskGroup`
103
+ - :class:`airflow.sdk.LoopDecision`
102
104
  - :class:`airflow.sdk.TaskInstanceState`
103
105
  - :class:`airflow.sdk.DagRunState`
104
106
  - :class:`airflow.sdk.WeightRule`
@@ -178,4 +180,6 @@ For the full public API reference, see the :doc:`api` page.
178
180
  resumable-job-mixin
179
181
  api
180
182
  concepts
183
+ lang-sdk
181
184
  executable-bundle-spec
185
+ ts-bundle-spec