apache-airflow-task-sdk 1.3.2__tar.gz → 1.4.0b1__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 (393) hide show
  1. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/PKG-INFO +7 -6
  2. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/dev/generate_task_sdk_models.py +1 -5
  3. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/airflow-metadata.schema.json +46 -3
  4. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/api.rst +45 -0
  5. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/concepts.rst +1 -1
  6. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/conf.py +2 -1
  7. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/deferred-vs-async-operators.rst +8 -8
  8. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/dynamic-task-mapping.rst +4 -4
  9. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/examples.rst +3 -3
  10. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/executable-bundle-spec.rst +81 -38
  11. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/index.rst +3 -0
  12. apache_airflow_task_sdk-1.4.0b1/docs/lang-sdk-spec.rst +170 -0
  13. apache_airflow_task_sdk-1.4.0b1/docs/lang-sdk.rst +42 -0
  14. apache_airflow_task_sdk-1.4.0b1/docs/ts-bundle-spec.rst +219 -0
  15. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/pyproject.toml +12 -11
  16. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/__init__.py +10 -1
  17. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/__init__.pyi +14 -0
  18. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/configuration/parser.py +13 -5
  19. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/_shared/dagnode/cycle.py +73 -0
  20. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/dagnode/node.py +113 -8
  21. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/percent_formatter.py +1 -4
  22. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/module_loading/__init__.py +4 -0
  23. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/_shared/module_loading/dag_file.py +152 -0
  24. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/_shared/observability/__init__.py +21 -0
  25. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/datadog_logger.py +18 -31
  26. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/metrics_template.yaml +110 -36
  27. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/otel_logger.py +20 -3
  28. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/stats.py +30 -1
  29. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/statsd_logger.py +63 -16
  30. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/validators.py +0 -1
  31. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/traces/__init__.py +61 -24
  32. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/plugins_manager/__init__.py +6 -0
  33. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/plugins_manager/plugins_manager.py +76 -8
  34. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/providers_discovery/providers_discovery.py +30 -2
  35. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/secrets_backend/base.py +19 -13
  36. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/state/__init__.py +40 -10
  37. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/client.py +134 -37
  38. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/datamodels/_generated.py +77 -4
  39. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/decorator.py +27 -5
  40. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/operator.py +23 -17
  41. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/timetable.py +7 -0
  42. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/xcom.py +23 -29
  43. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/_bundle_metadata.py +142 -0
  44. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/_dag_importer.py +166 -0
  45. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/_subprocess.py +747 -0
  46. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/executable/_bundle_reader.py +195 -0
  47. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/executable/_dag_importer.py +105 -0
  48. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/coordinators/executable/coordinator.py +132 -91
  49. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/java/_dag_importer.py +122 -0
  50. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/java/_jar_manifest.py +71 -0
  51. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/java/coordinator.py +325 -0
  52. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/node/__init__.py +28 -0
  53. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/node/_bundle_reader.py +560 -0
  54. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/node/_dag_importer.py +72 -0
  55. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/node/coordinator.py +142 -0
  56. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/abstractoperator.py +2 -0
  57. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/definitions/_internal/loop.py +218 -0
  58. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/node.py +9 -6
  59. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/asset/__init__.py +14 -1
  60. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/asset/decorators.py +5 -4
  61. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/callback.py +23 -1
  62. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/connection.py +38 -2
  63. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/context.py +4 -4
  64. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/dag.py +99 -52
  65. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/deadline.py +55 -10
  66. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/__init__.pyi +6 -0
  67. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/task_group.py +31 -8
  68. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/mappedoperator.py +3 -1
  69. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/retry_policy.py +93 -3
  70. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/taskgroup.py +61 -45
  71. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/definitions/timetables/assets.py +152 -0
  72. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/variable.py +54 -1
  73. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/xcom_arg.py +10 -5
  74. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/exceptions.py +4 -0
  75. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/bundles.py +90 -0
  76. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/cache.py +31 -9
  77. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/callback_supervisor.py +8 -2
  78. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/comms.py +64 -6
  79. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/connection_test_supervisor.py +9 -4
  80. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/context.py +276 -45
  81. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/coordinator.py +466 -0
  82. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/lazy_sequence.py +4 -0
  83. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/loop.py +104 -0
  84. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/request_handlers.py +43 -6
  85. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/schema.json +492 -5
  86. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/versions/__init__.py +18 -0
  87. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/schema/versions/v2026_10_30.py +113 -0
  88. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/supervisor.py +932 -433
  89. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/task_runner.py +205 -115
  90. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/tracing.py +60 -0
  91. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/__init__.py +56 -0
  92. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/base.py +695 -0
  93. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/python_importer.py +343 -0
  94. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/__init__.py +33 -0
  95. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/builder.py +455 -0
  96. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/importer.py +169 -0
  97. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/migrator.py +169 -0
  98. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/models.py +527 -0
  99. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/parser.py +102 -0
  100. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/schema.json +417 -0
  101. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/versions/__init__.py +38 -0
  102. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/zip_importer.py +320 -0
  103. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/path.py +2 -1
  104. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/lineage.py +1 -1
  105. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/log.py +34 -14
  106. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/metrics/datadog_logger.py +1 -0
  107. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/observability/metrics/statsd_logger.py +70 -0
  108. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/plugins_manager.py +18 -1
  109. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/providers_manager_runtime.py +75 -1
  110. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/__init__.py +3 -7
  111. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/datetime.py +2 -2
  112. apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/serde/serializers/lazy_xcom_sequence.py +46 -0
  113. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/state.py +1 -0
  114. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/types.py +10 -1
  115. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/yaml.py +2 -4
  116. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/conftest.py +6 -0
  117. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/api/test_client.py +285 -13
  118. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_decorator.py +12 -0
  119. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_operator.py +156 -2
  120. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_xcom.py +16 -0
  121. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/executable/_bundle_test_utils.py +98 -0
  122. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/executable/test_bundle_reader.py +217 -0
  123. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/executable/test_coordinator.py +275 -40
  124. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/executable/test_dag_importer.py +283 -0
  125. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/java/_jar_test_utils.py +53 -0
  126. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/java/test_coordinator.py +709 -0
  127. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/java/test_dag_importer.py +327 -0
  128. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/java/test_jar_manifest.py +94 -0
  129. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/__init__.py +17 -0
  130. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/_bundle_test_utils.py +180 -0
  131. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/test_bundle_reader.py +623 -0
  132. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/test_coordinator.py +429 -0
  133. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/test_dag_importer.py +275 -0
  134. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/test_dag_importer.py +214 -0
  135. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/test_subprocess.py +679 -6
  136. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/definitions/_internal/test_loop.py +431 -0
  137. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/_internal/test_templater.py +2 -2
  138. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/test_result.py +38 -1
  139. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/test_task_group.py +119 -1
  140. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_asset.py +28 -9
  141. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_asset_decorators.py +38 -0
  142. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_callback.py +17 -1
  143. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_connection.py +67 -0
  144. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_dag.py +369 -10
  145. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_deadline.py +131 -17
  146. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_mappedoperator.py +10 -0
  147. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_retry_policy.py +224 -0
  148. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_variables.py +137 -2
  149. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_xcom_arg.py +115 -2
  150. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/definitions/timetables/test_assets.py +166 -0
  151. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/docs/test_public_api.py +1 -0
  152. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/_request_registration_types.py +41 -0
  153. apache_airflow_task_sdk-1.3.2/src/airflow/sdk/_shared/observability/__init__.py → apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/exec_probe_target.py +9 -5
  154. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/schema/test_migrator.py +289 -6
  155. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/test_bundles.py +86 -0
  156. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_cache.py +43 -0
  157. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_callback_supervisor.py +63 -1
  158. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_comms.py +75 -1
  159. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_connection_test_supervisor.py +112 -0
  160. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_context.py +665 -8
  161. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/test_coordinator.py +800 -0
  162. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/test_loop.py +245 -0
  163. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_request_handlers.py +51 -0
  164. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_supervisor.py +1737 -130
  165. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_task_runner.py +776 -179
  166. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/test_tracing.py +144 -0
  167. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/test_python_importer.py +395 -0
  168. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/test_registry.py +754 -0
  169. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/test_zip_importer.py +367 -0
  170. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer/example_dag.yaml +69 -0
  171. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer/test_importer.py +605 -0
  172. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer/test_migrator.py +188 -0
  173. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer/test_parser.py +586 -0
  174. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/io/__init__.py +16 -0
  175. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/serde/__init__.py +16 -0
  176. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/serde/test_serializers.py +13 -1
  177. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/test_log.py +121 -0
  178. apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/test_plugins_manager.py +112 -0
  179. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_providers_manager_runtime.py +137 -2
  180. apache_airflow_task_sdk-1.3.2/src/airflow/sdk/_shared/module_loading/dag_file.py +0 -23
  181. apache_airflow_task_sdk-1.3.2/src/airflow/sdk/coordinators/_subprocess.py +0 -431
  182. apache_airflow_task_sdk-1.3.2/src/airflow/sdk/coordinators/java/coordinator.py +0 -230
  183. apache_airflow_task_sdk-1.3.2/src/airflow/sdk/definitions/timetables/assets.py +0 -86
  184. apache_airflow_task_sdk-1.3.2/src/airflow/sdk/execution_time/coordinator.py +0 -275
  185. apache_airflow_task_sdk-1.3.2/src/airflow/sdk/observability/metrics/statsd_logger.py +0 -62
  186. apache_airflow_task_sdk-1.3.2/tests/task_sdk/coordinators/java/test_coordinator.py +0 -388
  187. apache_airflow_task_sdk-1.3.2/tests/task_sdk/dags/signal_forward_test.py +0 -44
  188. apache_airflow_task_sdk-1.3.2/tests/task_sdk/execution_time/test_coordinator.py +0 -231
  189. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/.gitignore +0 -0
  190. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/.pre-commit-config.yaml +0 -0
  191. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/LICENSE +0 -0
  192. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/NOTICE +0 -0
  193. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/README.md +0 -0
  194. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/dev/datamodel_code_formatter.py +0 -0
  195. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/.gitignore +0 -0
  196. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/img/airflow-2-approach.png +0 -0
  197. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/img/airflow-2-arch.png +0 -0
  198. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/img/airflow-3-arch.png +0 -0
  199. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/img/airflow-3-task-sdk.png +0 -0
  200. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/resumable-job-mixin.rst +0 -0
  201. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/configuration/__init__.py +0 -0
  202. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/configuration/exceptions.py +0 -0
  203. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/dagnode/__init__.py +0 -0
  204. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/__init__.py +0 -0
  205. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/listener.py +0 -0
  206. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/spec/__init__.py +0 -0
  207. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/spec/lifecycle.py +0 -0
  208. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/spec/taskinstance.py +0 -0
  209. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/__init__.py +0 -0
  210. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/_config.py +0 -0
  211. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/_noncaching.py +0 -0
  212. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/factory.py +0 -0
  213. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/remote.py +0 -0
  214. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/structlog.py +0 -0
  215. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/types.py +0 -0
  216. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/module_loading/file_discovery.py +0 -0
  217. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/common.py +0 -0
  218. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/exceptions.py +0 -0
  219. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/__init__.py +0 -0
  220. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/base_stats_logger.py +0 -0
  221. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/metrics_registry.py +0 -0
  222. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/protocols.py +0 -0
  223. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/otel_env_config.py +0 -0
  224. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/providers_discovery/__init__.py +0 -0
  225. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/secrets_backend/__init__.py +0 -0
  226. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/secrets_masker/__init__.py +0 -0
  227. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/secrets_masker/secrets_masker.py +0 -0
  228. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/serialization/__init__.py +0 -0
  229. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/template_rendering/__init__.py +0 -0
  230. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/timezones/__init__.py +0 -0
  231. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/timezones/timezone.py +0 -0
  232. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/__init__.py +0 -0
  233. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/datamodels/__init__.py +0 -0
  234. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/datamodels/activities.py +0 -0
  235. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/__init__.py +0 -0
  236. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/branch.py +0 -0
  237. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/hook.py +0 -0
  238. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/notifier.py +0 -0
  239. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/operatorlink.py +0 -0
  240. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/resumablejobmixin.py +0 -0
  241. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/secrets_backend.py +0 -0
  242. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/sensor.py +0 -0
  243. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/skipmixin.py +0 -0
  244. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/configuration.py +0 -0
  245. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/coordinators/__init__.py +0 -0
  246. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/coordinators/executable/__init__.py +0 -0
  247. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/coordinators/java/__init__.py +0 -0
  248. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/crypto.py +0 -0
  249. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/__init__.py +0 -0
  250. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/__init__.py +0 -0
  251. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/contextmanager.py +0 -0
  252. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/dag_parsing_context.py +0 -0
  253. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/decorators.py +0 -0
  254. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/expandinput.py +0 -0
  255. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/logging_mixin.py +0 -0
  256. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/mixins.py +0 -0
  257. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/setup_teardown.py +0 -0
  258. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/templater.py +0 -0
  259. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/types.py +0 -0
  260. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/asset/access_control.py +0 -0
  261. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/asset/metadata.py +0 -0
  262. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/__init__.py +0 -0
  263. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/condition.py +0 -0
  264. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/setup_teardown.py +0 -0
  265. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/edges.py +0 -0
  266. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/operator_resources.py +0 -0
  267. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/param.py +0 -0
  268. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/__init__.py +0 -0
  269. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/allowed_key.py +0 -0
  270. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/base.py +0 -0
  271. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/chain.py +0 -0
  272. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/fixed_key.py +0 -0
  273. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/identity.py +0 -0
  274. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/product.py +0 -0
  275. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/temporal.py +0 -0
  276. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/wait_policy.py +0 -0
  277. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/window.py +0 -0
  278. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/template.py +0 -0
  279. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/__init__.py +0 -0
  280. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/_cron.py +0 -0
  281. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/_delta.py +0 -0
  282. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/events.py +0 -0
  283. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/interval.py +0 -0
  284. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/simple.py +0 -0
  285. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/trigger.py +0 -0
  286. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/__init__.py +0 -0
  287. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/callback_runner.py +0 -0
  288. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/email_backend.py +0 -0
  289. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/execute_workload.py +0 -0
  290. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/hitl.py +0 -0
  291. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/macros.py +0 -0
  292. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/AGENTS.md +0 -0
  293. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/__init__.py +0 -0
  294. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/migrator.py +0 -0
  295. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/secrets/__init__.py +0 -0
  296. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/secrets/execution_api.py +0 -0
  297. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/secrets_masker.py +0 -0
  298. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/sentry/__init__.py +0 -0
  299. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/sentry/configured.py +0 -0
  300. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/sentry/noop.py +0 -0
  301. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/task_mapping.py +0 -0
  302. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/timeout.py +0 -0
  303. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/xcom.py +0 -0
  304. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/__init__.py +0 -0
  305. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/fs.py +0 -0
  306. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/stat.py +0 -0
  307. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/store.py +0 -0
  308. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/typedef.py +0 -0
  309. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/listener.py +0 -0
  310. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/module_loading.py +0 -0
  311. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/__init__.py +0 -0
  312. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/metrics/__init__.py +0 -0
  313. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/metrics/otel_logger.py +0 -0
  314. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/metrics/stats_utils.py +0 -0
  315. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/stats.py +0 -0
  316. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/py.typed +0 -0
  317. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/__init__.py +0 -0
  318. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/bignum.py +0 -0
  319. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/builtin.py +0 -0
  320. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/deltalake.py +0 -0
  321. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/iceberg.py +0 -0
  322. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/kubernetes.py +0 -0
  323. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/numpy.py +0 -0
  324. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/pandas.py +0 -0
  325. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/pydantic.py +0 -0
  326. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/timezone.py +0 -0
  327. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/uuid.py +0 -0
  328. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/typing.py +0 -0
  329. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/timezone.py +0 -0
  330. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/__init__.py +0 -0
  331. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/__init__.py +0 -0
  332. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/api/__init__.py +0 -0
  333. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/__init__.py +0 -0
  334. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/notifier/test_notifier.txt +0 -0
  335. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_branch.py +0 -0
  336. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_hook.py +0 -0
  337. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_notifier.py +0 -0
  338. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_resumablejobmixin.py +0 -0
  339. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_sensor.py +0 -0
  340. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_skipmixin.py +0 -0
  341. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/__init__.py +0 -0
  342. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/executable/__init__.py +0 -0
  343. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/java/__init__.py +0 -0
  344. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/dags/dag_parsing_context.py +0 -0
  345. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/dags/super_basic.py +0 -0
  346. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/dags/super_basic_deferred_run.py +0 -0
  347. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/dags/super_basic_run.py +0 -0
  348. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/__init__.py +0 -0
  349. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/_internal/__init__.py +0 -0
  350. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/_internal/test_decorators.py +0 -0
  351. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/conftest.py +0 -0
  352. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/__init__.py +0 -0
  353. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/test_condition.py +0 -0
  354. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/test_mapped.py +0 -0
  355. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/test_setup_teardown.py +0 -0
  356. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/sensors/__init__.py +0 -0
  357. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_asset_access_control.py +0 -0
  358. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_context.py +0 -0
  359. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_macros.py +0 -0
  360. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_mixins.py +0 -0
  361. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_module_loading.py +0 -0
  362. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_operator_resources.py +0 -0
  363. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_param.py +0 -0
  364. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_partition_mappers.py +0 -0
  365. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_taskgroup.py +0 -0
  366. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_template.py +0 -0
  367. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_wait_policy.py +0 -0
  368. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/timetables/__init__.py +0 -0
  369. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/timetables/test__cron.py +0 -0
  370. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/docs/__init__.py +0 -0
  371. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/docs/test_docs_inventory.py +0 -0
  372. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/__init__.py +0 -0
  373. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/conftest.py +0 -0
  374. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/schema/__init__.py +0 -0
  375. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/schema/_mock_version_bundle.py +0 -0
  376. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/schema/test_integration.py +0 -0
  377. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_context_cache.py +0 -0
  378. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_email_backend.py +0 -0
  379. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_hitl.py +0 -0
  380. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_lazy_sequence.py +0 -0
  381. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_secrets.py +0 -0
  382. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_sentry.py +0 -0
  383. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_supervisor_schemas_name_type_sync.py +0 -0
  384. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_task_mapping.py +0 -0
  385. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_timeout.py +0 -0
  386. {apache_airflow_task_sdk-1.3.2/tests/task_sdk/io → apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers}/__init__.py +0 -0
  387. {apache_airflow_task_sdk-1.3.2/tests/task_sdk/serde → apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer}/__init__.py +0 -0
  388. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/io/test_path.py +0 -0
  389. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/serde/test_serde.py +0 -0
  390. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_configuration.py +0 -0
  391. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_crypto.py +0 -0
  392. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_exceptions.py +0 -0
  393. {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_lineage.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: apache-airflow-task-sdk
3
- Version: 1.3.2
3
+ Version: 1.4.0b1
4
4
  Summary: Python Task SDK for Apache Airflow DAG Authors
5
5
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
6
- Project-URL: Documentation, https://airflow.apache.org/docs/
7
- Project-URL: Homepage, https://airflow.apache.org/
6
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/
7
+ Project-URL: Homepage, https://airflow.staged.apache.org/
8
8
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
9
9
  Project-URL: Source Code, https://github.com/apache/airflow
10
10
  Project-URL: Mastodon, https://fosstodon.org/@airflow
@@ -22,18 +22,18 @@ 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.0
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
@@ -53,6 +53,7 @@ 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
58
59
  Requires-Dist: typing-extensions>=4.14.1
@@ -20,6 +20,7 @@ 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
25
  import httpx
25
26
  from datamodel_code_generator import (
@@ -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:
@@ -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,11 +35,26 @@
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
60
  "description": "Mapping of dag_id to DAG entry. Every dag_id the bundle exposes must appear here.",
@@ -50,6 +65,34 @@
50
65
  }
51
66
  },
