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:

Reply via email to