You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ep...@apache.org on 2023/04/21 12:23:28 UTC
[airflow] 07/17: Deprecate `skip_exit_code` in `BashOperator` (#30734)
This is an automated email from the ASF dual-hosted git repository.
ephraimanierobi pushed a commit to branch v2-6-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit ec7bf773f0cda2fcddb659e64dc64592765495c5
Author: eladkal <45...@users.noreply.github.com>
AuthorDate: Wed Apr 19 14:52:03 2023 +0300
Deprecate `skip_exit_code` in `BashOperator` (#30734)
(cherry picked from commit 9c5c5c21f1cc7e72c3d810021e66c708b6d54ef9)
---
airflow/operators/bash.py | 25 +++++++++++++++++--------
tests/operators/test_bash.py | 6 +++---
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/airflow/operators/bash.py b/airflow/operators/bash.py
index 8450b1802d..da5e3bdf09 100644
--- a/airflow/operators/bash.py
+++ b/airflow/operators/bash.py
@@ -19,6 +19,7 @@ from __future__ import annotations
import os
import shutil
+import warnings
from typing import Sequence
from airflow.compat.functools import cached_property
@@ -51,16 +52,17 @@ class BashOperator(BaseOperator):
from current passes and then environment variable passed by the user will either update the existing
inherited environment variables or the new variables gets appended to it
:param output_encoding: Output encoding of bash command
- :param skip_exit_code: If task exits with this exit code, leave the task
+ :param skip_on_exit_code: If task exits with this exit code, leave the task
in ``skipped`` state (default: 99). If set to ``None``, any non-zero
exit code will be treated as a failure.
:param cwd: Working directory to execute the command in.
If None (default), the command is run in a temporary directory.
Airflow will evaluate the exit code of the bash command. In general, a non-zero exit code will result in
- task failure and zero will result in task success. Exit code ``99`` (or another set in ``skip_exit_code``)
+ task failure and zero will result in task success.
+ Exit code ``99`` (or another set in ``skip_on_exit_code``)
will throw an :class:`airflow.exceptions.AirflowSkipException`, which will leave the task in ``skipped``
- state. You can have all non-zero exit codes be treated as a failure by setting ``skip_exit_code=None``.
+ state. You can have all non-zero exit codes be treated as a failure by setting ``skip_on_exit_code=None``.
.. list-table::
:widths: 25 25
@@ -70,7 +72,7 @@ class BashOperator(BaseOperator):
- Behavior
* - 0
- success
- * - `skip_exit_code` (default: 99)
+ * - `skip_on_exit_code` (default: 99)
- raise :class:`airflow.exceptions.AirflowSkipException`
* - otherwise
- raise :class:`airflow.exceptions.AirflowException`
@@ -140,7 +142,8 @@ class BashOperator(BaseOperator):
env: dict[str, str] | None = None,
append_env: bool = False,
output_encoding: str = "utf-8",
- skip_exit_code: int = 99,
+ skip_exit_code: int | None = None,
+ skip_on_exit_code: int = 99,
cwd: str | None = None,
**kwargs,
) -> None:
@@ -148,7 +151,13 @@ class BashOperator(BaseOperator):
self.bash_command = bash_command
self.env = env
self.output_encoding = output_encoding
- self.skip_exit_code = skip_exit_code
+ if skip_exit_code is not None:
+ warnings.warn(
+ "skip_exit_code is deprecated. Please use skip_on_exit_code", DeprecationWarning, stacklevel=2
+ )
+ self.skip_on_exit_code = skip_exit_code
+ else:
+ self.skip_on_exit_code = skip_on_exit_code
self.cwd = cwd
self.append_env = append_env
@@ -190,8 +199,8 @@ class BashOperator(BaseOperator):
output_encoding=self.output_encoding,
cwd=self.cwd,
)
- if self.skip_exit_code is not None and result.exit_code == self.skip_exit_code:
- raise AirflowSkipException(f"Bash command returned exit code {self.skip_exit_code}. Skipping.")
+ if self.skip_on_exit_code is not None and result.exit_code == self.skip_on_exit_code:
+ raise AirflowSkipException(f"Bash command returned exit code {self.skip_on_exit_code}. Skipping.")
elif result.exit_code != 0:
raise AirflowException(
f"Bash command failed. The command returned a non-zero exit code {result.exit_code}."
diff --git a/tests/operators/test_bash.py b/tests/operators/test_bash.py
index ed423836f3..3c8320e1b2 100644
--- a/tests/operators/test_bash.py
+++ b/tests/operators/test_bash.py
@@ -173,9 +173,9 @@ class TestBashOperator:
"extra_kwargs,actual_exit_code,expected_exc",
[
(None, 99, AirflowSkipException),
- ({"skip_exit_code": 100}, 100, AirflowSkipException),
- ({"skip_exit_code": 100}, 101, AirflowException),
- ({"skip_exit_code": None}, 99, AirflowException),
+ ({"skip_on_exit_code": 100}, 100, AirflowSkipException),
+ ({"skip_on_exit_code": 100}, 101, AirflowException),
+ ({"skip_on_exit_code": None}, 99, AirflowException),
],
)
def test_skip(self, extra_kwargs, actual_exit_code, expected_exc):