apache-airflow-providers-standard 1.0.0__tar.gz → 1.1.0rc1__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 (116) hide show
  1. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/PKG-INFO +7 -7
  2. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/README.rst +3 -3
  3. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/changelog.rst +32 -0
  4. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/commits.rst +21 -0
  5. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/index.rst +1 -1
  6. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/operators/datetime.rst +2 -2
  7. apache_airflow_providers_standard-1.1.0rc1/docs/operators/latest_only.rst +31 -0
  8. apache_airflow_providers_standard-1.1.0rc1/docs/operators/trigger_dag_run.rst +31 -0
  9. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/provider.yaml +13 -1
  10. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/pyproject.toml +4 -4
  11. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/__init__.py +1 -1
  12. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/get_provider_info.py +11 -0
  13. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/latest_only.py +42 -30
  14. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/trigger_dagrun.py +21 -0
  15. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_python_virtualenv.py +1 -1
  16. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_sensor.py +1 -1
  17. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/hooks/test_subprocess.py +2 -0
  18. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_latest_only_operator.py +40 -67
  19. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_python.py +15 -3
  20. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_trigger_dagrun.py +25 -2
  21. apache_airflow_providers_standard-1.1.0rc1/tests/unit/standard/utils/test_sensor_helper.py +453 -0
  22. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/conf.py +0 -0
  23. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/configurations-ref.rst +0 -0
  24. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  25. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/operators/bash.rst +0 -0
  26. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/operators/index.rst +0 -0
  27. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/operators/python.rst +0 -0
  28. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/security.rst +0 -0
  29. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/sensors/bash.rst +0 -0
  30. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/sensors/datetime.rst +0 -0
  31. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/sensors/external_task_sensor.rst +0 -0
  32. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/sensors/file.rst +0 -0
  33. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/sensors/index.rst +0 -0
  34. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/docs/sensors/python.rst +0 -0
  35. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/__init__.py +0 -0
  36. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/__init__.py +0 -0
  37. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/LICENSE +0 -0
  38. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/__init__.py +0 -0
  39. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/bash.py +0 -0
  40. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/branch_external_python.py +0 -0
  41. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/branch_python.py +0 -0
  42. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/branch_virtualenv.py +0 -0
  43. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/external_python.py +0 -0
  44. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/python.py +0 -0
  45. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/python_virtualenv.py +0 -0
  46. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/sensor.py +0 -0
  47. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/decorators/short_circuit.py +0 -0
  48. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/hooks/__init__.py +0 -0
  49. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/hooks/filesystem.py +0 -0
  50. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/hooks/package_index.py +0 -0
  51. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/hooks/subprocess.py +0 -0
  52. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/__init__.py +0 -0
  53. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/bash.py +0 -0
  54. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/branch.py +0 -0
  55. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/datetime.py +0 -0
  56. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/empty.py +0 -0
  57. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/python.py +0 -0
  58. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/smooth.py +0 -0
  59. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/operators/weekday.py +0 -0
  60. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/__init__.py +0 -0
  61. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/bash.py +0 -0
  62. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/date_time.py +0 -0
  63. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/external_task.py +0 -0
  64. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/filesystem.py +0 -0
  65. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/python.py +0 -0
  66. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/time.py +0 -0
  67. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/time_delta.py +0 -0
  68. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/sensors/weekday.py +0 -0
  69. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/triggers/__init__.py +0 -0
  70. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/triggers/external_task.py +0 -0
  71. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/triggers/file.py +0 -0
  72. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/triggers/temporal.py +0 -0
  73. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/utils/__init__.py +0 -0
  74. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/utils/python_virtualenv.py +0 -0
  75. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/utils/python_virtualenv_script.jinja2 +0 -0
  76. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/utils/sensor_helper.py +0 -0
  77. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/utils/skipmixin.py +0 -0
  78. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/utils/weekday.py +0 -0
  79. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/src/airflow/providers/standard/version_compat.py +0 -0
  80. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/conftest.py +0 -0
  81. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/__init__.py +0 -0
  82. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/__init__.py +0 -0
  83. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/__init__.py +0 -0
  84. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_bash.py +0 -0
  85. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_branch_external_python.py +0 -0
  86. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_branch_python.py +0 -0
  87. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_branch_virtualenv.py +0 -0
  88. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_external_python.py +0 -0
  89. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_python.py +0 -0
  90. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/decorators/test_short_circuit.py +0 -0
  91. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/hooks/__init__.py +0 -0
  92. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/hooks/test_filesystem.py +0 -0
  93. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/hooks/test_package_index.py +0 -0
  94. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/__init__.py +0 -0
  95. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_bash.py +0 -0
  96. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_branch_operator.py +0 -0
  97. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_datetime.py +0 -0
  98. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_generic_transfer.py +0 -0
  99. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_smooth.py +0 -0
  100. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/operators/test_weekday.py +0 -0
  101. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/sensors/__init__.py +0 -0
  102. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/sensors/test_bash.py +0 -0
  103. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/sensors/test_date_time.py +0 -0
  104. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/sensors/test_external_task_sensor.py +0 -0
  105. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/sensors/test_python.py +0 -0
  106. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/sensors/test_time.py +0 -0
  107. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/sensors/test_time_delta.py +0 -0
  108. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/sensors/test_weekday.py +0 -0
  109. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/triggers/__init__.py +0 -0
  110. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/triggers/test_external_task.py +0 -0
  111. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/triggers/test_file.py +0 -0
  112. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/triggers/test_temporal.py +0 -0
  113. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/utils/__init__.py +0 -0
  114. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/utils/test_python_virtualenv.py +0 -0
  115. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/tests/unit/standard/utils/test_skipmixin.py +0 -0
  116. {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0rc1}/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.0.0
