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.
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/PKG-INFO +7 -6
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/dev/generate_task_sdk_models.py +1 -5
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/airflow-metadata.schema.json +46 -3
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/api.rst +45 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/concepts.rst +1 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/conf.py +2 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/deferred-vs-async-operators.rst +8 -8
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/dynamic-task-mapping.rst +4 -4
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/examples.rst +3 -3
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/executable-bundle-spec.rst +81 -38
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/index.rst +3 -0
- apache_airflow_task_sdk-1.4.0b1/docs/lang-sdk-spec.rst +170 -0
- apache_airflow_task_sdk-1.4.0b1/docs/lang-sdk.rst +42 -0
- apache_airflow_task_sdk-1.4.0b1/docs/ts-bundle-spec.rst +219 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/pyproject.toml +12 -11
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/__init__.py +10 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/__init__.pyi +14 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/configuration/parser.py +13 -5
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/_shared/dagnode/cycle.py +73 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/dagnode/node.py +113 -8
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/percent_formatter.py +1 -4
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/module_loading/__init__.py +4 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/_shared/module_loading/dag_file.py +152 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/_shared/observability/__init__.py +21 -0
- {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
- {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
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/stats.py +30 -1
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/validators.py +0 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/traces/__init__.py +61 -24
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/plugins_manager/__init__.py +6 -0
- {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
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/secrets_backend/base.py +19 -13
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/state/__init__.py +40 -10
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/client.py +134 -37
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/datamodels/_generated.py +77 -4
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/decorator.py +27 -5
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/operator.py +23 -17
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/timetable.py +7 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/xcom.py +23 -29
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/_bundle_metadata.py +142 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/_dag_importer.py +166 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/_subprocess.py +747 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/executable/_bundle_reader.py +195 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/executable/_dag_importer.py +105 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/coordinators/executable/coordinator.py +132 -91
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/java/_dag_importer.py +122 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/java/_jar_manifest.py +71 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/java/coordinator.py +325 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/node/__init__.py +28 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/node/_bundle_reader.py +560 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/node/_dag_importer.py +72 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/coordinators/node/coordinator.py +142 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/abstractoperator.py +2 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/definitions/_internal/loop.py +218 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/node.py +9 -6
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/asset/__init__.py +14 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/asset/decorators.py +5 -4
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/callback.py +23 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/connection.py +38 -2
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/context.py +4 -4
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/dag.py +99 -52
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/deadline.py +55 -10
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/__init__.pyi +6 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/task_group.py +31 -8
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/mappedoperator.py +3 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/retry_policy.py +93 -3
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/taskgroup.py +61 -45
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/definitions/timetables/assets.py +152 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/variable.py +54 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/xcom_arg.py +10 -5
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/exceptions.py +4 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/bundles.py +90 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/cache.py +31 -9
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/callback_supervisor.py +8 -2
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/comms.py +64 -6
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/context.py +276 -45
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/coordinator.py +466 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/lazy_sequence.py +4 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/loop.py +104 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/request_handlers.py +43 -6
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/schema.json +492 -5
- {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
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/schema/versions/v2026_10_30.py +113 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/supervisor.py +932 -433
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/task_runner.py +205 -115
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/execution_time/tracing.py +60 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/__init__.py +56 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/base.py +695 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/python_importer.py +343 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/__init__.py +33 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/builder.py +455 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/importer.py +169 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/migrator.py +169 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/models.py +527 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/parser.py +102 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/schema.json +417 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/yaml_importer/versions/__init__.py +38 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/importers/zip_importer.py +320 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/path.py +2 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/lineage.py +1 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/log.py +34 -14
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/metrics/datadog_logger.py +1 -0
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/observability/metrics/statsd_logger.py +70 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/plugins_manager.py +18 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/providers_manager_runtime.py +75 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/__init__.py +3 -7
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/datetime.py +2 -2
- apache_airflow_task_sdk-1.4.0b1/src/airflow/sdk/serde/serializers/lazy_xcom_sequence.py +46 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/state.py +1 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/types.py +10 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/yaml.py +2 -4
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/conftest.py +6 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/api/test_client.py +285 -13
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_decorator.py +12 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_operator.py +156 -2
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_xcom.py +16 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/executable/_bundle_test_utils.py +98 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/executable/test_bundle_reader.py +217 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/executable/test_coordinator.py +275 -40
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/executable/test_dag_importer.py +283 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/java/_jar_test_utils.py +53 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/java/test_coordinator.py +709 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/java/test_dag_importer.py +327 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/java/test_jar_manifest.py +94 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/__init__.py +17 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/_bundle_test_utils.py +180 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/test_bundle_reader.py +623 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/test_coordinator.py +429 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/node/test_dag_importer.py +275 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/coordinators/test_dag_importer.py +214 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/test_subprocess.py +679 -6
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/definitions/_internal/test_loop.py +431 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/_internal/test_templater.py +2 -2
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/test_result.py +38 -1
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_asset.py +28 -9
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_asset_decorators.py +38 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_callback.py +17 -1
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_connection.py +67 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_dag.py +369 -10
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_deadline.py +131 -17
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_mappedoperator.py +10 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_retry_policy.py +224 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_variables.py +137 -2
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_xcom_arg.py +115 -2
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/definitions/timetables/test_assets.py +166 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/docs/test_public_api.py +1 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/_request_registration_types.py +41 -0
- 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
- {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
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/test_bundles.py +86 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_cache.py +43 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_comms.py +75 -1
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_context.py +665 -8
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/test_coordinator.py +800 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/test_loop.py +245 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_supervisor.py +1737 -130
- {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
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/execution_time/test_tracing.py +144 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/test_python_importer.py +395 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/test_registry.py +754 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/test_zip_importer.py +367 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer/example_dag.yaml +69 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer/test_importer.py +605 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer/test_migrator.py +188 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/importers/yaml_importer/test_parser.py +586 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/io/__init__.py +16 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/serde/__init__.py +16 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/serde/test_serializers.py +13 -1
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/test_log.py +121 -0
- apache_airflow_task_sdk-1.4.0b1/tests/task_sdk/test_plugins_manager.py +112 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_providers_manager_runtime.py +137 -2
- apache_airflow_task_sdk-1.3.2/src/airflow/sdk/_shared/module_loading/dag_file.py +0 -23
- apache_airflow_task_sdk-1.3.2/src/airflow/sdk/coordinators/_subprocess.py +0 -431
- apache_airflow_task_sdk-1.3.2/src/airflow/sdk/coordinators/java/coordinator.py +0 -230
- apache_airflow_task_sdk-1.3.2/src/airflow/sdk/definitions/timetables/assets.py +0 -86
- apache_airflow_task_sdk-1.3.2/src/airflow/sdk/execution_time/coordinator.py +0 -275
- apache_airflow_task_sdk-1.3.2/src/airflow/sdk/observability/metrics/statsd_logger.py +0 -62
- apache_airflow_task_sdk-1.3.2/tests/task_sdk/coordinators/java/test_coordinator.py +0 -388
- apache_airflow_task_sdk-1.3.2/tests/task_sdk/dags/signal_forward_test.py +0 -44
- apache_airflow_task_sdk-1.3.2/tests/task_sdk/execution_time/test_coordinator.py +0 -231
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/.gitignore +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/.pre-commit-config.yaml +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/LICENSE +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/NOTICE +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/README.md +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/dev/datamodel_code_formatter.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/.gitignore +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/img/airflow-2-approach.png +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/img/airflow-2-arch.png +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/img/airflow-3-arch.png +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/img/airflow-3-task-sdk.png +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/resumable-job-mixin.rst +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/configuration/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/configuration/exceptions.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/dagnode/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/listener.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/spec/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/spec/lifecycle.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/listeners/spec/taskinstance.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/_config.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/_noncaching.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/factory.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/remote.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/structlog.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/logging/types.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/common.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/exceptions.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/__init__.py +0 -0
- {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
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/observability/metrics/protocols.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/providers_discovery/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/secrets_backend/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/secrets_masker/__init__.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/serialization/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/template_rendering/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/timezones/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/_shared/timezones/timezone.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/datamodels/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/api/datamodels/activities.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/branch.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/hook.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/notifier.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/operatorlink.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/resumablejobmixin.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/secrets_backend.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/sensor.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/bases/skipmixin.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/configuration.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/coordinators/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/coordinators/executable/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/coordinators/java/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/crypto.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/contextmanager.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/decorators.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/expandinput.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/logging_mixin.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/mixins.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/setup_teardown.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/templater.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/_internal/types.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/asset/access_control.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/asset/metadata.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/condition.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/decorators/setup_teardown.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/edges.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/operator_resources.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/param.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/__init__.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/base.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/chain.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/identity.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/product.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/temporal.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/partition_mappers/window.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/template.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/_cron.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/_delta.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/events.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/interval.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/simple.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/definitions/timetables/trigger.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/callback_runner.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/email_backend.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/execute_workload.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/hitl.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/macros.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/AGENTS.md +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/schema/migrator.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/secrets/__init__.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/secrets_masker.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/sentry/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/sentry/configured.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/sentry/noop.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/task_mapping.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/timeout.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/execution_time/xcom.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/fs.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/stat.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/store.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/io/typedef.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/listener.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/module_loading.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/metrics/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/metrics/otel_logger.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/metrics/stats_utils.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/observability/stats.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/py.typed +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/bignum.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/builtin.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/deltalake.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/iceberg.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/kubernetes.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/numpy.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/pandas.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/pydantic.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/timezone.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/serializers/uuid.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/serde/typing.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/src/airflow/sdk/timezone.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/api/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/notifier/test_notifier.txt +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_branch.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_hook.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_notifier.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_resumablejobmixin.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_sensor.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/bases/test_skipmixin.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/executable/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/coordinators/java/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/dags/dag_parsing_context.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/dags/super_basic.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/dags/super_basic_run.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/_internal/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/_internal/test_decorators.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/conftest.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/test_condition.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/decorators/test_mapped.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/sensors/__init__.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_context.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_macros.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_mixins.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_module_loading.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_operator_resources.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_param.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_partition_mappers.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_taskgroup.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_template.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/test_wait_policy.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/timetables/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/definitions/timetables/test__cron.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/docs/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/docs/test_docs_inventory.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/conftest.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/schema/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_hitl.py +0 -0
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_secrets.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_sentry.py +0 -0
- {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
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/execution_time/test_timeout.py +0 -0
- {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
- {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
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/io/test_path.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/serde/test_serde.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_configuration.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_crypto.py +0 -0
- {apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/tests/task_sdk/test_exceptions.py +0 -0
- {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
|
+
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.
|
|
32
|
-
Requires-Dist: apache-airflow-core<3.
|
|
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
|
{apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/dev/generate_task_sdk_models.py
RENAMED
|
@@ -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:
|
{apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/airflow-metadata.schema.json
RENAMED
|
@@ -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", "
|
|
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
|
-
"
|
|
38
|
+
"entrypoint_path": {
|
|
39
39
|
"type": "string",
|
|
40
|
-
"description": "
|
|
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
|
|
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
|
|
@@ -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
|
|
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
|
|
269
|
-
|
|
268
|
+
Comparison with task mapping
|
|
269
|
+
----------------------------
|
|
270
270
|
|
|
271
|
-
Async operators and
|
|
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
|
-
-
|
|
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
|
|
296
|
-
:ref:`
|
|
295
|
+
For more details about task mapping, see the
|
|
296
|
+
:ref:`task mapping <sdk-dynamic-task-mapping>` page.
|
{apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/dynamic-task-mapping.rst
RENAMED
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
|
|
18
18
|
.. _sdk-dynamic-task-mapping:
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
Mapped tasks with Task SDK
|
|
21
|
+
==========================
|
|
22
22
|
|
|
23
|
-
|
|
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
|
-
`
|
|
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
|
|
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:
|
|
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
|
|
103
|
+
see the :doc:`core TaskFlow tutorial <apache-airflow:tutorial/taskflow>`.
|
|
104
104
|
|
|
105
105
|
Step 1: Define the Dag
|
|
106
106
|
----------------------
|
{apache_airflow_task_sdk-1.3.2 → apache_airflow_task_sdk-1.4.0b1}/docs/executable-bundle-spec.rst
RENAMED
|
@@ -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
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
|
|
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
|
-
``
|
|
217
|
-
|
|
218
|
-
The
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
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:
|
|
246
|
-
├── metadata region: airflow-metadata.yaml (
|
|
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:
|
|
254
|
-
├── metadata region: airflow-metadata.yaml (
|
|
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** ``<
|
|
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
|
-
|
|
287
|
-
(signed by a trusted identity) is a deployment-time concern
|
|
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
|
|
302
|
-
``
|
|
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
|
|
305
|
-
|
|
306
|
-
|
|
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
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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/
|
|
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
|