apache-airflow-task-sdk 1.3.1rc2__tar.gz → 1.3.2__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.1rc2 → apache_airflow_task_sdk-1.3.2}/PKG-INFO +5 -5
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/api.rst +4 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/deferred-vs-async-operators.rst +1 -1
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/examples.rst +1 -1
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/index.rst +2 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/pyproject.toml +6 -5
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/__init__.py +11 -2
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/metrics_template.yaml +24 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/plugins_manager/plugins_manager.py +4 -2
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/secrets_masker/secrets_masker.py +14 -8
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/timezones/timezone.py +12 -1
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/client.py +6 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/datamodels/_generated.py +1 -1
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/decorator.py +41 -4
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/operator.py +18 -1
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/configuration.py +20 -10
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/connection.py +39 -4
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/deadline.py +11 -6
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/comms.py +10 -2
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/context.py +98 -40
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/AGENTS.md +6 -3
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/supervisor.py +63 -8
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/conftest.py +10 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/api/test_client.py +17 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_decorator.py +30 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_connection.py +52 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_deadline.py +8 -7
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_mappedoperator.py +22 -1
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_comms.py +39 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_context.py +261 -1
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_secrets.py +38 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_supervisor.py +164 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/.gitignore +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/.pre-commit-config.yaml +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/LICENSE +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/NOTICE +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/README.md +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/dev/datamodel_code_formatter.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/dev/generate_task_sdk_models.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/.gitignore +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/airflow-metadata.schema.json +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/concepts.rst +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/conf.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/dynamic-task-mapping.rst +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/executable-bundle-spec.rst +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/img/airflow-2-approach.png +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/img/airflow-2-arch.png +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/img/airflow-3-arch.png +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/img/airflow-3-task-sdk.png +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/resumable-job-mixin.rst +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/__init__.pyi +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/configuration/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/configuration/exceptions.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/configuration/parser.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/dagnode/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/dagnode/node.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/listener.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/spec/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/spec/lifecycle.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/spec/taskinstance.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/_config.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/_noncaching.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/factory.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/percent_formatter.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/remote.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/structlog.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/types.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/module_loading/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/module_loading/dag_file.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/module_loading/file_discovery.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/common.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/exceptions.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/base_stats_logger.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/datadog_logger.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/metrics_registry.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/otel_logger.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/protocols.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/stats.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/statsd_logger.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/validators.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/otel_env_config.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/traces/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/plugins_manager/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/providers_discovery/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/providers_discovery/providers_discovery.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/secrets_backend/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/secrets_backend/base.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/secrets_masker/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/serialization/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/state/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/template_rendering/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/timezones/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/datamodels/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/datamodels/activities.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/branch.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/hook.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/notifier.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/operatorlink.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/resumablejobmixin.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/secrets_backend.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/sensor.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/skipmixin.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/timetable.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/xcom.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/_subprocess.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/executable/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/executable/coordinator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/java/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/java/coordinator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/crypto.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/abstractoperator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/contextmanager.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/dag_parsing_context.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/decorators.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/expandinput.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/logging_mixin.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/mixins.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/node.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/setup_teardown.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/templater.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/types.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/asset/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/asset/access_control.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/asset/decorators.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/asset/metadata.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/callback.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/context.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/dag.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/__init__.pyi +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/condition.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/setup_teardown.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/task_group.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/edges.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/mappedoperator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/operator_resources.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/param.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/allowed_key.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/base.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/chain.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/fixed_key.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/identity.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/product.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/temporal.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/wait_policy.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/window.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/retry_policy.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/taskgroup.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/template.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/_cron.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/_delta.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/assets.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/events.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/interval.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/simple.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/trigger.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/variable.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/xcom_arg.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/exceptions.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/cache.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/callback_runner.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/callback_supervisor.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/connection_test_supervisor.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/coordinator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/email_backend.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/execute_workload.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/hitl.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/lazy_sequence.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/macros.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/request_handlers.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/migrator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/schema.json +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/versions/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/secrets/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/secrets/execution_api.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/secrets_masker.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/sentry/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/sentry/configured.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/sentry/noop.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/task_mapping.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/task_runner.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/timeout.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/xcom.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/fs.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/path.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/stat.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/store.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/typedef.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/lineage.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/listener.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/log.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/module_loading.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/datadog_logger.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/otel_logger.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/stats_utils.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/statsd_logger.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/stats.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/plugins_manager.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/providers_manager_runtime.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/py.typed +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/bignum.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/builtin.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/datetime.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/deltalake.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/iceberg.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/kubernetes.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/numpy.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/pandas.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/pydantic.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/timezone.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/uuid.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/typing.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/state.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/timezone.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/types.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/yaml.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/api/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/notifier/test_notifier.txt +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_branch.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_hook.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_notifier.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_operator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_resumablejobmixin.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_sensor.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_skipmixin.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_xcom.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/executable/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/executable/test_coordinator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/java/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/java/test_coordinator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/test_subprocess.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/dag_parsing_context.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/signal_forward_test.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/super_basic.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/super_basic_deferred_run.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/super_basic_run.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/_internal/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/_internal/test_decorators.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/_internal/test_templater.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/conftest.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/test_condition.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/test_mapped.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/test_result.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/test_setup_teardown.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/test_task_group.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/sensors/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_asset.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_asset_access_control.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_asset_decorators.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_callback.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_context.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_dag.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_macros.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_mixins.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_module_loading.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_operator_resources.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_param.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_partition_mappers.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_retry_policy.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_taskgroup.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_template.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_variables.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_wait_policy.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_xcom_arg.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/timetables/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/timetables/test__cron.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/docs/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/docs/test_docs_inventory.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/docs/test_public_api.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/conftest.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/schema/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/schema/_mock_version_bundle.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/schema/test_integration.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/schema/test_migrator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_cache.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_callback_supervisor.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_connection_test_supervisor.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_context_cache.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_coordinator.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_email_backend.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_hitl.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_lazy_sequence.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_request_handlers.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_sentry.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_supervisor_schemas_name_type_sync.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_task_mapping.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_task_runner.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_timeout.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/io/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/io/test_path.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/serde/__init__.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/serde/test_serde.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/serde/test_serializers.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_configuration.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_crypto.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_exceptions.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_lineage.py +0 -0
- {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_providers_manager_runtime.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: apache-airflow-task-sdk
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
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.
|
|
7
|
-
Project-URL: Homepage, https://airflow.
|
|
6
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/
|
|
7
|
+
Project-URL: Homepage, https://airflow.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
|
|
@@ -29,7 +29,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
29
29
|
Classifier: Programming Language :: Python :: 3.14
|
|
30
30
|
Classifier: Topic :: System :: Monitoring
|
|
31
31
|
Requires-Python: !=3.15,>=3.10
|
|
32
|
-
Requires-Dist: apache-airflow-core<3.4.0,>=3.3.
|
|
32
|
+
Requires-Dist: apache-airflow-core<3.4.0,>=3.3.0
|
|
33
33
|
Requires-Dist: asgiref>=2.3.0; python_version < '3.14'
|
|
34
34
|
Requires-Dist: asgiref>=3.11.1; python_version >= '3.14'
|
|
35
35
|
Requires-Dist: attrs!=25.2.0,>=24.2.0
|
|
@@ -116,6 +116,10 @@ Deadline Alerts
|
|
|
116
116
|
|
|
117
117
|
.. autoclass:: airflow.sdk.DeadlineReference
|
|
118
118
|
|
|
119
|
+
.. autoclass:: airflow.sdk.BaseDeadlineReference
|
|
120
|
+
|
|
121
|
+
.. autofunction:: airflow.sdk.deadline_reference
|
|
122
|
+
|
|
119
123
|
Connections & Variables
|
|
120
124
|
-----------------------
|
|
121
125
|
.. autoapiclass:: airflow.sdk.Connection
|
|
@@ -234,7 +234,7 @@ This allows multiple paginated requests to be performed efficiently within a sin
|
|
|
234
234
|
|
|
235
235
|
@task
|
|
236
236
|
async def get_users():
|
|
237
|
-
hook = KiotaRequestAdapterHook.
|
|
237
|
+
hook = await KiotaRequestAdapterHook.aget_hook(conn_id="msgraph_default")
|
|
238
238
|
|
|
239
239
|
return await hook.paginated_run(url="users")
|
|
240
240
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
Examples
|
|
19
19
|
========
|
|
20
20
|
|
|
21
|
-
.. note:: For a minimal quick start, see the
|
|
21
|
+
.. note:: For a minimal quick start, see the :ref:`Getting Started <getting-started>` section.
|
|
22
22
|
|
|
23
23
|
Key Concepts
|
|
24
24
|
------------
|
|
@@ -48,7 +48,7 @@ classifiers = [
|
|
|
48
48
|
"Topic :: System :: Monitoring",
|
|
49
49
|
]
|
|
50
50
|
dependencies = [
|
|
51
|
-
"apache-airflow-core<3.4.0,>=3.3.
|
|
51
|
+
"apache-airflow-core<3.4.0,>=3.3.0",
|
|
52
52
|
"asgiref>=2.3.0; python_version < '3.14'",
|
|
53
53
|
"asgiref>=3.11.1; python_version >= '3.14'",
|
|
54
54
|
"attrs>=24.2.0, !=25.2.0",
|
|
@@ -112,8 +112,8 @@ dependencies = [
|
|
|
112
112
|
|
|
113
113
|
[project.urls]
|
|
114
114
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
115
|
-
Documentation = "https://airflow.
|
|
116
|
-
Homepage = "https://airflow.
|
|
115
|
+
Documentation = "https://airflow.apache.org/docs/"
|
|
116
|
+
Homepage = "https://airflow.apache.org/"
|
|
117
117
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
118
118
|
"Source Code" = "https://github.com/apache/airflow"
|
|
119
119
|
Mastodon = "https://fosstodon.org/@airflow"
|
|
@@ -123,11 +123,12 @@ YouTube = "https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/"
|
|
|
123
123
|
|
|
124
124
|
[build-system]
|
|
125
125
|
requires = [
|
|
126
|
-
"hatchling==1.
|
|
127
|
-
"packaging==26.
|
|
126
|
+
"hatchling==1.32.0",
|
|
127
|
+
"packaging==26.3",
|
|
128
128
|
"pathspec==1.1.1",
|
|
129
129
|
"pluggy==1.6.0",
|
|
130
130
|
"tomli==2.4.1; python_version < '3.11'",
|
|
131
|
+
"tomlkit==0.15.1",
|
|
131
132
|
"trove-classifiers==2026.6.1.19",
|
|
132
133
|
]
|
|
133
134
|
build-backend = "hatchling.build"
|
{apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/__init__.py
RENAMED
|
@@ -31,6 +31,7 @@ __all__ = [
|
|
|
31
31
|
"AsyncCallback",
|
|
32
32
|
"BaseAsyncOperator",
|
|
33
33
|
"BaseBranchOperator",
|
|
34
|
+
"BaseDeadlineReference",
|
|
34
35
|
"BaseHook",
|
|
35
36
|
"BaseNotifier",
|
|
36
37
|
"BaseOperator",
|
|
@@ -105,6 +106,7 @@ __all__ = [
|
|
|
105
106
|
"conf",
|
|
106
107
|
"cross_downstream",
|
|
107
108
|
"dag",
|
|
109
|
+
"deadline_reference",
|
|
108
110
|
"get_current_context",
|
|
109
111
|
"get_parsing_context",
|
|
110
112
|
"literal",
|
|
@@ -117,7 +119,7 @@ __all__ = [
|
|
|
117
119
|
"teardown",
|
|
118
120
|
]
|
|
119
121
|
|
|
120
|
-
__version__ = "1.3.
|
|
122
|
+
__version__ = "1.3.2"
|
|
121
123
|
|
|
122
124
|
if TYPE_CHECKING:
|
|
123
125
|
from airflow.sdk.api.datamodels._generated import DagRunState, TaskInstanceState, TriggerRule, WeightRule
|
|
@@ -151,7 +153,12 @@ if TYPE_CHECKING:
|
|
|
151
153
|
from airflow.sdk.definitions.connection import Connection
|
|
152
154
|
from airflow.sdk.definitions.context import Context, get_current_context, get_parsing_context
|
|
153
155
|
from airflow.sdk.definitions.dag import DAG, dag
|
|
154
|
-
from airflow.sdk.definitions.deadline import
|
|
156
|
+
from airflow.sdk.definitions.deadline import (
|
|
157
|
+
BaseDeadlineReference,
|
|
158
|
+
DeadlineAlert,
|
|
159
|
+
DeadlineReference,
|
|
160
|
+
deadline_reference,
|
|
161
|
+
)
|
|
155
162
|
from airflow.sdk.definitions.decorators import result, setup, task, teardown
|
|
156
163
|
from airflow.sdk.definitions.decorators.task_group import task_group
|
|
157
164
|
from airflow.sdk.definitions.edges import EdgeModifier, Label
|
|
@@ -234,6 +241,7 @@ __lazy_imports: dict[str, str] = {
|
|
|
234
241
|
"AsyncCallback": ".definitions.callback",
|
|
235
242
|
"BaseAsyncOperator": ".bases.operator",
|
|
236
243
|
"BaseBranchOperator": ".bases.branch",
|
|
244
|
+
"BaseDeadlineReference": ".definitions.deadline",
|
|
237
245
|
"BaseHook": ".bases.hook",
|
|
238
246
|
"BaseNotifier": ".bases.notifier",
|
|
239
247
|
"BaseOperator": ".bases.operator",
|
|
@@ -308,6 +316,7 @@ __lazy_imports: dict[str, str] = {
|
|
|
308
316
|
"conf": ".configuration",
|
|
309
317
|
"cross_downstream": ".bases.operator",
|
|
310
318
|
"dag": ".definitions.dag",
|
|
319
|
+
"deadline_reference": ".definitions.deadline",
|
|
311
320
|
"NEVER_EXPIRE": ".execution_time.context",
|
|
312
321
|
"get_current_context": ".definitions.context",
|
|
313
322
|
"get_parsing_context": ".definitions.context",
|
|
@@ -345,6 +345,24 @@ metrics:
|
|
|
345
345
|
legacy_name: "-"
|
|
346
346
|
name_variables: []
|
|
347
347
|
|
|
348
|
+
- name: "scheduler.dag_bag.cache_hit"
|
|
349
|
+
description: "Number of cache hits when retrieving SerializedDAG from DBDagBag in the scheduler"
|
|
350
|
+
type: "counter"
|
|
351
|
+
legacy_name: "-"
|
|
352
|
+
name_variables: []
|
|
353
|
+
|
|
354
|
+
- name: "scheduler.dag_bag.cache_miss"
|
|
355
|
+
description: "Number of cache misses when retrieving SerializedDAG from DBDagBag in the scheduler"
|
|
356
|
+
type: "counter"
|
|
357
|
+
legacy_name: "-"
|
|
358
|
+
name_variables: []
|
|
359
|
+
|
|
360
|
+
- name: "scheduler.dag_bag.cache_clear"
|
|
361
|
+
description: "Number of times the DBDagBag cache was cleared in the scheduler"
|
|
362
|
+
type: "counter"
|
|
363
|
+
legacy_name: "-"
|
|
364
|
+
name_variables: []
|
|
365
|
+
|
|
348
366
|
- name: "connection_test.success"
|
|
349
367
|
description: "Number of worker-dispatched connection tests that completed successfully."
|
|
350
368
|
type: "counter"
|
|
@@ -379,6 +397,12 @@ metrics:
|
|
|
379
397
|
legacy_name: "-"
|
|
380
398
|
name_variables: []
|
|
381
399
|
|
|
400
|
+
- name: "scheduler.dag_bag.cache_size"
|
|
401
|
+
description: "Current number of SerializedDAG objects cached in the scheduler's DBDagBag"
|
|
402
|
+
type: "gauge"
|
|
403
|
+
legacy_name: "-"
|
|
404
|
+
name_variables: []
|
|
405
|
+
|
|
382
406
|
- name: "connection_test.active"
|
|
383
407
|
description: "Number of connection tests currently in flight (``queued`` + ``running``), sampled by the
|
|
384
408
|
scheduler each tick."
|
|
@@ -28,7 +28,7 @@ import os
|
|
|
28
28
|
import sys
|
|
29
29
|
import types
|
|
30
30
|
from pathlib import Path
|
|
31
|
-
from typing import TYPE_CHECKING, Any
|
|
31
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
32
32
|
|
|
33
33
|
if TYPE_CHECKING:
|
|
34
34
|
if sys.version_info >= (3, 12):
|
|
@@ -177,7 +177,9 @@ def is_valid_plugin(plugin_obj) -> bool:
|
|
|
177
177
|
)
|
|
178
178
|
|
|
179
179
|
if is_airflow_plugin and plugin_obj.__name__ != "AirflowPlugin":
|
|
180
|
-
|
|
180
|
+
# The MRO check above establishes this by name; `inspect.isclass` only narrows to
|
|
181
|
+
# `type[object]`, which does not carry `validate`.
|
|
182
|
+
cast("type[AirflowPlugin]", plugin_obj).validate()
|
|
181
183
|
return True
|
|
182
184
|
return False
|
|
183
185
|
|
|
@@ -219,14 +219,20 @@ class SecretsMasker(logging.Filter):
|
|
|
219
219
|
break
|
|
220
220
|
else:
|
|
221
221
|
# Block only runs if no break above.
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
222
|
+
# Use a factory so the captured subclass method is held in the factory's
|
|
223
|
+
# closure rather than as a default argument on `_redact`. A default arg
|
|
224
|
+
# would leak the name into `_redact`'s keyword signature (visible via
|
|
225
|
+
# `inspect.signature(..., follow_wrapped=False)` and callable-visible via
|
|
226
|
+
# `**kwargs`), which would let a caller silently substitute a different
|
|
227
|
+
# function inside the secrets-masking path.
|
|
228
|
+
def _make_redact(f):
|
|
229
|
+
@functools.wraps(f)
|
|
230
|
+
def _redact(*args, replacement: str = "***", **kwargs):
|
|
231
|
+
return f(*args, **kwargs)
|
|
232
|
+
|
|
233
|
+
return _redact
|
|
234
|
+
|
|
235
|
+
cls._redact = _make_redact(cls._redact)
|
|
230
236
|
...
|
|
231
237
|
|
|
232
238
|
@classmethod
|
|
@@ -234,6 +234,17 @@ def td_format(td_object: None | dt.timedelta | float | int) -> str | None:
|
|
|
234
234
|
"""
|
|
235
235
|
if td_object is None:
|
|
236
236
|
return None
|
|
237
|
+
|
|
238
|
+
prefix = ""
|
|
239
|
+
if isinstance(td_object, dt.timedelta):
|
|
240
|
+
if td_object < dt.timedelta(0):
|
|
241
|
+
prefix = "-"
|
|
242
|
+
td_object = -td_object
|
|
243
|
+
elif isinstance(td_object, (int, float)):
|
|
244
|
+
if td_object < 0:
|
|
245
|
+
prefix = "-"
|
|
246
|
+
td_object = -td_object
|
|
247
|
+
|
|
237
248
|
if isinstance(td_object, dt.timedelta):
|
|
238
249
|
delta = relativedelta() + td_object
|
|
239
250
|
else:
|
|
@@ -258,7 +269,7 @@ def td_format(td_object: None | dt.timedelta | float | int) -> str | None:
|
|
|
258
269
|
joined = ":".join(part for part in parts if part)
|
|
259
270
|
if not joined:
|
|
260
271
|
return "<1s"
|
|
261
|
-
return joined
|
|
272
|
+
return f"{prefix}{joined}"
|
|
262
273
|
|
|
263
274
|
|
|
264
275
|
def parse_timezone(name: str | int) -> FixedTimezone | Timezone:
|
{apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/client.py
RENAMED
|
@@ -211,6 +211,12 @@ def raise_on_4xx_5xx_with_note(response: httpx.Response):
|
|
|
211
211
|
e.add_note(
|
|
212
212
|
f"Correlation-id={response.headers.get('correlation-id', None) or response.request.headers.get('correlation-id', 'no-correlation-id')}"
|
|
213
213
|
)
|
|
214
|
+
# .detail sits behind the generic message and only reaches logs where a handler
|
|
215
|
+
# logs it by hand. Add it as a note too, so uncaught paths (e.g. the executor) keep it.
|
|
216
|
+
|
|
217
|
+
detail = getattr(e, "detail", None)
|
|
218
|
+
if detail is not None:
|
|
219
|
+
e.add_note(f"Server error detail: {detail!r}")
|
|
214
220
|
raise
|
|
215
221
|
|
|
216
222
|
|
|
@@ -253,6 +253,38 @@ def determine_kwargs(
|
|
|
253
253
|
return KeywordParameters.determine(func, args, kwargs).unpacking()
|
|
254
254
|
|
|
255
255
|
|
|
256
|
+
_TASK_DECORATOR_CALL_HINT = (
|
|
257
|
+
"This can happen when a @task-decorated function shadows another callable and the decorated task "
|
|
258
|
+
"object is called like a regular function. Rename the task function or call the original callable instead."
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def _is_python_callable_already_executing(python_callable: Callable) -> bool:
|
|
263
|
+
target_code = getattr(python_callable, "__code__", None)
|
|
264
|
+
if target_code is None:
|
|
265
|
+
return False
|
|
266
|
+
|
|
267
|
+
frame = inspect.currentframe()
|
|
268
|
+
try:
|
|
269
|
+
while frame is not None:
|
|
270
|
+
if frame.f_code is target_code:
|
|
271
|
+
return True
|
|
272
|
+
frame = frame.f_back
|
|
273
|
+
return False
|
|
274
|
+
finally:
|
|
275
|
+
del frame
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
def _should_add_task_decorator_call_hint(
|
|
279
|
+
err: TypeError, python_callable: Callable, op_args: Collection[Any]
|
|
280
|
+
) -> bool:
|
|
281
|
+
return (
|
|
282
|
+
bool(op_args)
|
|
283
|
+
and "too many positional arguments" in str(err)
|
|
284
|
+
and _is_python_callable_already_executing(python_callable)
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
|
|
256
288
|
class DecoratedOperator(BaseOperator):
|
|
257
289
|
"""
|
|
258
290
|
Wraps a Python callable and captures args/kwargs when called for execution.
|
|
@@ -365,10 +397,15 @@ class DecoratedOperator(BaseOperator):
|
|
|
365
397
|
# check all the arguments we know are valid. Whether these are enough
|
|
366
398
|
# can only be known at execution time, when unmapping happens, and this
|
|
367
399
|
# is called without the _airflow_mapped_validation_only flag.
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
400
|
+
try:
|
|
401
|
+
if kwargs.get("_airflow_mapped_validation_only"):
|
|
402
|
+
signature.bind_partial(*op_args, **op_kwargs)
|
|
403
|
+
else:
|
|
404
|
+
signature.bind(*op_args, **op_kwargs)
|
|
405
|
+
except TypeError as err:
|
|
406
|
+
if _should_add_task_decorator_call_hint(err, python_callable, op_args):
|
|
407
|
+
raise TypeError(f"{err}. {_TASK_DECORATOR_CALL_HINT}") from err
|
|
408
|
+
raise
|
|
372
409
|
|
|
373
410
|
# Params in injected_for_ordering are semantically required even though they received a
|
|
374
411
|
# None default to satisfy Python's ordering constraint. Verify they are actually provided.
|
{apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/operator.py
RENAMED
|
@@ -270,6 +270,21 @@ OPERATOR_DEFAULTS: dict[str, Any] = {
|
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
|
|
273
|
+
def _get_operator_defaults(operator_class: type[BaseOperator]) -> dict[str, Any]:
|
|
274
|
+
"""Get default values for an operator class's BaseOperator arguments."""
|
|
275
|
+
operator_defaults = OPERATOR_DEFAULTS.copy()
|
|
276
|
+
operator_classes = operator_class.mro()
|
|
277
|
+
for operator_base in reversed(operator_classes[: operator_classes.index(BaseOperator)]):
|
|
278
|
+
if (init := operator_base.__dict__.get("__init__")) is None:
|
|
279
|
+
continue
|
|
280
|
+
operator_defaults.update(
|
|
281
|
+
(name, parameter.default)
|
|
282
|
+
for name, parameter in inspect.signature(init).parameters.items()
|
|
283
|
+
if name in OPERATOR_DEFAULTS and parameter.default is not inspect.Parameter.empty
|
|
284
|
+
)
|
|
285
|
+
return operator_defaults
|
|
286
|
+
|
|
287
|
+
|
|
273
288
|
# This is what handles the actual mapping.
|
|
274
289
|
|
|
275
290
|
if TYPE_CHECKING:
|
|
@@ -372,7 +387,9 @@ else:
|
|
|
372
387
|
)
|
|
373
388
|
|
|
374
389
|
# Fill fields not provided by the user with default values.
|
|
375
|
-
partial_kwargs.update(
|
|
390
|
+
partial_kwargs.update(
|
|
391
|
+
(k, v) for k, v in _get_operator_defaults(operator_class).items() if k not in partial_kwargs
|
|
392
|
+
)
|
|
376
393
|
|
|
377
394
|
# Post-process arguments. Should be kept in sync with _TaskDecorator.expand().
|
|
378
395
|
if "task_concurrency" in kwargs: # Reject deprecated option.
|
{apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/configuration.py
RENAMED
|
@@ -304,22 +304,32 @@ def initialize_secrets_backends(
|
|
|
304
304
|
return backend_list
|
|
305
305
|
|
|
306
306
|
|
|
307
|
+
_secrets_backend_cache: dict[tuple[str, ...], list] = {}
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
def clear_secrets_backends_cache() -> None:
|
|
311
|
+
"""Drop the memoised backends so the next load rebuilds them from the current config."""
|
|
312
|
+
_secrets_backend_cache.clear()
|
|
313
|
+
|
|
314
|
+
|
|
307
315
|
def ensure_secrets_loaded(
|
|
308
316
|
default_backends: list[str] = _SERVER_DEFAULT_SECRETS_SEARCH_PATH,
|
|
309
317
|
) -> list:
|
|
310
318
|
"""
|
|
311
|
-
|
|
319
|
+
Return the secrets backends for the given search path, building them once per process.
|
|
312
320
|
|
|
313
|
-
|
|
321
|
+
A backend holds an authenticated client, so rebuilding one per lookup makes every secret
|
|
322
|
+
fetch authenticate again against the remote store. Nothing is memoised until a custom
|
|
323
|
+
backend is configured, so one appearing after the first lookup is still picked up.
|
|
314
324
|
"""
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
return
|
|
325
|
+
key = tuple(default_backends)
|
|
326
|
+
if key not in _secrets_backend_cache:
|
|
327
|
+
backends = initialize_secrets_backends(default_backends=default_backends)
|
|
328
|
+
# Equal lengths mean nothing was prepended, so no custom backend is configured yet.
|
|
329
|
+
if len(backends) == len(default_backends):
|
|
330
|
+
return backends
|
|
331
|
+
_secrets_backend_cache[key] = backends
|
|
332
|
+
return _secrets_backend_cache[key]
|
|
323
333
|
|
|
324
334
|
|
|
325
335
|
def initialize_config() -> AirflowSDKConfigParser:
|
|
@@ -153,10 +153,13 @@ class Connection:
|
|
|
153
153
|
else:
|
|
154
154
|
self.__dict__.update(attrs.asdict(self.from_uri(uri, conn_id=conn_id), recurse=False))
|
|
155
155
|
|
|
156
|
-
def
|
|
157
|
-
"""
|
|
158
|
-
|
|
156
|
+
def _build_uri(self, extra_dejson: dict) -> str:
|
|
157
|
+
"""
|
|
158
|
+
Build the connection URI given a pre-resolved extra_dejson dict.
|
|
159
159
|
|
|
160
|
+
Shared by ``get_uri`` (sync) and ``aget_uri`` (async) so the
|
|
161
|
+
URI-assembly logic lives in exactly one place.
|
|
162
|
+
"""
|
|
160
163
|
if self.conn_type:
|
|
161
164
|
uri = f"{self.conn_type.lower().replace('_', '-')}://"
|
|
162
165
|
else:
|
|
@@ -202,7 +205,6 @@ class Connection:
|
|
|
202
205
|
|
|
203
206
|
if self.extra:
|
|
204
207
|
try:
|
|
205
|
-
extra_dejson = self.extra_dejson
|
|
206
208
|
query: str | None = urlencode(extra_dejson)
|
|
207
209
|
except TypeError:
|
|
208
210
|
query = None
|
|
@@ -213,6 +215,20 @@ class Connection:
|
|
|
213
215
|
|
|
214
216
|
return uri
|
|
215
217
|
|
|
218
|
+
def get_uri(self) -> str:
|
|
219
|
+
"""Generate and return connection in URI format."""
|
|
220
|
+
return self._build_uri(self.extra_dejson)
|
|
221
|
+
|
|
222
|
+
async def aget_uri(self) -> str:
|
|
223
|
+
"""
|
|
224
|
+
Async version of ``get_uri``, safe for use inside an async task.
|
|
225
|
+
|
|
226
|
+
Calls ``aextra_dejson`` so that secret masking uses ``asend()``
|
|
227
|
+
instead of the synchronous ``send()``, preventing
|
|
228
|
+
``DeadlockImminentError`` when invoked from within an async context.
|
|
229
|
+
"""
|
|
230
|
+
return self._build_uri(await self.aextra_dejson())
|
|
231
|
+
|
|
216
232
|
def get_hook(self, *, hook_params=None):
|
|
217
233
|
"""Return hook based on conn_type."""
|
|
218
234
|
from airflow.sdk._shared.module_loading import import_string
|
|
@@ -306,6 +322,25 @@ class Connection:
|
|
|
306
322
|
|
|
307
323
|
return extra
|
|
308
324
|
|
|
325
|
+
async def aextra_dejson(self) -> dict:
|
|
326
|
+
"""
|
|
327
|
+
Async version of ``extra_dejson``, safe for use inside an async task.
|
|
328
|
+
|
|
329
|
+
Uses ``amask_secret`` instead of the synchronous ``mask_secret``, so calling
|
|
330
|
+
this from within an async context does not trigger ``DeadlockImminentError``.
|
|
331
|
+
"""
|
|
332
|
+
from airflow.sdk.log import amask_secret
|
|
333
|
+
|
|
334
|
+
extra: dict = {}
|
|
335
|
+
if self.extra:
|
|
336
|
+
try:
|
|
337
|
+
extra = json.loads(self.extra)
|
|
338
|
+
except JSONDecodeError:
|
|
339
|
+
log.exception("Failed to deserialize extra property `extra`, returning empty dictionary")
|
|
340
|
+
else:
|
|
341
|
+
await amask_secret(extra)
|
|
342
|
+
return extra
|
|
343
|
+
|
|
309
344
|
def get_extra_dejson(self) -> dict:
|
|
310
345
|
"""Deserialize extra property to JSON."""
|
|
311
346
|
import warnings
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
19
|
import logging
|
|
20
|
+
import warnings
|
|
20
21
|
from abc import ABC
|
|
21
22
|
from dataclasses import dataclass
|
|
22
23
|
from datetime import datetime, timedelta
|
|
@@ -42,11 +43,11 @@ class BaseDeadlineReference(ABC):
|
|
|
42
43
|
"""
|
|
43
44
|
Base class for all Deadline Reference implementations.
|
|
44
45
|
|
|
45
|
-
This is a lightweight SDK class for
|
|
46
|
-
The actual evaluation logic (_evaluate_with) is in Core's SerializedReferenceModels
|
|
46
|
+
This is a lightweight SDK class for Dag authoring. It only handles serialization.
|
|
47
|
+
The actual evaluation logic (``_evaluate_with``) is in Core's ``SerializedReferenceModels``.
|
|
47
48
|
|
|
48
49
|
For custom deadline references, users should inherit from this class and implement
|
|
49
|
-
_evaluate_with() with deferred Core imports (imports inside the method body).
|
|
50
|
+
``_evaluate_with()`` with deferred Core imports (imports inside the method body).
|
|
50
51
|
"""
|
|
51
52
|
|
|
52
53
|
@property
|
|
@@ -419,6 +420,13 @@ class VariableInterval:
|
|
|
419
420
|
key: str
|
|
420
421
|
|
|
421
422
|
def resolve(self) -> timedelta:
|
|
423
|
+
warnings.warn(
|
|
424
|
+
"VariableInterval.resolve() is deprecated and will be removed in a future release. "
|
|
425
|
+
"Deadline interval resolution is handled internally during deadline evaluation.",
|
|
426
|
+
DeprecationWarning,
|
|
427
|
+
stacklevel=2,
|
|
428
|
+
)
|
|
429
|
+
|
|
422
430
|
try:
|
|
423
431
|
value = Variable.get(self.key)
|
|
424
432
|
except AirflowRuntimeError as e:
|
|
@@ -431,7 +439,4 @@ class VariableInterval:
|
|
|
431
439
|
f"VariableInterval '{self.key}' must be an integer (seconds), got: {value!r}"
|
|
432
440
|
) from e
|
|
433
441
|
|
|
434
|
-
if seconds <= 0:
|
|
435
|
-
raise ValueError(f"VariableInterval '{self.key}' must be > 0, got: {seconds}")
|
|
436
|
-
|
|
437
442
|
return timedelta(seconds=seconds)
|
|
@@ -331,10 +331,18 @@ class CommsDecoder(Generic[ReceiveMsgType, SendMsgType]):
|
|
|
331
331
|
else:
|
|
332
332
|
len_bytes = self.socket.recv(4)
|
|
333
333
|
|
|
334
|
-
if len_bytes
|
|
334
|
+
if not len_bytes:
|
|
335
335
|
raise EOFError("Request socket closed before length")
|
|
336
336
|
|
|
337
|
-
|
|
337
|
+
# Stream sockets may return fewer bytes than requested; accumulate the header.
|
|
338
|
+
len_buf = bytearray(len_bytes)
|
|
339
|
+
while len(len_buf) < 4:
|
|
340
|
+
chunk = self.socket.recv(4 - len(len_buf))
|
|
341
|
+
if not chunk:
|
|
342
|
+
raise EOFError(f"Request socket closed mid-length after {len(len_buf)} of 4 bytes")
|
|
343
|
+
len_buf.extend(chunk)
|
|
344
|
+
|
|
345
|
+
length = int.from_bytes(len_buf, byteorder="big")
|
|
338
346
|
|
|
339
347
|
buffer = bytearray(length)
|
|
340
348
|
mv = memoryview(buffer)
|