3
+ Version: 1.1.0rc1
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>
@@ -20,10 +20,10 @@ Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Topic :: System :: Monitoring
23
- Requires-Dist: apache-airflow>=2.9.0
23
+ Requires-Dist: apache-airflow>=2.9.0rc0
24
24
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
25
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/changelog.html
26
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0
25
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0/changelog.html
26
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0
27
27
  Project-URL: Mastodon, https://fosstodon.org/@airflow
28
28
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
29
29
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -54,7 +54,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
54
54
 
55
55
  Package ``apache-airflow-providers-standard``
56
56
 
57
- Release: ``1.0.0``
57
+ Release: ``1.1.0``
58
58
 
59
59
 
60
60
  Airflow Standard Provider
@@ -67,7 +67,7 @@ This is a provider package for ``standard`` provider. All classes for this provi
67
67
  are in ``airflow.providers.standard`` python package.
68
68
 
69
69
  You can find package information and changelog for the provider
70
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/>`_.
70
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0/>`_.
71
71
 
72
72
  Installation
73
73
  ------------
@@ -88,5 +88,5 @@ PIP package Version required
88
88
  ================== ==================
89
89
 
90
90
  The changelog for the provider package can be found in the
91
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/changelog.html>`_.
91
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0/changelog.html>`_.
92
92
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-standard``
25
25
 
26
- Release: ``1.0.0``
26
+ Release: ``1.1.0``
27
27
 
28
28
 
29
29
  Airflow Standard Provider
@@ -36,7 +36,7 @@ This is a provider package for ``standard`` provider. All classes for this provi
36
36
  are in ``airflow.providers.standard`` python package.
37
37
 
38
38
  You can find package information and changelog for the provider
39
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -57,4 +57,4 @@ PIP package Version required
57
57
  ================== ==================
58
58
 
59
59
  The changelog for the provider package can be found in the
60
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/changelog.html>`_.
60
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0/changelog.html>`_.
@@ -35,6 +35,38 @@
35
35
  Changelog
36
36
  ---------
37
37
 
