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.
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/PKG-INFO +7 -7
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/README.rst +3 -3
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/changelog.rst +22 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/commits.rst +16 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/index.rst +1 -1
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/provider.yaml +2 -1
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/pyproject.toml +4 -4
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/__init__.py +1 -1
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/bash.py +1 -1
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/latest_only.py +2 -3
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/python.py +4 -7
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/trigger_dagrun.py +32 -31
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/bash.py +4 -6
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/external_task.py +45 -48
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/python.py +1 -2
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/weekday.py +1 -2
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/triggers/external_task.py +39 -27
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/triggers/temporal.py +2 -3
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/python_virtualenv.py +1 -1
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/sensor_helper.py +12 -1
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_external_python.py +1 -2
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_python_virtualenv.py +1 -2
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_python.py +5 -4
- {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
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/triggers/test_external_task.py +59 -10
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/configurations-ref.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/operators/bash.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/operators/datetime.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/operators/index.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/operators/python.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/bash.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/datetime.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/external_task_sensor.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/file.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/index.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/docs/sensors/python.rst +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/LICENSE +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/bash.py +0 -0
- {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
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/branch_python.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/branch_virtualenv.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/external_python.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/python.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/sensor.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/decorators/short_circuit.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/get_provider_info.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/hooks/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/hooks/filesystem.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/hooks/package_index.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/hooks/subprocess.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/branch.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/datetime.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/empty.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/smooth.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/operators/weekday.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/date_time.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/filesystem.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/time.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/sensors/time_delta.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/triggers/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/triggers/file.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/__init__.py +0 -0
- {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
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/skipmixin.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/utils/weekday.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/src/airflow/providers/standard/version_compat.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_bash.py +0 -0
- {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
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_branch_python.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_branch_virtualenv.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_python.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_sensor.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/decorators/test_short_circuit.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/hooks/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/hooks/test_filesystem.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/hooks/test_package_index.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/hooks/test_subprocess.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_bash.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_branch_operator.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_datetime.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_generic_transfer.py +0 -0
- {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
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_smooth.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_trigger_dagrun.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/operators/test_weekday.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_bash.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_date_time.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_python.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_time.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_time_delta.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/sensors/test_weekday.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/triggers/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/triggers/test_file.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/triggers/test_temporal.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/utils/__init__.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/utils/test_python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/utils/test_skipmixin.py +0 -0
- {apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/tests/unit/standard/utils/test_weekday.py +0 -0
{apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-standard
|
|
3
|
-
Version: 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.
|
|
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.
|
|
26
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-standard/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.
|
|
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.
|
|
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.
|
|
91
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.0.0/changelog.html>`_.
|
|
92
92
|
|
{apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/README.rst
RENAMED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-standard``
|
|
25
25
|
|
|
26
|
-
Release: ``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.
|
|
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.
|
|
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)``
|
{apache_airflow_providers_standard-0.4.0 → apache_airflow_providers_standard-1.0.0rc1}/provider.yaml
RENAMED
|
@@ -21,9 +21,10 @@ name: Standard
|
|
|
21
21
|
description: |
|
|
22
22
|
Airflow Standard Provider
|
|
23
23
|
state: ready
|
|
24
|
-
source-date-epoch:
|
|
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.
|
|
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.
|
|
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.
|
|
99
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/0.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
97
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
103
|
-
|
|
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
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
#
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
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
|
-
|
|
359
|
+
state = dag_run.state
|
|
359
360
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
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
|
-
|
|
367
|
-
|
|
368
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
119
|
-
|
|
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
|
-
|
|
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
|
-
|
|
92
|
-
|
|
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
|
-
|
|
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
|
-
|
|
318
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
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
|
-
|
|
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
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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
|
-
|
|
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
|
-
|
|
407
|
-
|
|
408
|
-
self.
|
|
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
|
-
|
|
411
|
-
|
|
412
|
-
|
|
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
|
-
|
|
415
|
-
|
|
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
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
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
|
-
|
|
85
|
-
return PokeReturnValue(bool(return_value))
|
|
84
|
+
return PokeReturnValue(bool(return_value))
|