52
67
  "$defs": {
68
+ "sourceEntry": {
69
+ "type": "object",
70
+ "description": "One embedded source file inside the bundle's source region.",
71
+ "required": ["path", "offset", "length", "sha256"],
72
+ "additionalProperties": true,
73
+ "properties": {
74
+ "path": {
75
+ "type": "string",
76
+ "description": "The file's path as the author knows it (e.g. 'example/bundle/main.go').",
77
+ "minLength": 1
78
+ },
79
+ "offset": {
80
+ "type": "integer",
81
+ "description": "The file's start, in bytes from the start of the source region.",
82
+ "minimum": 0
83
+ },
84
+ "length": {
85
+ "type": "integer",
86
+ "description": "The file's length in bytes.",
87
+ "minimum": 0
88
+ },
89
+ "sha256": {
90
+ "type": "string",
91
+ "description": "Lower-case hexadecimal SHA-256 of the file's bytes.",
92
+ "pattern": "^[0-9a-f]{64}$"
93
+ }
94
+ }
95
+ },
53
96
  "dagEntry": {
54
97
  "type": "object",
55
98
  "description": "Static description of a single DAG declared in the bundle.",
@@ -156,6 +156,8 @@ Tasks page in the core docs for usage and design rationale.
156
156
 
157
157
  .. autoapiclass:: airflow.sdk.ExceptionRetryPolicy
158
158
 
159
+ .. autoapiclass:: airflow.sdk.ChainRetryPolicy
160
+
159
161
  .. autoapiclass:: airflow.sdk.RetryRule
160
162
 
161
163
  .. autoapiclass:: airflow.sdk.RetryDecision
@@ -202,8 +204,12 @@ Assets
202
204
 
203
205
  Timetables
204
206
  ----------
207
+ .. autoapiclass:: airflow.sdk.AssetAndTimeSchedule
208
+
205
209
  .. autoapiclass:: airflow.sdk.AssetOrTimeSchedule
206
210
 
211
+ .. autoapiclass:: airflow.sdk.AssetTriggeredTimetable
212
+
207
213
  .. autoapiclass:: airflow.sdk.CronDataIntervalTimetable
208
214
 
209
215
  .. autoapiclass:: airflow.sdk.CronTriggerTimetable
@@ -302,6 +308,45 @@ See :doc:`apache-airflow:authoring-and-scheduling/language-sdks/index` for a con
302
308
 
303
309
  .. autoapiclass:: airflow.sdk.coordinators.executable.ExecutableCoordinator
304
310
 
311
+ .. rubric:: Node.js (TypeScript)
312
+
313
+ .. autoapiclass:: airflow.sdk.coordinators.node.NodeCoordinator
314
+
315
+ Dag Importers
316
+ -------------
317
+
318
+ |experimental|
319
+
320
+ Dag importers turn the contents of a Dag bundle into Dags. This interface may still change in a minor
321
+ release while it is being stabilized. See :doc:`apache-airflow:administration-and-deployment/dag-importers` for how
322
+ importers are configured and how to write one.
323
+
324
+ .. autoapiclass:: airflow.sdk.importers.AbstractDagImporter
325
+
326
+ .. autoapiclass:: airflow.sdk.importers.DagDefinition
327
+
328
+ .. autoapiclass:: airflow.sdk.importers.FileDagDefinition
329
+
330
+ .. autoapiclass:: airflow.sdk.importers.FilesystemDagDefinition
331
+
332
+ .. autoapiclass:: airflow.sdk.importers.DagImportResult
333
+
334
+ .. autoapiclass:: airflow.sdk.importers.DagImportError
335
+
336
+ .. autoapiclass:: airflow.sdk.importers.DagImportWarning
337
+
338
+ .. autoapiclass:: airflow.sdk.importers.DagSourceCode
339
+
340
+ .. autoapifunction:: airflow.sdk.importers.find_file_dag_definitions
341
+
342
+ .. autoapifunction:: airflow.sdk.importers.get_file_suffix
343
+
344
+ .. rubric:: Built-in importers
345
+
346
+ .. autoapiclass:: airflow.sdk.importers.PythonDagImporter
347
+
348
+ .. autoapiclass:: airflow.sdk.importers.ZipImporter
349
+
305
350
  Execution Time Components
306
351
  -------------------------
307
352
  .. 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
+ "sphinxcontrib.mermaid",
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,12 +242,24 @@ 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
265
  Mapping of ``dag_id`` to a *DAG entry*. Every ``dag_id`` the bundle
@@ -242,16 +283,16 @@ Go bundle::
242
283
 
243
284
  example
244
285
  ├── ELF/Mach-O/PE executable
245
- ├── source region: contents of example.go
246
- ├── metadata region: airflow-metadata.yaml (source: example.go)
286
+ ├── source region: example/bundle/main.go, example/bundle/dags/another.go
287
+ ├── metadata region: airflow-metadata.yaml (entrypoint_path, dag_source_paths, sources)
247
288
  └── trailer (64 B): lengths + binary_sha256 + AFBNDL01 magic
248
289
 
249
290
  Rust bundle::
250
291
 
251
292
  pipeline
252
293
  ├── ELF/Mach-O/PE executable
253
- ├── source region: contents of main.rs
254
- ├── metadata region: airflow-metadata.yaml (source: main.rs)
294
+ ├── source region: src/main.rs
295
+ ├── metadata region: airflow-metadata.yaml (entrypoint_path: src/main.rs)
255
296
  └── trailer (64 B): lengths + binary_sha256 + AFBNDL01 magic
256
297
 
257
298
  The bundle is one file. ``./example`` runs the binary; the appended data
@@ -271,7 +312,7 @@ that perform additional post-build steps MUST observe the following order:
271
312
  binary region; nothing has been written past its OS-defined end yet, so
272
313
  the digest matches what the reader will recompute over
273
314
  ``[0, source_start)`` after the append.
274
- - **Append** ``<source><metadata><trailer>`` in a single write so a
315
+ - **Append** ``<sources><metadata><trailer>`` in a single write so a
275
316
  partially written file fails the magic or hash check rather than
276
317
  appearing as a half-valid bundle.
277
318
 
@@ -282,10 +323,10 @@ Code Signing
282
323
 
283
324
  The bundle format itself does not require OS-level code signing.
284
325
  ``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.
326
+ corruption, and naive tampering, and Airflow's threat model treats the Dag
327
+ bundle holding the bundles as Deployment-Manager-controlled, so
328
+ *authenticity* (signed by a trusted identity) is a deployment-time concern
329
+ rather than a bundle-format one.
289
330
 
290
331
  **Compressors** such as UPX are NOT supported. They rewrite the file
291
332
  end-to-end, destroying both the trailer and the hash invariant.
@@ -298,22 +339,24 @@ yields a byte-identical bundle file (and therefore a stable
298
339
  Deployment Layout
299
340
  -----------------
300
341
 
301
- Bundle files are placed **as-is** in any of the directories configured as the
302
- ``executables_root`` kwarg on the
342
+ Bundle files are placed **as-is** in the Dag bundle named by the
343
+ ``task_handler_bundle_name`` kwarg on the
303
344
  :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
345
+ under ``[sdk] coordinators`` (or, when it is unset, in the task's own Dag
346
+ bundle). The scanner walks the Dag bundle **recursively** and considers every
347
+ regular file. For each candidate it reads the last 64 bytes and treats files
308
348
  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.
349
+ SHA-256-verified per the reader algorithm; a mismatch demotes the file back to
350
+ "ignored, with an error log." Files without the magic are silently ignored, so
351
+ non-bundle files (READMEs, dotfiles) MAY share the Dag bundle without
352
+ interfering with the scan. A file that matches the selected bundle's
353
+ ``dag_id`` is marked executable before it is run, so an object-store Dag
354
+ bundle (which has no concept of file permissions, and so cannot preserve the
355
+ execute bit a build produced) works too.
313
356
 
314
357
  ::
315
358
 
316
- /opt/airflow/executable-bundles/
359
+ /opt/airflow/go-task-handlers/
317
360
  ├── example
318
361
  ├── team-a/
319
362
  │ └── 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`
@@ -178,4 +179,6 @@ For the full public API reference, see the :doc:`api` page.
178
179
  resumable-job-mixin
179
180
  api
180
181
  concepts
182
+ lang-sdk
181
183
  executable-bundle-spec
184
+ ts-bundle-spec