38
+ 1.1.0
39
+ .....
40
+
41
+ Features
42
+ ~~~~~~~~
43
+
44
+ * ``feat: Add fail_when_dag_is_paused param to TriggerDagRunOperator (#48214)``
45
+
46
+ Bug Fixes
47
+ ~~~~~~~~~
48
+
49
+ * ``Make LatestOnlyOperator work for default data-interval-less DAGs (#49554)``
50
+
51
+ Misc
52
+ ~~~~
53
+
54
+ * ``Move DagIsPaused exception to standard provider (#49500)``
55
+ * ``Fix static check re removing unnecessary else condition (#49415)``
56
+
57
+ Doc-only
58
+ ~~~~~~~~
59
+
60
+ * ``Update standard provider doc operators in core operators-and-hooks-ref.rst (#49401)``
61
+ * ``Update standard provider docs with correct imports (#49395)``
62
+
63
+ .. Below changes are excluded from the changelog. Move them to
64
+ appropriate section above if needed. Do not delete the lines(!):
65
+ * ``Fix wrong link in standard provider yaml file (#49660)``
66
+ * ``Add extra-links section to standard provider (#49447)``
67
+ * ``Use unused pytest params in standard provider tests (#49422)``
68
+ * ``Move test_sensor_helper.py to standard provider tests (#49396)``
69
+
38
70
  1.0.0
39
71
  .....
40
72
 
@@ -34,6 +34,26 @@ For high-level changelog, see :doc:`package information including changelog <ind
34
34
 
35
35
 
36
36
 
37
+ 1.1.0
38
+ .....
39
+
40
+ Latest change: 2025-04-24
41
+
42
+ ================================================================================================== =========== =======================================================================================
43
+ Commit Committed Subject
44
+ ================================================================================================== =========== =======================================================================================
45
+ `78615a35f0 <https://github.com/apache/airflow/commit/78615a35f04b6d7a0bf2dbb1787260ba5f4356dc>`__ 2025-04-24 ``Make LatestOnlyOperator work for default data-interval-less DAGs (#49554)``
46
+ `2e3e714f6d <https://github.com/apache/airflow/commit/2e3e714f6d9ffe3e7c7d06d1e2f50e9561f2b808>`__ 2025-04-23 ``Fix wrong link in standard provider yaml file (#49660)``
47
+ `f73f895c28 <https://github.com/apache/airflow/commit/f73f895c28bc773efb614ef80f9b95b3b9c62838>`__ 2025-04-23 ``Update standard provider doc operators in core operators-and-hooks-ref.rst (#49401)``
48
+ `8480c78602 <https://github.com/apache/airflow/commit/8480c78602d00a095d8200fc3000b3be7460ee31>`__ 2025-04-21 ``Move DagIsPaused exception to standard provider (#49500)``
49
+ `6d73ae8ab6 <https://github.com/apache/airflow/commit/6d73ae8ab6aecbf6c00ea4cb6a8d73af9bdcb0b6>`__ 2025-04-19 ``Add extra-links section to standard provider (#49447)``
50
+ `bfc567f4e6 <https://github.com/apache/airflow/commit/bfc567f4e6c0bd3cd0868f75149d4420293016d7>`__ 2025-04-18 ``Use unused pytest params in standard provider tests (#49422)``
51
+ `ddf371aa9c <https://github.com/apache/airflow/commit/ddf371aa9ccc3fc426135496aafacd3a732c1af4>`__ 2025-04-18 ``Move test_sensor_helper.py to standard provider tests (#49396)``
52
+ `863702f020 <https://github.com/apache/airflow/commit/863702f0205c276a38d106172ebff10afbe758c8>`__ 2025-04-17 ``Fix static check re removing unnecessary else condition (#49415)``
53
+ `96c6daa97c <https://github.com/apache/airflow/commit/96c6daa97c94b20b14ec5fa7f39de26b3f2d2559>`__ 2025-04-18 ``feat: Add fail_when_dag_is_paused param to TriggerDagRunOperator (#48214)``
54
+ `04dabf45a6 <https://github.com/apache/airflow/commit/04dabf45a60ec55fe715c41bbd8594d0390adf3b>`__ 2025-04-17 ``Update standard provider docs with correct imports (#49395)``
55
+ ================================================================================================== =========== =======================================================================================
56
+
37
57
  1.0.0
38
58
  .....
39
59
 
@@ -42,6 +62,7 @@ Latest change: 2025-04-16
42
62
  ================================================================================================== =========== ===========================================================================
43
63
  Commit Committed Subject
44
64
  ================================================================================================== =========== ===========================================================================
65
+ `ca3e4e75c6 <https://github.com/apache/airflow/commit/ca3e4e75c634afdceb23a86b7e0b0ff74614a7f1>`__ 2025-04-16 ``Prepare docs for Apr 3rd wave of providers (#49338)``
45
66
  `074294d5d7 <https://github.com/apache/airflow/commit/074294d5d7e928327927ab559988c67e6670b5ce>`__ 2025-04-16 ``Conditionally add session related imports in standard provider (#49218)``
46
67
  `cb295c351a <https://github.com/apache/airflow/commit/cb295c351a016c0a10cab07f2a628b865cff3ca3>`__ 2025-04-14 ``remove superfluous else block (#49199)``
47
68
  `0c883c5be7 <https://github.com/apache/airflow/commit/0c883c5be7c6d24768b4f54904e582b4262da4b6>`__ 2025-04-13 ``Remove dag_version as a create_dagrun argument (#49148)``
@@ -66,7 +66,7 @@ apache-airflow-providers-standard package
66
66
  Airflow Standard Provider
67
67
 
68
68
 
69
- Release: 1.0.0
69
+ Release: 1.1.0
70
70
 
71
71
  Provider package
72
72
  ----------------
@@ -20,7 +20,7 @@
20
20
  BranchDateTimeOperator
21
21
  ======================
22
22
 
23
- Use the :class:`~airflow.operators.datetime.BranchDateTimeOperator` to branch into one of two execution paths
23
+ Use the :class:`~airflow.providers.standard.operators.datetime.BranchDateTimeOperator` to branch into one of two execution paths
24
24
  depending on whether the time falls into the range given by two target arguments,
25
25
 
26
26
  This operator has two modes. First mode is to use current time (machine clock time at the
@@ -76,7 +76,7 @@ back-filled.
76
76
  BranchDayOfWeekOperator
77
77
  =======================
78
78
 
79
- Use the :class:`~airflow.operators.weekday.BranchDayOfWeekOperator` to branch your workflow based on week day value.
79
+ Use the :class:`~airflow.providers.standard.operators.weekday.BranchDayOfWeekOperator` to branch your workflow based on week day value.
80
80
 
81
81
  .. exampleinclude:: /../../../airflow-core/src/airflow/example_dags/example_branch_day_of_week_operator.py
82
82
  :language: python
@@ -0,0 +1,31 @@
1
+ .. Licensed to the Apache Software Foundation (ASF) under one
2
+ or more contributor license agreements. See the NOTICE file
3
+ distributed with this work for additional information
4
+ regarding copyright ownership. The ASF licenses this file
5
+ to you under the Apache License, Version 2.0 (the
6
+ "License"); you may not use this file except in compliance
7
+ with the License. You may obtain a copy of the License at
8
+
9
+ .. http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ .. Unless required by applicable law or agreed to in writing,
12
+ software distributed under the License is distributed on an
13
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ KIND, either express or implied. See the License for the
15
+ specific language governing permissions and limitations
16
+ under the License.
17
+
18
+
19
+
20
+ .. _howto/operator:LatestOnlyOperator:
21
+
22
+ LatestOnlyOperator
23
+ =======================
24
+
25
+ Use the :class:`~airflow.providers.standard.operators.latest_only.LatestOnlyOperator`.
26
+
27
+ .. exampleinclude:: /../../../airflow-core/src/airflow/example_dags/example_latest_only.py
28
+ :language: python
29
+ :dedent: 4
30
+ :start-after: [START howto_operator_latest_only]
31
+ :end-before: [END howto_operator_latest_only]
@@ -0,0 +1,31 @@
1
+ .. Licensed to the Apache Software Foundation (ASF) under one
2
+ or more contributor license agreements. See the NOTICE file
3
+ distributed with this work for additional information
4
+ regarding copyright ownership. The ASF licenses this file
5
+ to you under the Apache License, Version 2.0 (the
6
+ "License"); you may not use this file except in compliance
7
+ with the License. You may obtain a copy of the License at
8
+
9
+ .. http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ .. Unless required by applicable law or agreed to in writing,
12
+ software distributed under the License is distributed on an
13
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ KIND, either express or implied. See the License for the
15
+ specific language governing permissions and limitations
16
+ under the License.
17
+
18
+
19
+
20
+ .. _howto/operator:TriggerDagRunOperator:
21
+
22
+ TriggerDagRunOperator
23
+ =======================
24
+
25
+ Use the :class:`~airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunOperator` to trigger dag from another dag.
26
+
27
+ .. exampleinclude:: /../../../airflow-core/src/airflow/example_dags/example_trigger_controller_dag.py
28
+ :language: python
29
+ :dedent: 4
30
+ :start-after: [START howto_operator_trigger_dagrun]
31
+ :end-before: [END howto_operator_trigger_dagrun]
@@ -21,9 +21,10 @@ name: Standard
21
21
  description: |
22
22
  Airflow Standard Provider
23
23
  state: ready
24
- source-date-epoch: 1744792384
24
+ source-date-epoch: 1745487903
25
25
  # note that those versions are maintained by release manager - do not update them manually
26
26
  versions:
27
+ - 1.1.0
27
28
  - 1.0.0
28
29
  - 0.4.0
29
30
  - 0.3.0
@@ -42,6 +43,13 @@ integrations:
42
43
  - /docs/apache-airflow-providers-standard/operators/bash.rst
43
44
  - /docs/apache-airflow-providers-standard/operators/python.rst
44
45
  - /docs/apache-airflow-providers-standard/operators/datetime.rst
46
+ - /docs/apache-airflow-providers-standard/operators/trigger_dag_run.rst
47
+ - /docs/apache-airflow-providers-standard/operators/latest_only.rst
48
+ - /docs/apache-airflow-providers-standard/sensors/bash.rst
49
+ - /docs/apache-airflow-providers-standard/sensors/python.rst
50
+ - /docs/apache-airflow-providers-standard/sensors/datetime.rst
51
+ - /docs/apache-airflow-providers-standard/sensors/file.rst
52
+ - /docs/apache-airflow-providers-standard/sensors/external_task_sensor.rst
45
53
 
46
54
  operators:
47
55
  - integration-name: Standard
@@ -80,6 +88,10 @@ triggers:
80
88
  - airflow.providers.standard.triggers.file
81
89
  - airflow.providers.standard.triggers.temporal
82
90
 
91
+ extra-links:
92
+ - airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunLink
93
+ - airflow.providers.standard.sensors.external_task.ExternalDagLink
94
+
83
95
  config:
84
96
  standard:
85
97
  description: Options for the standard provider operators.
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-standard"
28
- version = "1.0.0"
28
+ version = "1.1.0.rc1"
29
29
  description = "Provider package apache-airflow-providers-standard for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -57,7 +57,7 @@ requires-python = "~=3.9"
57
57
  # Make sure to run ``breeze static-checks --type update-providers-dependencies --all-files``
58
58
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
59
59
  dependencies = [
60
- "apache-airflow>=2.9.0",
60
+ "apache-airflow>=2.9.0rc0",
61
61
  ]
62
62
 
63
63
  [dependency-groups]
@@ -95,8 +95,8 @@ apache-airflow-providers-common-sql = {workspace = true}
95
95
  apache-airflow-providers-standard = {workspace = true}
96
96
 
97
97
  [project.urls]
98
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0"
99
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/changelog.html"
98
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0"
99
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0/changelog.html"
100
100
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
101
101
  "Source Code" = "https://github.com/apache/airflow"
102
102
  "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.0.0"
32
+ __version__ = "1.1.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.9.0"
@@ -35,6 +35,13 @@ def get_provider_info():
35
35
  "/docs/apache-airflow-providers-standard/operators/bash.rst",
36
36
  "/docs/apache-airflow-providers-standard/operators/python.rst",
37
37
  "/docs/apache-airflow-providers-standard/operators/datetime.rst",
38
+ "/docs/apache-airflow-providers-standard/operators/trigger_dag_run.rst",
39
+ "/docs/apache-airflow-providers-standard/operators/latest_only.rst",
40
+ "/docs/apache-airflow-providers-standard/sensors/bash.rst",
41
+ "/docs/apache-airflow-providers-standard/sensors/python.rst",
42
+ "/docs/apache-airflow-providers-standard/sensors/datetime.rst",
43
+ "/docs/apache-airflow-providers-standard/sensors/file.rst",
44
+ "/docs/apache-airflow-providers-standard/sensors/external_task_sensor.rst",
38
45
  ],
39
46
  }
40
47
  ],
@@ -89,6 +96,10 @@ def get_provider_info():
89
96
  ],
90
97
  }
91
98
  ],
99
+ "extra-links": [
100
+ "airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunLink",
101
+ "airflow.providers.standard.sensors.external_task.ExternalDagLink",
102
+ ],
92
103
  "config": {
93
104
  "standard": {
94
105
  "description": "Options for the standard provider operators.",
@@ -20,6 +20,7 @@
20
20
  from __future__ import annotations
21
21
 
22
22
  from collections.abc import Iterable
23
+ from datetime import timedelta
23
24
  from typing import TYPE_CHECKING
24
25
 
25
26
  import pendulum
@@ -29,8 +30,9 @@ from airflow.providers.standard.version_compat import AIRFLOW_V_3_0_PLUS
29
30
  from airflow.utils.types import DagRunType
30
31
 
31
32
  if TYPE_CHECKING:
32
- from airflow.models import DAG, DagRun
33
- from airflow.timetables.base import DagRunInfo
33
+ from pendulum.datetime import DateTime
34
+
35
+ from airflow.models import DagRun
34
36
 
35
37
  try:
36
38
  from airflow.sdk.definitions.context import Context
@@ -62,16 +64,16 @@ class LatestOnlyOperator(BaseBranchOperator):
62
64
  dag_run: DagRun = context["dag_run"] # type: ignore[assignment]
63
65
  if dag_run.run_type == DagRunType.MANUAL:
64
66
  self.log.info("Manually triggered DAG_Run: allowing execution to proceed.")
65
- return list(context["task"].get_direct_relative_ids(upstream=False))
67
+ return list(self.get_direct_relative_ids(upstream=False))
66
68
 
67
- next_info = self._get_next_run_info(context, dag_run)
68
- now = pendulum.now("UTC")
69
+ dates = self._get_compare_dates(dag_run)
69
70
 
70
- if next_info is None:
71
+ if dates is None:
71
72
  self.log.info("Last scheduled execution: allowing execution to proceed.")
72
- return list(context["task"].get_direct_relative_ids(upstream=False))
73
+ return list(self.get_direct_relative_ids(upstream=False))
73
74
 
74
- left_window, right_window = next_info.data_interval
75
+ now = pendulum.now("UTC")
76
+ left_window, right_window = dates
75
77
  self.log.info(
76
78
  "Checking latest only with left_window: %s right_window: %s now: %s",
77
79
  left_window,
@@ -79,37 +81,47 @@ class LatestOnlyOperator(BaseBranchOperator):
79
81
  now,
80
82
  )
81
83
 
82
- if left_window == right_window:
83
- self.log.info(
84
- "Zero-length interval [%s, %s) from timetable (%s); treating current run as latest.",
85
- left_window,
86
- right_window,
87
- self.dag.timetable.__class__,
88
- )
89
- return list(context["task"].get_direct_relative_ids(upstream=False))
90
-
91
84
  if not left_window < now <= right_window:
92
85
  self.log.info("Not latest execution, skipping downstream.")
93
86
  # we return an empty list, thus the parent BaseBranchOperator
94
87
  # won't exclude any downstream tasks from skipping.
95
88
  return []
96
- self.log.info("Latest, allowing execution to proceed.")
97
- return list(context["task"].get_direct_relative_ids(upstream=False))
98
89
 
99
- def _get_next_run_info(self, context: Context, dag_run: DagRun) -> DagRunInfo | None:
100
- dag: DAG = context["dag"] # type: ignore[assignment]
90
+ self.log.info("Latest, allowing execution to proceed.")
91
+ return list(self.get_direct_relative_ids(upstream=False))
101
92
 
93
+ def _get_compare_dates(self, dag_run: DagRun) -> tuple[DateTime, DateTime] | None:
94
+ dagrun_date: DateTime
102
95
  if AIRFLOW_V_3_0_PLUS:
103
- from airflow.timetables.base import DataInterval, TimeRestriction
96
+ dagrun_date = dag_run.logical_date or dag_run.run_after
97
+ else:
98
+ dagrun_date = dag_run.logical_date
104
99
 
105
- time_restriction = TimeRestriction(earliest=None, latest=None, catchup=True)
106
- current_interval = DataInterval(start=dag_run.data_interval_start, end=dag_run.data_interval_end)
100
+ from airflow.timetables.base import DataInterval, TimeRestriction
107
101
 
108
- next_info = dag.timetable.next_dagrun_info(
109
- last_automated_data_interval=current_interval,
110
- restriction=time_restriction,
111
- )
102
+ current_interval = DataInterval(
103
+ start=dag_run.data_interval_start or dagrun_date,
104
+ end=dag_run.data_interval_end or dagrun_date,
105
+ )
112
106
 
107
+ time_restriction = TimeRestriction(
108
+ earliest=None, latest=current_interval.end - timedelta(microseconds=1), catchup=True
109
+ )
110
+ if prev_info := self.dag.timetable.next_dagrun_info(
111
+ last_automated_data_interval=current_interval,
112
+ restriction=time_restriction,
113
+ ):
114
+ left = prev_info.data_interval.end
113
115
  else:
114
- next_info = dag.next_dagrun_info(dag.get_run_data_interval(dag_run), restricted=False)
115
- return next_info
116
+ left = current_interval.start
117
+
118
+ time_restriction = TimeRestriction(earliest=current_interval.end, latest=None, catchup=True)
119
+ next_info = self.dag.timetable.next_dagrun_info(
120
+ last_automated_data_interval=current_interval,
121
+ restriction=time_restriction,
122
+ )
123
+
124
+ if not next_info:
125
+ return None
126
+
127
+ return (left, next_info.data_interval.end)
@@ -67,6 +67,17 @@ else:
67
67
  from airflow.models.baseoperatorlink import BaseOperatorLink # type: ignore[no-redef]
68
68
 
69
69
 
70
+ class DagIsPaused(AirflowException):
71
+ """Raise when a dag is paused and something tries to run it."""
72
+
73
+ def __init__(self, dag_id: str) -> None:
74
+ super().__init__(dag_id)
75
+ self.dag_id = dag_id
76
+
77
+ def __str__(self) -> str:
78
+ return f"Dag {self.dag_id} is paused"
79
+
80
+
70
81
  class TriggerDagRunLink(BaseOperatorLink):
71
82
  """
72
83
  Operator link for TriggerDagRunOperator.
@@ -129,6 +140,7 @@ class TriggerDagRunOperator(BaseOperator):
129
140
  Default is ``[DagRunState.FAILED]``.
130
141
  :param skip_when_already_exists: Set to true to mark the task as SKIPPED if a DAG run of the triggered
131
142
  DAG for the same logical date already exists.
143
+ :param fail_when_dag_is_paused: If the dag to trigger is paused, DagIsPaused will be raised.
132
144
  :param deferrable: If waiting for completion, whether or not to defer the task until done,
133
145
  default is ``False``.
134
146
  """
@@ -158,6 +170,7 @@ class TriggerDagRunOperator(BaseOperator):
158
170
  allowed_states: list[str | DagRunState] | None = None,
159
171
  failed_states: list[str | DagRunState] | None = None,
160
172
  skip_when_already_exists: bool = False,
173
+ fail_when_dag_is_paused: bool = False,
161
174
  deferrable: bool = conf.getboolean("operators", "default_deferrable", fallback=False),
162
175
  **kwargs,
163
176
  ) -> None:
@@ -177,6 +190,7 @@ class TriggerDagRunOperator(BaseOperator):
177
190
  else:
178
191
  self.failed_states = [DagRunState.FAILED]
179
192
  self.skip_when_already_exists = skip_when_already_exists
193
+ self.fail_when_dag_is_paused = fail_when_dag_is_paused
180
194
  self._defer = deferrable
181
195
  self.logical_date = logical_date
182
196
  if logical_date is NOTSET:
@@ -214,6 +228,13 @@ class TriggerDagRunOperator(BaseOperator):
214
228
  else:
215
229
  run_id = DagRun.generate_run_id(DagRunType.MANUAL, parsed_logical_date or timezone.utcnow()) # type: ignore[misc,call-arg]
216
230
 
231
+ if self.fail_when_dag_is_paused:
232
+ dag_model = DagModel.get_current(self.trigger_dag_id)
233
+ if dag_model.is_paused:
234
+ if AIRFLOW_V_3_0_PLUS:
235
+ raise DagIsPaused(dag_id=self.trigger_dag_id)
236
+ raise AirflowException(f"Dag {self.trigger_dag_id} is paused")
237
+
217
238
  if AIRFLOW_V_3_0_PLUS:
218
239
  self._trigger_dag_af_3(context=context, run_id=run_id, parsed_logical_date=parsed_logical_date)
219
240
  else:
@@ -232,7 +232,7 @@ class TestPythonVirtualenvDecorator:
232
232
  ],
233
233
  )
234
234
  def test_fail(self, serializer, dag_maker):
235
- @task.virtualenv()
235
+ @task.virtualenv(serializer=serializer)
236
236
  def f():
237
237
  raise Exception
238
238
 
@@ -35,7 +35,7 @@ pytestmark = pytest.mark.db_test
35
35
  reason="Decorators were part of core not providers, so this test doesnt make sense for < AF3.",
36
36
  )
37
37
  class TestSensorDecorator:
38
- def test_sensor_fails_on_none_python_callable(self, dag_maker):
38
+ def test_sensor_fails_on_none_python_callable(self):
39
39
  not_callable = {}
40
40
  with pytest.raises(TypeError):
41
41
  task.sensor(not_callable)
@@ -92,6 +92,7 @@ class TestSubprocessHook:
92
92
  hook = SubprocessHook()
93
93
  hook.run_command(command=["bash", "-c", 'echo "stdout"'])
94
94
 
95
+ mock_temporary_directory.assert_called_once()
95
96
  mock_popen.assert_called_once_with(
96
97
  ["bash", "-c", 'echo "stdout"'],
97
98
  cwd="/tmp/airflowtmpcatcat",
@@ -113,4 +114,5 @@ class TestSubprocessHook:
113
114
  hook = SubprocessHook()
114
115
  hook.sub_process = MagicMock()
115
116
  hook.send_sigterm()
117
+ mock_getpgid.assert_called_once()
116
118
  mock_killpg.assert_called_with(123, signal.SIGTERM)