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.
Files changed (323) hide show
  1. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/PKG-INFO +5 -5
  2. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/api.rst +4 -0
  3. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/deferred-vs-async-operators.rst +1 -1
  4. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/examples.rst +1 -1
  5. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/index.rst +2 -0
  6. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/pyproject.toml +6 -5
  7. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/__init__.py +11 -2
  8. {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
  9. {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
  10. {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
  11. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/timezones/timezone.py +12 -1
  12. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/client.py +6 -0
  13. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/datamodels/_generated.py +1 -1
  14. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/decorator.py +41 -4
  15. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/operator.py +18 -1
  16. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/configuration.py +20 -10
  17. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/connection.py +39 -4
  18. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/deadline.py +11 -6
  19. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/comms.py +10 -2
  20. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/context.py +98 -40
  21. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/AGENTS.md +6 -3
  22. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/supervisor.py +63 -8
  23. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/conftest.py +10 -0
  24. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/api/test_client.py +17 -0
  25. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_decorator.py +30 -0
  26. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_connection.py +52 -0
  27. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_deadline.py +8 -7
  28. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_mappedoperator.py +22 -1
  29. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_comms.py +39 -0
  30. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_context.py +261 -1
  31. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_secrets.py +38 -0
  32. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_supervisor.py +164 -0
  33. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/.gitignore +0 -0
  34. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/.pre-commit-config.yaml +0 -0
  35. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/LICENSE +0 -0
  36. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/NOTICE +0 -0
  37. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/README.md +0 -0
  38. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/dev/datamodel_code_formatter.py +0 -0
  39. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/dev/generate_task_sdk_models.py +0 -0
  40. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/.gitignore +0 -0
  41. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/airflow-metadata.schema.json +0 -0
  42. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/concepts.rst +0 -0
  43. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/conf.py +0 -0
  44. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/dynamic-task-mapping.rst +0 -0
  45. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/executable-bundle-spec.rst +0 -0
  46. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/img/airflow-2-approach.png +0 -0
  47. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/img/airflow-2-arch.png +0 -0
  48. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/img/airflow-3-arch.png +0 -0
  49. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/img/airflow-3-task-sdk.png +0 -0
  50. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/docs/resumable-job-mixin.rst +0 -0
  51. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/__init__.pyi +0 -0
  52. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/configuration/__init__.py +0 -0
  53. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/configuration/exceptions.py +0 -0
  54. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/configuration/parser.py +0 -0
  55. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/dagnode/__init__.py +0 -0
  56. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/dagnode/node.py +0 -0
  57. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/__init__.py +0 -0
  58. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/listener.py +0 -0
  59. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/spec/__init__.py +0 -0
  60. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/spec/lifecycle.py +0 -0
  61. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/listeners/spec/taskinstance.py +0 -0
  62. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/__init__.py +0 -0
  63. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/_config.py +0 -0
  64. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/_noncaching.py +0 -0
  65. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/factory.py +0 -0
  66. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/percent_formatter.py +0 -0
  67. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/remote.py +0 -0
  68. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/structlog.py +0 -0
  69. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/logging/types.py +0 -0
  70. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/module_loading/__init__.py +0 -0
  71. {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
  72. {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
  73. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/__init__.py +0 -0
  74. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/common.py +0 -0
  75. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/exceptions.py +0 -0
  76. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/__init__.py +0 -0
  77. {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
  78. {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
  79. {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
  80. {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
  81. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/protocols.py +0 -0
  82. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/stats.py +0 -0
  83. {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
  84. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/metrics/validators.py +0 -0
  85. {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
  86. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/observability/traces/__init__.py +0 -0
  87. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/plugins_manager/__init__.py +0 -0
  88. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/providers_discovery/__init__.py +0 -0
  89. {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
  90. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/secrets_backend/__init__.py +0 -0
  91. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/secrets_backend/base.py +0 -0
  92. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/secrets_masker/__init__.py +0 -0
  93. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/serialization/__init__.py +0 -0
  94. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/state/__init__.py +0 -0
  95. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/template_rendering/__init__.py +0 -0
  96. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/_shared/timezones/__init__.py +0 -0
  97. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/__init__.py +0 -0
  98. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/datamodels/__init__.py +0 -0
  99. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/api/datamodels/activities.py +0 -0
  100. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/__init__.py +0 -0
  101. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/branch.py +0 -0
  102. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/hook.py +0 -0
  103. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/notifier.py +0 -0
  104. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/operatorlink.py +0 -0
  105. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/resumablejobmixin.py +0 -0
  106. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/secrets_backend.py +0 -0
  107. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/sensor.py +0 -0
  108. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/skipmixin.py +0 -0
  109. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/timetable.py +0 -0
  110. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/bases/xcom.py +0 -0
  111. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/__init__.py +0 -0
  112. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/_subprocess.py +0 -0
  113. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/executable/__init__.py +0 -0
  114. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/executable/coordinator.py +0 -0
  115. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/java/__init__.py +0 -0
  116. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/coordinators/java/coordinator.py +0 -0
  117. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/crypto.py +0 -0
  118. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/__init__.py +0 -0
  119. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/__init__.py +0 -0
  120. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/abstractoperator.py +0 -0
  121. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/contextmanager.py +0 -0
  122. {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
  123. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/decorators.py +0 -0
  124. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/expandinput.py +0 -0
  125. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/logging_mixin.py +0 -0
  126. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/mixins.py +0 -0
  127. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/node.py +0 -0
  128. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/setup_teardown.py +0 -0
  129. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/templater.py +0 -0
  130. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/_internal/types.py +0 -0
  131. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/asset/__init__.py +0 -0
  132. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/asset/access_control.py +0 -0
  133. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/asset/decorators.py +0 -0
  134. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/asset/metadata.py +0 -0
  135. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/callback.py +0 -0
  136. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/context.py +0 -0
  137. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/dag.py +0 -0
  138. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/__init__.py +0 -0
  139. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/__init__.pyi +0 -0
  140. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/condition.py +0 -0
  141. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/setup_teardown.py +0 -0
  142. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/decorators/task_group.py +0 -0
  143. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/edges.py +0 -0
  144. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/mappedoperator.py +0 -0
  145. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/operator_resources.py +0 -0
  146. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/param.py +0 -0
  147. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/__init__.py +0 -0
  148. {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
  149. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/base.py +0 -0
  150. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/chain.py +0 -0
  151. {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
  152. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/identity.py +0 -0
  153. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/product.py +0 -0
  154. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/temporal.py +0 -0
  155. {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
  156. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/partition_mappers/window.py +0 -0
  157. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/retry_policy.py +0 -0
  158. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/taskgroup.py +0 -0
  159. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/template.py +0 -0
  160. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/__init__.py +0 -0
  161. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/_cron.py +0 -0
  162. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/_delta.py +0 -0
  163. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/assets.py +0 -0
  164. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/events.py +0 -0
  165. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/interval.py +0 -0
  166. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/simple.py +0 -0
  167. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/timetables/trigger.py +0 -0
  168. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/variable.py +0 -0
  169. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/definitions/xcom_arg.py +0 -0
  170. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/exceptions.py +0 -0
  171. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/__init__.py +0 -0
  172. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/cache.py +0 -0
  173. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/callback_runner.py +0 -0
  174. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/callback_supervisor.py +0 -0
  175. {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
  176. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/coordinator.py +0 -0
  177. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/email_backend.py +0 -0
  178. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/execute_workload.py +0 -0
  179. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/hitl.py +0 -0
  180. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/lazy_sequence.py +0 -0
  181. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/macros.py +0 -0
  182. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/request_handlers.py +0 -0
  183. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/__init__.py +0 -0
  184. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/migrator.py +0 -0
  185. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/schema/schema.json +0 -0
  186. {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
  187. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/secrets/__init__.py +0 -0
  188. {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
  189. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/secrets_masker.py +0 -0
  190. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/sentry/__init__.py +0 -0
  191. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/sentry/configured.py +0 -0
  192. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/sentry/noop.py +0 -0
  193. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/task_mapping.py +0 -0
  194. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/task_runner.py +0 -0
  195. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/timeout.py +0 -0
  196. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/execution_time/xcom.py +0 -0
  197. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/__init__.py +0 -0
  198. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/fs.py +0 -0
  199. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/path.py +0 -0
  200. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/stat.py +0 -0
  201. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/store.py +0 -0
  202. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/io/typedef.py +0 -0
  203. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/lineage.py +0 -0
  204. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/listener.py +0 -0
  205. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/log.py +0 -0
  206. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/module_loading.py +0 -0
  207. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/__init__.py +0 -0
  208. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/__init__.py +0 -0
  209. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/datadog_logger.py +0 -0
  210. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/otel_logger.py +0 -0
  211. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/stats_utils.py +0 -0
  212. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/metrics/statsd_logger.py +0 -0
  213. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/observability/stats.py +0 -0
  214. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/plugins_manager.py +0 -0
  215. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/providers_manager_runtime.py +0 -0
  216. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/py.typed +0 -0
  217. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/__init__.py +0 -0
  218. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/__init__.py +0 -0
  219. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/bignum.py +0 -0
  220. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/builtin.py +0 -0
  221. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/datetime.py +0 -0
  222. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/deltalake.py +0 -0
  223. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/iceberg.py +0 -0
  224. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/kubernetes.py +0 -0
  225. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/numpy.py +0 -0
  226. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/pandas.py +0 -0
  227. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/pydantic.py +0 -0
  228. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/timezone.py +0 -0
  229. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/serializers/uuid.py +0 -0
  230. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/serde/typing.py +0 -0
  231. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/state.py +0 -0
  232. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/timezone.py +0 -0
  233. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/types.py +0 -0
  234. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/src/airflow/sdk/yaml.py +0 -0
  235. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/__init__.py +0 -0
  236. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/__init__.py +0 -0
  237. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/api/__init__.py +0 -0
  238. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/__init__.py +0 -0
  239. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/notifier/test_notifier.txt +0 -0
  240. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_branch.py +0 -0
  241. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_hook.py +0 -0
  242. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_notifier.py +0 -0
  243. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_operator.py +0 -0
  244. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_resumablejobmixin.py +0 -0
  245. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_sensor.py +0 -0
  246. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_skipmixin.py +0 -0
  247. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/bases/test_xcom.py +0 -0
  248. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/__init__.py +0 -0
  249. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/executable/__init__.py +0 -0
  250. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/executable/test_coordinator.py +0 -0
  251. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/java/__init__.py +0 -0
  252. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/java/test_coordinator.py +0 -0
  253. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/coordinators/test_subprocess.py +0 -0
  254. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/dag_parsing_context.py +0 -0
  255. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/signal_forward_test.py +0 -0
  256. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/super_basic.py +0 -0
  257. {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
  258. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/dags/super_basic_run.py +0 -0
  259. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/__init__.py +0 -0
  260. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/_internal/__init__.py +0 -0
  261. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/_internal/test_decorators.py +0 -0
  262. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/_internal/test_templater.py +0 -0
  263. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/conftest.py +0 -0
  264. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/__init__.py +0 -0
  265. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/test_condition.py +0 -0
  266. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/test_mapped.py +0 -0
  267. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/decorators/test_result.py +0 -0
  268. {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
  269. {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
  270. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/sensors/__init__.py +0 -0
  271. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_asset.py +0 -0
  272. {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
  273. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_asset_decorators.py +0 -0
  274. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_callback.py +0 -0
  275. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_context.py +0 -0
  276. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_dag.py +0 -0
  277. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_macros.py +0 -0
  278. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_mixins.py +0 -0
  279. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_module_loading.py +0 -0
  280. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_operator_resources.py +0 -0
  281. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_param.py +0 -0
  282. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_partition_mappers.py +0 -0
  283. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_retry_policy.py +0 -0
  284. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_taskgroup.py +0 -0
  285. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_template.py +0 -0
  286. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_variables.py +0 -0
  287. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_wait_policy.py +0 -0
  288. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/test_xcom_arg.py +0 -0
  289. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/timetables/__init__.py +0 -0
  290. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/definitions/timetables/test__cron.py +0 -0
  291. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/docs/__init__.py +0 -0
  292. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/docs/test_docs_inventory.py +0 -0
  293. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/docs/test_public_api.py +0 -0
  294. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/__init__.py +0 -0
  295. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/conftest.py +0 -0
  296. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/schema/__init__.py +0 -0
  297. {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
  298. {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
  299. {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
  300. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_cache.py +0 -0
  301. {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
  302. {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
  303. {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
  304. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_coordinator.py +0 -0
  305. {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
  306. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_hitl.py +0 -0
  307. {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
  308. {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
  309. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_sentry.py +0 -0
  310. {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
  311. {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
  312. {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
  313. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/execution_time/test_timeout.py +0 -0
  314. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/io/__init__.py +0 -0
  315. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/io/test_path.py +0 -0
  316. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/serde/__init__.py +0 -0
  317. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/serde/test_serde.py +0 -0
  318. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/serde/test_serializers.py +0 -0
  319. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_configuration.py +0 -0
  320. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_crypto.py +0 -0
  321. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_exceptions.py +0 -0
  322. {apache_airflow_task_sdk-1.3.1rc2 → apache_airflow_task_sdk-1.3.2}/tests/task_sdk/test_lineage.py +0 -0
  323. {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.4
1
+ Metadata-Version: 2.5
2
2
  Name: apache-airflow-task-sdk
3
- Version: 1.3.1rc2
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.staged.apache.org/docs/
7
- Project-URL: Homepage, https://airflow.staged.apache.org/
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.0rc1
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.get_hook(conn_id="msgraph_default")
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 `Getting Started <../index.rst#getting-started>`_ section.
21
+ .. note:: For a minimal quick start, see the :ref:`Getting Started <getting-started>` section.
22
22
 
23
23
  Key Concepts
24
24
  ------------
@@ -40,6 +40,8 @@ To install the Task SDK, run:
40
40
 
41
41
  pip install apache-airflow-task-sdk
42
42
 
43
+ .. _getting-started:
44
+
43
45
  Getting Started
44
46
  ^^^^^^^^^^^^^^^
45
47
  Define a basic Dag and task in just a few lines of Python:
@@ -48,7 +48,7 @@ classifiers = [
48
48
  "Topic :: System :: Monitoring",
49
49
  ]
50
50
  dependencies = [
51
- "apache-airflow-core<3.4.0,>=3.3.0rc1",
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.staged.apache.org/docs/"
116
- Homepage = "https://airflow.staged.apache.org/"
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.30.1",
127
- "packaging==26.2",
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"
@@ -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.1rc2"
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 DeadlineAlert, DeadlineReference
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
- plugin_obj.validate()
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
- f = cls._redact
224
-
225
- @functools.wraps(f)
226
- def _redact(*args, replacement: str = "***", **kwargs):
227
- return f(*args, **kwargs)
228
-
229
- cls._redact = _redact
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:
@@ -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
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: http://0.0.0.0:8080/execution/openapi.json
3
- # version: 0.71.0
3
+ # version: 0.77.0
4
4
 
5
5
  # Licensed to the Apache Software Foundation (ASF) under one
6
6
  # or more contributor license agreements. See the NOTICE file
@@ -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
- if kwargs.get("_airflow_mapped_validation_only"):
369
- signature.bind_partial(*op_args, **op_kwargs)
370
- else:
371
- signature.bind(*op_args, **op_kwargs)
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.
@@ -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((k, v) for k, v in OPERATOR_DEFAULTS.items() if k not in partial_kwargs)
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.
@@ -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
- Ensure that all secrets backends are loaded.
319
+ Return the secrets backends for the given search path, building them once per process.
312
320
 
313
- If the secrets_backend_list contains only 2 default backends, reload it.
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
- # Check if the secrets_backend_list contains only 2 default backends.
316
-
317
- # Check if we are loading the backends for worker too by checking if the default_backends is equal
318
- # to _SERVER_DEFAULT_SECRETS_SEARCH_PATH.
319
- secrets_backend_list = initialize_secrets_backends()
320
- if len(secrets_backend_list) == 2 or default_backends != _SERVER_DEFAULT_SECRETS_SEARCH_PATH:
321
- return initialize_secrets_backends(default_backends=default_backends)
322
- return secrets_backend_list
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 get_uri(self) -> str:
157
- """Generate and return connection in URI format."""
158
- from urllib.parse import parse_qsl
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 DAG authoring. It only handles serialization.
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 == b"":
334
+ if not len_bytes:
335
335
  raise EOFError("Request socket closed before length")
336
336
 
337
- length = int.from_bytes(len_bytes, byteorder="big")
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)