apache-airflow-providers-standard 1.0.0__tar.gz → 1.1.0__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.
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/PKG-INFO +6 -6
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/README.rst +3 -3
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/changelog.rst +32 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/commits.rst +21 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/index.rst +1 -1
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/operators/datetime.rst +2 -2
- apache_airflow_providers_standard-1.1.0/docs/operators/latest_only.rst +31 -0
- apache_airflow_providers_standard-1.1.0/docs/operators/trigger_dag_run.rst +31 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/provider.yaml +13 -1
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/pyproject.toml +3 -3
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/__init__.py +1 -1
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/get_provider_info.py +11 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/latest_only.py +42 -30
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/trigger_dagrun.py +21 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_python_virtualenv.py +1 -1
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_sensor.py +1 -1
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/hooks/test_subprocess.py +2 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_latest_only_operator.py +40 -67
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_python.py +15 -3
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_trigger_dagrun.py +25 -2
- apache_airflow_providers_standard-1.1.0/tests/unit/standard/utils/test_sensor_helper.py +453 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/conf.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/configurations-ref.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/operators/bash.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/operators/index.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/operators/python.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/security.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/sensors/bash.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/sensors/datetime.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/sensors/external_task_sensor.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/sensors/file.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/sensors/index.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/sensors/python.rst +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/LICENSE +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/bash.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/branch_external_python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/branch_python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/branch_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/external_python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/sensor.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/decorators/short_circuit.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/hooks/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/hooks/filesystem.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/hooks/package_index.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/hooks/subprocess.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/bash.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/branch.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/datetime.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/empty.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/smooth.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/operators/weekday.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/bash.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/date_time.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/external_task.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/filesystem.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/time.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/time_delta.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/sensors/weekday.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/triggers/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/triggers/external_task.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/triggers/file.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/triggers/temporal.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/utils/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/utils/python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/utils/python_virtualenv_script.jinja2 +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/utils/sensor_helper.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/utils/skipmixin.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/utils/weekday.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/src/airflow/providers/standard/version_compat.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/conftest.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_bash.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_branch_external_python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_branch_python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_branch_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_external_python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/decorators/test_short_circuit.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/hooks/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/hooks/test_filesystem.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/hooks/test_package_index.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_bash.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_branch_operator.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_datetime.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_generic_transfer.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_smooth.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/operators/test_weekday.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/sensors/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/sensors/test_bash.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/sensors/test_date_time.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/sensors/test_external_task_sensor.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/sensors/test_python.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/sensors/test_time.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/sensors/test_time_delta.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/sensors/test_weekday.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/triggers/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/triggers/test_external_task.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/triggers/test_file.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/triggers/test_temporal.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/utils/__init__.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/utils/test_python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/utils/test_skipmixin.py +0 -0
- {apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/tests/unit/standard/utils/test_weekday.py +0 -0
{apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-standard
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.0
|
|
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>
|
|
@@ -22,8 +22,8 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
23
|
Requires-Dist: apache-airflow>=2.9.0
|
|
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.
|
|
26
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-standard/1.
|
|
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.
|
|
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.
|
|
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.
|
|
91
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-standard/1.1.0/changelog.html>`_.
|
|
92
92
|
|
{apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/README.rst
RENAMED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-standard``
|
|
25
25
|
|
|
26
|
-
Release: ``1.
|
|
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.
|
|
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.
|
|
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
|
|
{apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/docs/commits.rst
RENAMED
|
@@ -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)``
|
|
@@ -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]
|
{apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/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: 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.
|
{apache_airflow_providers_standard-1.0.0 → apache_airflow_providers_standard-1.1.0}/pyproject.toml
RENAMED
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-standard"
|
|
28
|
-
version = "1.
|
|
28
|
+
version = "1.1.0"
|
|
29
29
|
description = "Provider package apache-airflow-providers-standard for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
authors = [
|
|
@@ -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.
|
|
99
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-standard/1.
|
|
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.
|
|
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
|
|
33
|
-
|
|
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(
|
|
67
|
+
return list(self.get_direct_relative_ids(upstream=False))
|
|
66
68
|
|
|
67
|
-
|
|
68
|
-
now = pendulum.now("UTC")
|
|
69
|
+
dates = self._get_compare_dates(dag_run)
|
|
69
70
|
|
|
70
|
-
if
|
|
71
|
+
if dates is None:
|
|
71
72
|
self.log.info("Last scheduled execution: allowing execution to proceed.")
|
|
72
|
-
return list(
|
|
73
|
+
return list(self.get_direct_relative_ids(upstream=False))
|
|
73
74
|
|
|
74
|
-
|
|
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
|
-
|
|
100
|
-
|
|
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
|
-
|
|
96
|
+
dagrun_date = dag_run.logical_date or dag_run.run_after
|
|
97
|
+
else:
|
|
98
|
+
dagrun_date = dag_run.logical_date
|
|
104
99
|
|
|
105
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
115
|
-
|
|
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:
|
|
@@ -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
|
|
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)
|