This is an automated email from the ASF dual-hosted git repository.
weilee pushed a commit to branch v2-10-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v2-10-test by this push:
new f036f3658e ci: improve check_deferrable_default script to cover
positional variables (#41942)
f036f3658e is described below
commit f036f3658eb18b987e17a2258c40fbda8b80aaa6
Author: Wei Lee <[email protected]>
AuthorDate: Mon Sep 2 17:10:08 2024 +0800
ci: improve check_deferrable_default script to cover positional variables
(#41942)
---
scripts/ci/pre_commit/check_deferrable_default.py | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/scripts/ci/pre_commit/check_deferrable_default.py
b/scripts/ci/pre_commit/check_deferrable_default.py
index 8373385f0d..1e1fd9c7a6 100755
--- a/scripts/ci/pre_commit/check_deferrable_default.py
+++ b/scripts/ci/pre_commit/check_deferrable_default.py
@@ -74,14 +74,21 @@ def iter_check_deferrable_default_errors(module_filename:
str) -> Iterator[str]:
for node in init_method_nodes:
args = node.args
- arguments = reversed([*args.args, *args.kwonlyargs])
+ arguments = reversed([*args.args, *args.posonlyargs, *args.kwonlyargs])
defaults = reversed([*args.defaults, *args.kw_defaults])
- for argument, default in zip(arguments, defaults):
- if argument is None or default is None:
+ for argument, default in itertools.zip_longest(arguments, defaults):
+ # argument is not deferrable
+ if argument is None or argument.arg != "deferrable":
continue
- if argument.arg != "deferrable" or
_is_valid_deferrable_default(default):
+
+ # argument is deferrable, but comes with no default value
+ if default is None:
+ yield f"{module_filename}:{argument.lineno}"
continue
- yield f"{module_filename}:{default.lineno}"
+
+ # argument is deferrable, but the default value is not valid
+ if not _is_valid_deferrable_default(default):
+ yield f"{module_filename}:{default.lineno}"
def main() -> int: