apache-airflow-providers-standard 1.4.0__tar.gz → 1.4.1rc2__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.

Potentially problematic release.


This version of apache-airflow-providers-standard might be problematic. Click here for more details.

Files changed (137) hide show
  1. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/PKG-INFO +5 -5
  2. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/README.rst +1 -1
  3. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/changelog.rst +8 -0
  4. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/index.rst +1 -1
  5. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/provider.yaml +1 -0
  6. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/pyproject.toml +4 -4
  7. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/__init__.py +1 -1
  8. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/skipmixin.py +2 -2
  9. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_python.py +48 -0
  10. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/test_skipmixin.py +81 -0
  11. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/commits.rst +0 -0
  12. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/conf.py +0 -0
  13. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/configurations-ref.rst +0 -0
  14. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/installing-providers-from-sources.rst +0 -0
  15. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/bash.rst +0 -0
  16. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/datetime.rst +0 -0
  17. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/index.rst +0 -0
  18. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/latest_only.rst +0 -0
  19. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/python.rst +0 -0
  20. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/trigger_dag_run.rst +0 -0
  21. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/security.rst +0 -0
  22. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/bash.rst +0 -0
  23. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/datetime.rst +0 -0
  24. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/external_task_sensor.rst +0 -0
  25. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/file.rst +0 -0
  26. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/index.rst +0 -0
  27. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/python.rst +0 -0
  28. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/__init__.py +0 -0
  29. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/__init__.py +0 -0
  30. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/LICENSE +0 -0
  31. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/__init__.py +0 -0
  32. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/bash.py +0 -0
  33. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/branch_external_python.py +0 -0
  34. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/branch_python.py +0 -0
  35. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/branch_virtualenv.py +0 -0
  36. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/external_python.py +0 -0
  37. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/python.py +0 -0
  38. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/python_virtualenv.py +0 -0
  39. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/sensor.py +0 -0
  40. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/short_circuit.py +0 -0
  41. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/__init__.py +0 -0
  42. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_bash_decorator.py +0 -0
  43. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_bash_operator.py +0 -0
  44. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_branch_datetime_operator.py +0 -0
  45. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_branch_day_of_week_operator.py +0 -0
  46. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_branch_operator.py +0 -0
  47. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_branch_operator_decorator.py +0 -0
  48. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_external_task_child_deferrable.py +0 -0
  49. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_external_task_marker_dag.py +0 -0
  50. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_external_task_parent_deferrable.py +0 -0
  51. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_latest_only.py +0 -0
  52. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_python_decorator.py +0 -0
  53. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_python_operator.py +0 -0
  54. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_sensor_decorator.py +0 -0
  55. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_sensors.py +0 -0
  56. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_short_circuit_decorator.py +0 -0
  57. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_short_circuit_operator.py +0 -0
  58. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_trigger_controller_dag.py +0 -0
  59. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/sql/__init__.py +0 -0
  60. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/sql/sample.sql +0 -0
  61. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/exceptions.py +0 -0
  62. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/get_provider_info.py +0 -0
  63. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/hooks/__init__.py +0 -0
  64. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/hooks/filesystem.py +0 -0
  65. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/hooks/package_index.py +0 -0
  66. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/hooks/subprocess.py +0 -0
  67. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/__init__.py +0 -0
  68. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/bash.py +0 -0
  69. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/branch.py +0 -0
  70. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/datetime.py +0 -0
  71. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/empty.py +0 -0
  72. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/latest_only.py +0 -0
  73. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/python.py +0 -0
  74. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/smooth.py +0 -0
  75. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/trigger_dagrun.py +0 -0
  76. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/weekday.py +0 -0
  77. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/__init__.py +0 -0
  78. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/bash.py +0 -0
  79. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/date_time.py +0 -0
  80. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/external_task.py +0 -0
  81. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/filesystem.py +0 -0
  82. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/python.py +0 -0
  83. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/time.py +0 -0
  84. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/time_delta.py +0 -0
  85. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/weekday.py +0 -0
  86. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/triggers/__init__.py +0 -0
  87. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/triggers/external_task.py +0 -0
  88. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/triggers/file.py +0 -0
  89. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/triggers/temporal.py +0 -0
  90. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/__init__.py +0 -0
  91. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/python_virtualenv.py +0 -0
  92. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/python_virtualenv_script.jinja2 +0 -0
  93. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/sensor_helper.py +0 -0
  94. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/weekday.py +0 -0
  95. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/version_compat.py +0 -0
  96. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/conftest.py +0 -0
  97. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/__init__.py +0 -0
  98. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/__init__.py +0 -0
  99. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/__init__.py +0 -0
  100. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_bash.py +0 -0
  101. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_branch_external_python.py +0 -0
  102. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_branch_python.py +0 -0
  103. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_branch_virtualenv.py +0 -0
  104. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_external_python.py +0 -0
  105. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_python.py +0 -0
  106. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_python_virtualenv.py +0 -0
  107. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_sensor.py +0 -0
  108. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_short_circuit.py +0 -0
  109. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/hooks/__init__.py +0 -0
  110. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/hooks/test_filesystem.py +0 -0
  111. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/hooks/test_package_index.py +0 -0
  112. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/hooks/test_subprocess.py +0 -0
  113. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/__init__.py +0 -0
  114. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_bash.py +0 -0
  115. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_branch_operator.py +0 -0
  116. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_datetime.py +0 -0
  117. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_latest_only_operator.py +0 -0
  118. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_smooth.py +0 -0
  119. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_trigger_dagrun.py +0 -0
  120. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_weekday.py +0 -0
  121. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/__init__.py +0 -0
  122. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_bash.py +0 -0
  123. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_date_time.py +0 -0
  124. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_external_task_sensor.py +0 -0
  125. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_python.py +0 -0
  126. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_time.py +0 -0
  127. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_time_delta.py +0 -0
  128. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_weekday.py +0 -0
  129. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/test_exceptions.py +0 -0
  130. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/triggers/__init__.py +0 -0
  131. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/triggers/test_external_task.py +0 -0
  132. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/triggers/test_file.py +0 -0
  133. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/triggers/test_temporal.py +0 -0
  134. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/__init__.py +0 -0
  135. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/test_python_virtualenv.py +0 -0
  136. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/test_sensor_helper.py +0 -0
  137. {apache_airflow_providers_standard-1.4.0 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/test_weekday.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-standard
3
- Version: 1.4.0
3
+ Version: 1.4.1rc2
4
4
  Summary: Provider package apache-airflow-providers-standard for Apache Airflow
5
5
  Keywords: airflow-provider,standard,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -19,10 +19,10 @@ Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Topic :: System :: Monitoring
22
- Requires-Dist: apache-airflow>=2.10.0
22
+ Requires-Dist: apache-airflow>=2.10.0rc1
23
23
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
24
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-standard/1.4.0/changelog.html
25
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-standard/1.4.0
24
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.1/changelog.html
25
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.1
26
26
  Project-URL: Mastodon, https://fosstodon.org/@airflow
27
27
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
28
28
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -53,7 +53,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
53
53
 
54
54
  Package ``apache-airflow-providers-standard``
55
55
 
56
- Release: ``1.4.0``
56
+ Release: ``1.4.1``
57
57
 
58
58
 
59
59
  Airflow Standard Provider
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-standard``
25
25
 
26
- Release: ``1.4.0``
26
+ Release: ``1.4.1``
27
27
 
28
28
 
29
29
  Airflow Standard Provider
@@ -35,6 +35,14 @@
35
35
  Changelog
36
36
  ---------
37
37
 
38
+ 1.4.1
39
+ .....
40
+
41
+ Bug Fixes
42
+ ~~~~~~~~~
43
+
44
+ * ``Fix sensor skipping in Airflow 3.x branching operators (#53455)``
45
+
38
46
  1.4.0
39
47
  .....
40
48
 
@@ -66,7 +66,7 @@ apache-airflow-providers-standard package
66
66
  Airflow Standard Provider
67
67
 
68
68
 
69
- Release: 1.4.0
69
+ Release: 1.4.1
70
70
 
71
71
  Provider package
72
72
  ----------------
@@ -27,6 +27,7 @@ source-date-epoch: 1751474457
27
27
  # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
28
28
  # to be done in the same PR
29
29
  versions:
30
+ - 1.4.1
30
31
  - 1.4.0
31
32
  - 1.3.0
32
33
  - 1.2.0
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-standard"
28
- version = "1.4.0"
28
+ version = "1.4.1rc2"
29
29
  description = "Provider package apache-airflow-providers-standard for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -56,7 +56,7 @@ requires-python = "~=3.10"
56
56
  # Make sure to run ``breeze static-checks --type update-providers-dependencies --all-files``
57
57
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
58
58
  dependencies = [
59
- "apache-airflow>=2.10.0",
59
+ "apache-airflow>=2.10.0rc1",
60
60
  ]
61
61
 
62
62
  [dependency-groups]
@@ -94,8 +94,8 @@ apache-airflow-providers-common-sql = {workspace = true}
94
94
  apache-airflow-providers-standard = {workspace = true}
95
95
 
96
96
  [project.urls]
97
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/1.4.0"
98
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/1.4.0/changelog.html"
97
+ "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.1"
98
+ "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.1/changelog.html"
99
99
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
100
100
  "Source Code" = "https://github.com/apache/airflow"
101
101
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "1.4.0"
32
+ __version__ = "1.4.1"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.10.0"
@@ -22,7 +22,7 @@ from types import GeneratorType
22
22
  from typing import TYPE_CHECKING
23
23
 
24
24
  from airflow.exceptions import AirflowException
25
- from airflow.providers.standard.version_compat import AIRFLOW_V_3_1_PLUS
25
+ from airflow.providers.standard.version_compat import AIRFLOW_V_3_0_PLUS
26
26
  from airflow.utils.log.logging_mixin import LoggingMixin
27
27
 
28
28
  if TYPE_CHECKING:
@@ -45,7 +45,7 @@ XCOM_SKIPMIXIN_FOLLOWED = "followed"
45
45
 
46
46
 
47
47
  def _ensure_tasks(nodes: Iterable[DAGNode]) -> Sequence[Operator]:
48
- if AIRFLOW_V_3_1_PLUS:
48
+ if AIRFLOW_V_3_0_PLUS:
49
49
  from airflow.sdk import BaseOperator
50
50
  from airflow.sdk.definitions.mappedoperator import MappedOperator
51
51
  else:
@@ -842,6 +842,54 @@ class TestShortCircuitOperator(BasePythonTest):
842
842
  "skipped": ["empty_task"]
843
843
  }
844
844
 
845
+ @pytest.mark.skipif(not AIRFLOW_V_3_0_PLUS, reason="Airflow 2 implementation is different")
846
+ def test_short_circuit_operator_skips_sensors(self):
847
+ """Test that ShortCircuitOperator properly skips sensors in Airflow 3.x."""
848
+ from airflow.sdk.bases.sensor import BaseSensorOperator
849
+
850
+ # Create a sensor similar to S3FileSensor to reproduce the issue
851
+ class CustomS3Sensor(BaseSensorOperator):
852
+ def __init__(self, bucket_name: str, object_key: str, **kwargs):
853
+ super().__init__(**kwargs)
854
+ self.bucket_name = bucket_name
855
+ self.object_key = object_key
856
+ self.timeout = 0
857
+ self.poke_interval = 0
858
+
859
+ def poke(self, context):
860
+ # Simulate sensor logic
861
+ return True
862
+
863
+ with self.dag_maker(self.dag_id):
864
+ # ShortCircuit that evaluates to False (should skip all downstream)
865
+ short_circuit = ShortCircuitOperator(
866
+ task_id="check_dis_is_mon_to_fri_not_holiday",
867
+ python_callable=lambda: False, # This causes skipping
868
+ )
869
+
870
+ sensor_task = CustomS3Sensor(
871
+ task_id="wait_for_ticker_to_secid_lookup_s3_file",
872
+ bucket_name="test-bucket",
873
+ object_key="ticker_to_secid_lookup.csv",
874
+ )
875
+
876
+ short_circuit >> sensor_task
877
+
878
+ dr = self.dag_maker.create_dagrun()
879
+
880
+ self.dag_maker.run_ti("check_dis_is_mon_to_fri_not_holiday", dr)
881
+
882
+ # Verify the sensor is included in the skip list by checking XCom
883
+ # (this was the bug - sensors were not being included in skip list)
884
+ tis = dr.get_task_instances()
885
+ xcom_data = tis[0].xcom_pull(task_ids="check_dis_is_mon_to_fri_not_holiday", key="skipmixin_key")
886
+
887
+ assert xcom_data is not None, "XCom data should exist"
888
+ skipped_task_ids = set(xcom_data.get("skipped", []))
889
+ assert "wait_for_ticker_to_secid_lookup_s3_file" in skipped_task_ids, (
890
+ "Sensor should be skipped by ShortCircuitOperator"
891
+ )
892
+
845
893
 
846
894
  virtualenv_string_args: list[str] = []
847
895
 
@@ -298,3 +298,84 @@ class TestSkipMixin:
298
298
  error_message = r"'branch_task_ids' must contain only valid task_ids. Invalid tasks found: .*"
299
299
  with pytest.raises(AirflowException, match=error_message):
300
300
  SkipMixin().skip_all_except(ti=ti1, branch_task_ids=branch_task_ids)
301
+
302
+ @pytest.mark.skipif(not AIRFLOW_V_3_0_PLUS, reason="Issue only exists in Airflow 3.x")
303
+ def test_ensure_tasks_includes_sensors_airflow_3x(self, dag_maker):
304
+ """Test that sensors (inheriting from airflow.sdk.BaseOperator) are properly handled by _ensure_tasks."""
305
+ from airflow.providers.standard.utils.skipmixin import _ensure_tasks
306
+ from airflow.sdk import BaseOperator as SDKBaseOperator
307
+ from airflow.sdk.bases.sensor import BaseSensorOperator
308
+
309
+ class DummySensor(BaseSensorOperator):
310
+ def __init__(self, **kwargs):
311
+ super().__init__(**kwargs)
312
+ self.timeout = 0
313
+ self.poke_interval = 0
314
+
315
+ def poke(self, context):
316
+ return True
317
+
318
+ with dag_maker("dag_test_sensor_skipping") as dag:
319
+ regular_task = EmptyOperator(task_id="regular_task")
320
+ sensor_task = DummySensor(task_id="sensor_task")
321
+ downstream_task = EmptyOperator(task_id="downstream_task")
322
+
323
+ regular_task >> [sensor_task, downstream_task]
324
+
325
+ dag_maker.create_dagrun(run_id=DEFAULT_DAG_RUN_ID)
326
+
327
+ downstream_nodes = dag.get_task("regular_task").downstream_list
328
+ task_list = _ensure_tasks(downstream_nodes)
329
+
330
+ # Verify both the regular operator and sensor are included
331
+ task_ids = [t.task_id for t in task_list]
332
+ assert "sensor_task" in task_ids, "Sensor should be included in task list"
333
+ assert "downstream_task" in task_ids, "Regular task should be included in task list"
334
+ assert len(task_list) == 2, "Both tasks should be included"
335
+
336
+ # Also verify that the sensor is actually an instance of the correct BaseOperator
337
+ sensor_in_list = next((t for t in task_list if t.task_id == "sensor_task"), None)
338
+ assert sensor_in_list is not None, "Sensor task should be found in list"
339
+ assert isinstance(sensor_in_list, SDKBaseOperator), "Sensor should be instance of SDK BaseOperator"
340
+
341
+ @pytest.mark.skipif(not AIRFLOW_V_3_0_PLUS, reason="Integration test for Airflow 3.x sensor skipping")
342
+ def test_skip_sensor_in_branching_scenario(self, dag_maker):
343
+ """Integration test: verify sensors are properly skipped by branching operators in Airflow 3.x."""
344
+ from airflow.sdk.bases.sensor import BaseSensorOperator
345
+
346
+ # Create a dummy sensor for testing
347
+ class DummySensor(BaseSensorOperator):
348
+ def __init__(self, **kwargs):
349
+ super().__init__(**kwargs)
350
+ self.timeout = 0
351
+ self.poke_interval = 0
352
+
353
+ def poke(self, context):
354
+ return True
355
+
356
+ with dag_maker("dag_test_branch_sensor_skipping"):
357
+ branch_task = EmptyOperator(task_id="branch_task")
358
+ regular_task = EmptyOperator(task_id="regular_task")
359
+ sensor_task = DummySensor(task_id="sensor_task")
360
+ branch_task >> [regular_task, sensor_task]
361
+
362
+ dag_maker.create_dagrun(run_id=DEFAULT_DAG_RUN_ID)
363
+
364
+ dag_version = DagVersion.get_latest_version(branch_task.dag_id)
365
+ ti_branch = TI(branch_task, run_id=DEFAULT_DAG_RUN_ID, dag_version_id=dag_version.id)
366
+
367
+ # Test skipping the sensor (follow regular_task branch)
368
+ with pytest.raises(DownstreamTasksSkipped) as exc_info:
369
+ SkipMixin().skip_all_except(ti=ti_branch, branch_task_ids="regular_task")
370
+
371
+ # Verify that the sensor task is properly marked for skipping
372
+ skipped_tasks = set(exc_info.value.tasks)
373
+ assert ("sensor_task", -1) in skipped_tasks, "Sensor task should be marked for skipping"
374
+
375
+ # Test skipping the regular task (follow sensor_task branch)
376
+ with pytest.raises(DownstreamTasksSkipped) as exc_info:
377
+ SkipMixin().skip_all_except(ti=ti_branch, branch_task_ids="sensor_task")
378
+
379
+ # Verify that the regular task is properly marked for skipping
380
+ skipped_tasks = set(exc_info.value.tasks)
381
+ assert ("regular_task", -1) in skipped_tasks, "Regular task should be marked for skipping"