apache-airflow-providers-standard 0.4.0__tar.gz → 1.0.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 (113) hide show
  1. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/PKG-INFO +7 -7
  2. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/README.rst +3 -3
  3. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/changelog.rst +22 -0
  4. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/commits.rst +16 -0
  5. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/index.rst +1 -1
  6. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/provider.yaml +2 -1
  7. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/pyproject.toml +4 -4
  8. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/__init__.py +1 -1
  9. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/bash.py +1 -1
  10. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/latest_only.py +2 -3
  11. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/python.py +4 -7
  12. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/trigger_dagrun.py +32 -31
  13. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/bash.py +4 -6
  14. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/external_task.py +45 -48
  15. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/python.py +1 -2
  16. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/weekday.py +1 -2
  17. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/triggers/external_task.py +39 -27
  18. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/triggers/temporal.py +2 -3
  19. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/python_virtualenv.py +1 -1
  20. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/sensor_helper.py +12 -1
  21. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_external_python.py +1 -2
  22. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_python_virtualenv.py +1 -2
  23. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_python.py +5 -4
  24. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_external_task_sensor.py +4 -7
  25. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/triggers/test_external_task.py +59 -10
  26. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/conf.py +0 -0
  27. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/configurations-ref.rst +0 -0
  28. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  29. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/operators/bash.rst +0 -0
  30. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/operators/datetime.rst +0 -0
  31. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/operators/index.rst +0 -0
  32. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/operators/python.rst +0 -0
  33. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/security.rst +0 -0
  34. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/bash.rst +0 -0
  35. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/datetime.rst +0 -0
  36. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/external_task_sensor.rst +0 -0
  37. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/file.rst +0 -0
  38. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/index.rst +0 -0
  39. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/python.rst +0 -0
  40. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/__init__.py +0 -0
  41. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/__init__.py +0 -0
  42. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/LICENSE +0 -0
  43. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/__init__.py +0 -0
  44. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/bash.py +0 -0
  45. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/branch_external_python.py +0 -0
  46. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/branch_python.py +0 -0
  47. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/branch_virtualenv.py +0 -0
  48. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/external_python.py +0 -0
  49. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/python.py +0 -0
  50. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/python_virtualenv.py +0 -0
  51. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/sensor.py +0 -0
  52. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/short_circuit.py +0 -0
  53. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/get_provider_info.py +0 -0
  54. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/hooks/__init__.py +0 -0
  55. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/hooks/filesystem.py +0 -0
  56. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/hooks/package_index.py +0 -0
  57. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/hooks/subprocess.py +0 -0
  58. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/__init__.py +0 -0
  59. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/branch.py +0 -0
  60. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/datetime.py +0 -0
  61. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/empty.py +0 -0
  62. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/smooth.py +0 -0
  63. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/weekday.py +0 -0
  64. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/__init__.py +0 -0
  65. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/date_time.py +0 -0
  66. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/filesystem.py +0 -0
  67. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/time.py +0 -0
  68. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/time_delta.py +0 -0
  69. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/triggers/__init__.py +0 -0
  70. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/triggers/file.py +0 -0
  71. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/__init__.py +0 -0
  72. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/python_virtualenv_script.jinja2 +0 -0
  73. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/skipmixin.py +0 -0
  74. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/weekday.py +0 -0
  75. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/version_compat.py +0 -0
  76. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/conftest.py +0 -0
  77. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/__init__.py +0 -0
  78. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/__init__.py +0 -0
  79. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/__init__.py +0 -0
  80. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_bash.py +0 -0
  81. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_branch_external_python.py +0 -0
  82. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_branch_python.py +0 -0
  83. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_branch_virtualenv.py +0 -0
  84. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_python.py +0 -0
  85. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_sensor.py +0 -0
  86. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_short_circuit.py +0 -0
  87. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/hooks/__init__.py +0 -0
  88. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/hooks/test_filesystem.py +0 -0
  89. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/hooks/test_package_index.py +0 -0
  90. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/hooks/test_subprocess.py +0 -0
  91. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/__init__.py +0 -0
  92. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_bash.py +0 -0
  93. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_branch_operator.py +0 -0
  94. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_datetime.py +0 -0
  95. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_generic_transfer.py +0 -0
  96. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_latest_only_operator.py +0 -0
  97. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_smooth.py +0 -0
  98. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_trigger_dagrun.py +0 -0
  99. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_weekday.py +0 -0
  100. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/__init__.py +0 -0
  101. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_bash.py +0 -0
  102. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_date_time.py +0 -0
  103. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_python.py +0 -0
  104. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_time.py +0 -0
  105. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_time_delta.py +0 -0
  106. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_weekday.py +0 -0
  107. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/triggers/__init__.py +0 -0
  108. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/triggers/test_file.py +0 -0
  109. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/triggers/test_temporal.py +0 -0
  110. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/utils/__init__.py +0 -0
  111. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/utils/test_python_virtualenv.py +0 -0
  112. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/utils/test_skipmixin.py +0 -0
  113. {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.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: 0.4.0
3
+ Version: 1.0.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/0.4.0/changelog.html
26
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-standard/0.4.0
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
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: ``0.4.0``
57
+ Release: ``1.0.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/0.4.0/>`_.
70
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.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/0.4.0/changelog.html>`_.
91
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/changelog.html>`_.
92
92
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-standard``
25
25
 
26
- Release: ``0.4.0``
26
+ Release: ``1.0.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/0.4.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.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/0.4.0/changelog.html>`_.
60
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/changelog.html>`_.
@@ -35,6 +35,28 @@
35
35
  Changelog
36
36
  ---------
37
37
 
38
+ 1.0.0
39
+ .....
40
+
41
+ .. note::
42
+ Stable release of the provider.
43
+
44
+ Bug Fixes
45
+ ~~~~~~~~~
46
+
47
+ * ``Remove dag_version as a create_dagrun argument (#49148)``
48
+ * ``Fix ExternalTaskSensor task_group_id check condition (#49027)``
49
+ * ``Ensure that TI.id is unique per try. (#48749)``
50
+ * ``Conditionally add session related imports in standard provider (#49218)``
51
+
52
+ Misc
53
+ ~~~~
54
+
55
+ * ``remove superfluous else block (#49199)``
56
+
57
+ .. Below changes are excluded from the changelog. Move them to
58
+ appropriate section above if needed. Do not delete the lines(!):
59
+
38
60
  0.4.0
39
61
  .....
40
62
 
@@ -34,6 +34,21 @@ For high-level changelog, see :doc:`package information including changelog <ind
34
34
 
35
35
 
36
36
 
37
+ 1.0.0
38
+ .....
39
+
40
+ Latest change: 2025-04-16
41
+
42
+ ================================================================================================== =========== ===========================================================================
43
+ Commit Committed Subject
44
+ ================================================================================================== =========== ===========================================================================
45
+ `074294d5d7 <https://github.com/apache/airflow/commit/074294d5d7e928327927ab559988c67e6670b5ce>`__ 2025-04-16 ``Conditionally add session related imports in standard provider (#49218)``
46
+ `cb295c351a <https://github.com/apache/airflow/commit/cb295c351a016c0a10cab07f2a628b865cff3ca3>`__ 2025-04-14 ``remove superfluous else block (#49199)``
47
+ `0c883c5be7 <https://github.com/apache/airflow/commit/0c883c5be7c6d24768b4f54904e582b4262da4b6>`__ 2025-04-13 ``Remove dag_version as a create_dagrun argument (#49148)``
48
+ `ef80791fba <https://github.com/apache/airflow/commit/ef80791fbae6a48059cf2870b7e175a61cf7c361>`__ 2025-04-11 ``Fix ExternalTaskSensor task_group_id check condition (#49027)``
49
+ `d112830cd9 <https://github.com/apache/airflow/commit/d112830cd935375ced2bee186ff55f9b3887550b>`__ 2025-04-10 ``Ensure that TI.id is unique per try. (#48749)``
50
+ ================================================================================================== =========== ===========================================================================
51
+
37
52
  0.4.0
38
53
  .....
39
54
 
@@ -42,6 +57,7 @@ Latest change: 2025-04-10
42
57
  ================================================================================================== =========== ==================================================================================
43
58
  Commit Committed Subject
44
59
  ================================================================================================== =========== ==================================================================================
60
+ `4a8567b20b <https://github.com/apache/airflow/commit/4a8567b20bdd6555cbdc936d6674bf4fa390b0d5>`__ 2025-04-10 ``Prepare docs for Apr 2nd wave of providers (#49051)``
45
61
  `b58f027cbf <https://github.com/apache/airflow/commit/b58f027cbf39e5eea982a5560b22024e2de328a8>`__ 2025-04-10 ``Fix default base value (#49013)``
46
62
  `636224df61 <https://github.com/apache/airflow/commit/636224df611109e1cb008e83b094899ea2d36322>`__ 2025-04-09 ``Fix WorkflowTrigger to work with TaskSDK (#48819)``
47
63
  `57cda9ec70 <https://github.com/apache/airflow/commit/57cda9ec70148ee23a667b423b9f9308a9db2341>`__ 2025-04-09 ``Make default as time.now() for TriggerDagRunOperator (#48969)``
@@ -66,7 +66,7 @@ apache-airflow-providers-standard package
66
66
  Airflow Standard Provider
67
67
 
68
68
 
69
- Release: 0.4.0
69
+ Release: 1.0.0
70
70
 
71
71
  Provider package
72
72
  ----------------
@@ -21,9 +21,10 @@ name: Standard
21
21
  description: |
22
22
  Airflow Standard Provider
23
23
  state: ready
24
- source-date-epoch: 1744282657
24
+ source-date-epoch: 1744792384
25
25
  # note that those versions are maintained by release manager - do not update them manually
26
26
  versions:
27
+ - 1.0.0
27
28
  - 0.4.0
28
29
  - 0.3.0
29
30
  - 0.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 = "0.4.0"
28
+ version = "1.0.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/0.4.0"
99
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/0.4.0/changelog.html"
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"
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__ = "0.4.0"
32
+ __version__ = "1.0.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.9.0"
@@ -229,7 +229,7 @@ class BashOperator(BaseOperator):
229
229
 
230
230
  if result.exit_code in self.skip_on_exit_code:
231
231
  raise AirflowSkipException(f"Bash command returned exit code {result.exit_code}. Skipping.")
232
- elif result.exit_code != 0:
232
+ if result.exit_code != 0:
233
233
  raise AirflowException(
234
234
  f"Bash command failed. The command returned a non-zero exit code {result.exit_code}."
235
235
  )
@@ -93,9 +93,8 @@ class LatestOnlyOperator(BaseBranchOperator):
93
93
  # we return an empty list, thus the parent BaseBranchOperator
94
94
  # won't exclude any downstream tasks from skipping.
95
95
  return []
96
- else:
97
- self.log.info("Latest, allowing execution to proceed.")
98
- return list(context["task"].get_direct_relative_ids(upstream=False))
96
+ self.log.info("Latest, allowing execution to proceed.")
97
+ return list(context["task"].get_direct_relative_ids(upstream=False))
99
98
 
100
99
  def _get_next_run_info(self, context: Context, dag_run: DagRun) -> DagRunInfo | None:
101
100
  dag: DAG = context["dag"] # type: ignore[assignment]
@@ -573,13 +573,12 @@ class _BasePythonVirtualenvOperator(PythonOperator, metaclass=ABCMeta):
573
573
  except subprocess.CalledProcessError as e:
574
574
  if e.returncode in self.skip_on_exit_code:
575
575
  raise AirflowSkipException(f"Process exited with code {e.returncode}. Skipping.")
576
- elif termination_log_path.exists() and termination_log_path.stat().st_size > 0:
576
+ if termination_log_path.exists() and termination_log_path.stat().st_size > 0:
577
577
  error_msg = f"Process returned non-zero exit status {e.returncode}.\n"
578
578
  with open(termination_log_path) as file:
579
579
  error_msg += file.read()
580
580
  raise AirflowException(error_msg) from None
581
- else:
582
- raise
581
+ raise
583
582
 
584
583
  if 0 in self.skip_on_exit_code:
585
584
  raise AirflowSkipException("Process exited with code 0. Skipping.")
@@ -590,8 +589,7 @@ class _BasePythonVirtualenvOperator(PythonOperator, metaclass=ABCMeta):
590
589
  keyword_params = KeywordParameters.determine(self.python_callable, self.op_args, context)
591
590
  if AIRFLOW_V_3_0_PLUS:
592
591
  return keyword_params.unpacking()
593
- else:
594
- return keyword_params.serializing() # type: ignore[attr-defined]
592
+ return keyword_params.serializing() # type: ignore[attr-defined]
595
593
 
596
594
 
597
595
  class PythonVirtualenvOperator(_BasePythonVirtualenvOperator):
@@ -1130,8 +1128,7 @@ def get_current_context() -> Mapping[str, Any]:
1130
1128
  from airflow.sdk import get_current_context
1131
1129
 
1132
1130
  return get_current_context()
1133
- else:
1134
- return _get_current_context()
1131
+ return _get_current_context()
1135
1132
 
1136
1133
 
1137
1134
  def _get_current_context() -> Mapping[str, Any]:
@@ -41,7 +41,6 @@ from airflow.models.dagrun import DagRun
41
41
  from airflow.providers.standard.triggers.external_task import DagStateTrigger
42
42
  from airflow.providers.standard.version_compat import AIRFLOW_V_3_0_PLUS
43
43
  from airflow.utils import timezone
44
- from airflow.utils.session import NEW_SESSION, provide_session
45
44
  from airflow.utils.state import DagRunState
46
45
  from airflow.utils.types import NOTSET, ArgNotSet, DagRunType
47
46
 
@@ -96,11 +95,10 @@ class TriggerDagRunLink(BaseOperatorLink):
96
95
  from airflow.utils.helpers import build_airflow_dagrun_url
97
96
 
98
97
  return build_airflow_dagrun_url(dag_id=trigger_dag_id, run_id=triggered_dag_run_id)
99
- else:
100
- from airflow.utils.helpers import build_airflow_url_with_query # type:ignore[attr-defined]
98
+ from airflow.utils.helpers import build_airflow_url_with_query # type:ignore[attr-defined]
101
99
 
102
- query = {"dag_id": trigger_dag_id, "dag_run_id": triggered_dag_run_id}
103
- return build_airflow_url_with_query(query)
100
+ query = {"dag_id": trigger_dag_id, "dag_run_id": triggered_dag_run_id}
101
+ return build_airflow_url_with_query(query)
104
102
 
105
103
 
106
104
  class TriggerDagRunOperator(BaseOperator):
@@ -337,33 +335,36 @@ class TriggerDagRunOperator(BaseOperator):
337
335
  f" {failed_run_id_conditions}"
338
336
  )
339
337
 
340
- @provide_session
341
- def _trigger_dag_run_af_2_execute_complete(
342
- self, event: tuple[str, dict[str, Any]], session: Session = NEW_SESSION
343
- ):
344
- # This logical_date is parsed from the return trigger event
345
- provided_logical_date = event[1]["execution_dates"][0]
346
- try:
347
- # Note: here execution fails on database isolation mode. Needs structural changes for AIP-72
348
- dag_run = session.execute(
349
- select(DagRun).where(
350
- DagRun.dag_id == self.trigger_dag_id, DagRun.execution_date == provided_logical_date
338
+ if not AIRFLOW_V_3_0_PLUS:
339
+ from airflow.utils.session import NEW_SESSION, provide_session # type: ignore[misc]
340
+
341
+ @provide_session
342
+ def _trigger_dag_run_af_2_execute_complete(
343
+ self, event: tuple[str, dict[str, Any]], session: Session = NEW_SESSION
344
+ ):
345
+ # This logical_date is parsed from the return trigger event
346
+ provided_logical_date = event[1]["execution_dates"][0]
347
+ try:
348
+ # Note: here execution fails on database isolation mode. Needs structural changes for AIP-72
349
+ dag_run = session.execute(
350
+ select(DagRun).where(
351
+ DagRun.dag_id == self.trigger_dag_id, DagRun.execution_date == provided_logical_date
352
+ )
353
+ ).scalar_one()
354
+ except NoResultFound:
355
+ raise AirflowException(
356
+ f"No DAG run found for DAG {self.trigger_dag_id} and logical date {self.logical_date}"
351
357
  )
352
- ).scalar_one()
353
- except NoResultFound:
354
- raise AirflowException(
355
- f"No DAG run found for DAG {self.trigger_dag_id} and logical date {self.logical_date}"
356
- )
357
358
 
358
- state = dag_run.state
359
+ state = dag_run.state
359
360
 
360
- if state in self.failed_states:
361
- raise AirflowException(f"{self.trigger_dag_id} failed with failed state {state}")
362
- if state in self.allowed_states:
363
- self.log.info("%s finished with allowed state %s", self.trigger_dag_id, state)
364
- return
361
+ if state in self.failed_states:
362
+ raise AirflowException(f"{self.trigger_dag_id} failed with failed state {state}")
363
+ if state in self.allowed_states:
364
+ self.log.info("%s finished with allowed state %s", self.trigger_dag_id, state)
365
+ return
365
366
 
366
- raise AirflowException(
367
- f"{self.trigger_dag_id} return {state} which is not in {self.failed_states}"
368
- f" or {self.allowed_states}"
369
- )
367
+ raise AirflowException(
368
+ f"{self.trigger_dag_id} return {state} which is not in {self.failed_states}"
369
+ f" or {self.allowed_states}"
370
+ )
@@ -107,14 +107,12 @@ class BashSensor(BaseSensorOperator):
107
107
  return True
108
108
 
109
109
  # we have a retry exit code, sensor retries if return code matches, otherwise error
110
- elif self.retry_exit_code is not None:
110
+ if self.retry_exit_code is not None:
111
111
  if resp.returncode == self.retry_exit_code:
112
112
  self.log.info("Return code matches retry code, will retry later")
113
113
  return False
114
- else:
115
- raise AirflowFailException(f"Command exited with return code {resp.returncode}")
114
+ raise AirflowFailException(f"Command exited with return code {resp.returncode}")
116
115
 
117
116
  # backwards compatibility: sensor retries no matter the error code
118
- else:
119
- self.log.info("Non-zero return code and no retry code set, will retry later")
120
- return False
117
+ self.log.info("Non-zero return code and no retry code set, will retry later")
118
+ return False
@@ -32,13 +32,13 @@ from airflow.providers.standard.triggers.external_task import WorkflowTrigger
32
32
  from airflow.providers.standard.utils.sensor_helper import _get_count, _get_external_task_group_task_ids
33
33
  from airflow.providers.standard.version_compat import AIRFLOW_V_3_0_PLUS
34
34
  from airflow.utils.file import correct_maybe_zipped
35
- from airflow.utils.session import NEW_SESSION, provide_session
36
35
  from airflow.utils.state import State, TaskInstanceState
37
36
 
38
37
  if AIRFLOW_V_3_0_PLUS:
39
38
  from airflow.sdk.bases.sensor import BaseSensorOperator
40
39
  else:
41
40
  from airflow.sensors.base import BaseSensorOperator
41
+ from airflow.utils.session import NEW_SESSION, provide_session
42
42
 
43
43
  if TYPE_CHECKING:
44
44
  from sqlalchemy.orm import Session
@@ -85,11 +85,10 @@ class ExternalDagLink(BaseOperatorLink):
85
85
  from airflow.utils.helpers import build_airflow_dagrun_url
86
86
 
87
87
  return build_airflow_dagrun_url(dag_id=external_dag_id, run_id=ti_key.run_id)
88
- else:
89
- from airflow.utils.helpers import build_airflow_url_with_query # type:ignore[attr-defined]
88
+ from airflow.utils.helpers import build_airflow_url_with_query # type:ignore[attr-defined]
90
89
 
91
- query = {"dag_id": external_dag_id, "run_id": ti_key.run_id}
92
- return build_airflow_url_with_query(query)
90
+ query = {"dag_id": external_dag_id, "run_id": ti_key.run_id}
91
+ return build_airflow_url_with_query(query)
93
92
 
94
93
 
95
94
  class ExternalTaskSensor(BaseSensorOperator):
@@ -299,10 +298,11 @@ class ExternalTaskSensor(BaseSensorOperator):
299
298
 
300
299
  if AIRFLOW_V_3_0_PLUS:
301
300
  return self._poke_af3(context, dttm_filter)
302
- else:
303
- return self._poke_af2(dttm_filter)
301
+ return self._poke_af2(dttm_filter)
304
302
 
305
303
  def _poke_af3(self, context: Context, dttm_filter: list[datetime.datetime]) -> bool:
304
+ from airflow.providers.standard.utils.sensor_helper import _get_count_by_matched_states
305
+
306
306
  self._has_checked_existence = True
307
307
  ti = context["ti"]
308
308
 
@@ -314,19 +314,18 @@ class ExternalTaskSensor(BaseSensorOperator):
314
314
  logical_dates=dttm_filter,
315
315
  states=states,
316
316
  )
317
- elif self.external_task_group_id:
318
- return ti.get_ti_count(
317
+ if self.external_task_group_id:
318
+ run_id_task_state_map = ti.get_task_states(
319
319
  dag_id=self.external_dag_id,
320
320
  task_group_id=self.external_task_group_id,
321
321
  logical_dates=dttm_filter,
322
- states=states,
323
- )
324
- else:
325
- return ti.get_dr_count(
326
- dag_id=self.external_dag_id,
327
- logical_dates=dttm_filter,
328
- states=states,
329
322
  )
323
+ return _get_count_by_matched_states(run_id_task_state_map, states)
324
+ return ti.get_dr_count(
325
+ dag_id=self.external_dag_id,
326
+ logical_dates=dttm_filter,
327
+ states=states,
328
+ )
330
329
 
331
330
  if self.failed_states:
332
331
  count = _get_count(self.failed_states)
@@ -346,8 +345,7 @@ class ExternalTaskSensor(BaseSensorOperator):
346
345
  """Calculate the normalized count based on the type of check."""
347
346
  if self.external_task_ids:
348
347
  return count / len(self.external_task_ids)
349
- else:
350
- return count
348
+ return count
351
349
 
352
350
  def _handle_failed_states(self, count_failed: float | int) -> None:
353
351
  """Handle failed states and raise appropriate exceptions."""
@@ -362,7 +360,7 @@ class ExternalTaskSensor(BaseSensorOperator):
362
360
  f"Some of the external tasks {self.external_task_ids} "
363
361
  f"in DAG {self.external_dag_id} failed."
364
362
  )
365
- elif self.external_task_group_id:
363
+ if self.external_task_group_id:
366
364
  if self.soft_fail:
367
365
  raise AirflowSkipException(
368
366
  f"The external task_group '{self.external_task_group_id}' "
@@ -372,12 +370,11 @@ class ExternalTaskSensor(BaseSensorOperator):
372
370
  f"The external task_group '{self.external_task_group_id}' "
373
371
  f"in DAG '{self.external_dag_id}' failed."
374
372
  )
375
- else:
376
- if self.soft_fail:
377
- raise AirflowSkipException(
378
- f"The external DAG {self.external_dag_id} failed. Skipping due to soft_fail."
379
- )
380
- raise AirflowException(f"The external DAG {self.external_dag_id} failed.")
373
+ if self.soft_fail:
374
+ raise AirflowSkipException(
375
+ f"The external DAG {self.external_dag_id} failed. Skipping due to soft_fail."
376
+ )
377
+ raise AirflowException(f"The external DAG {self.external_dag_id} failed.")
381
378
 
382
379
  def _handle_skipped_states(self, count_skipped: float | int) -> None:
383
380
  """Handle skipped states and raise appropriate exceptions."""
@@ -387,32 +384,33 @@ class ExternalTaskSensor(BaseSensorOperator):
387
384
  f"Some of the external tasks {self.external_task_ids} "
388
385
  f"in DAG {self.external_dag_id} reached a state in our states-to-skip-on list. Skipping."
389
386
  )
390
- elif self.external_task_group_id:
387
+ if self.external_task_group_id:
391
388
  raise AirflowSkipException(
392
389
  f"The external task_group '{self.external_task_group_id}' "
393
390
  f"in DAG {self.external_dag_id} reached a state in our states-to-skip-on list. Skipping."
394
391
  )
395
- else:
396
- raise AirflowSkipException(
397
- f"The external DAG {self.external_dag_id} reached a state in our states-to-skip-on list. "
398
- "Skipping."
399
- )
392
+ raise AirflowSkipException(
393
+ f"The external DAG {self.external_dag_id} reached a state in our states-to-skip-on list. "
394
+ "Skipping."
395
+ )
400
396
 
401
- @provide_session
402
- def _poke_af2(self, dttm_filter: list[datetime.datetime], session: Session = NEW_SESSION) -> bool:
403
- if self.check_existence and not self._has_checked_existence:
404
- self._check_for_existence(session=session)
397
+ if not AIRFLOW_V_3_0_PLUS:
405
398
 
406
- if self.failed_states:
407
- count_failed = self.get_count(dttm_filter, session, self.failed_states)
408
- self._handle_failed_states(count_failed)
399
+ @provide_session
400
+ def _poke_af2(self, dttm_filter: list[datetime.datetime], session: Session = NEW_SESSION) -> bool:
401
+ if self.check_existence and not self._has_checked_existence:
402
+ self._check_for_existence(session=session)
409
403
 
410
- if self.skipped_states:
411
- count_skipped = self.get_count(dttm_filter, session, self.skipped_states)
412
- self._handle_skipped_states(count_skipped)
404
+ if self.failed_states:
405
+ count_failed = self.get_count(dttm_filter, session, self.failed_states)
406
+ self._handle_failed_states(count_failed)
413
407
 
414
- count_allowed = self.get_count(dttm_filter, session, self.allowed_states)
415
- return count_allowed == len(dttm_filter)
408
+ if self.skipped_states:
409
+ count_skipped = self.get_count(dttm_filter, session, self.skipped_states)
410
+ self._handle_skipped_states(count_skipped)
411
+
412
+ count_allowed = self.get_count(dttm_filter, session, self.allowed_states)
413
+ return count_allowed == len(dttm_filter)
416
414
 
417
415
  def execute(self, context: Context) -> None:
418
416
  """Run on the worker and defer using the triggers if deferrable is set to True."""
@@ -448,11 +446,10 @@ class ExternalTaskSensor(BaseSensorOperator):
448
446
  else:
449
447
  if self.soft_fail:
450
448
  raise AirflowSkipException("External job has failed skipping.")
451
- else:
452
- raise AirflowException(
453
- "Error occurred while trying to retrieve task status. Please, check the "
454
- "name of executed task and Dag."
455
- )
449
+ raise AirflowException(
450
+ "Error occurred while trying to retrieve task status. Please, check the "
451
+ "name of executed task and Dag."
452
+ )
456
453
 
457
454
  def _check_for_existence(self, session) -> None:
458
455
  dag_to_wait = DagModel.get_current(self.external_dag_id, session)
@@ -81,5 +81,4 @@ class PythonSensor(BaseSensorOperator):
81
81
  return_value = self.python_callable(*self.op_args, **self.op_kwargs)
82
82
  if isinstance(return_value, PokeReturnValue):
83
83
  return return_value
84
- else:
85
- return PokeReturnValue(bool(return_value))
84
+ return PokeReturnValue(bool(return_value))
@@ -119,5 +119,4 @@ class DayOfWeekSensor(BaseSensorOperator):
119
119
  )
120
120
 
121
121
  return determined_weekday_num in self._week_day_num
122
- else:
123
- return timezone.utcnow().isoweekday() in self._week_day_num
122
+ return timezone.utcnow().isoweekday() in self._week_day_num