(
self, args: ast3.arguments, line: int, no_type_check: bool = False
)
| 1076 | type.optional = optional |
| 1077 | |
| 1078 | def transform_args( |
| 1079 | self, args: ast3.arguments, line: int, no_type_check: bool = False |
| 1080 | ) -> list[Argument]: |
| 1081 | new_args = [] |
| 1082 | names: list[ast3.arg] = [] |
| 1083 | posonlyargs = args.posonlyargs |
| 1084 | args_args = posonlyargs + args.args |
| 1085 | args_defaults = args.defaults |
| 1086 | num_no_defaults = len(args_args) - len(args_defaults) |
| 1087 | # positional arguments without defaults |
| 1088 | for i, a in enumerate(args_args[:num_no_defaults]): |
| 1089 | pos_only = i < len(posonlyargs) |
| 1090 | new_args.append(self.make_argument(a, None, ARG_POS, no_type_check, pos_only)) |
| 1091 | names.append(a) |
| 1092 | |
| 1093 | # positional arguments with defaults |
| 1094 | for i, (a, d) in enumerate(zip(args_args[num_no_defaults:], args_defaults)): |
| 1095 | pos_only = num_no_defaults + i < len(posonlyargs) |
| 1096 | new_args.append(self.make_argument(a, d, ARG_OPT, no_type_check, pos_only)) |
| 1097 | names.append(a) |
| 1098 | |
| 1099 | # *arg |
| 1100 | if args.vararg is not None: |
| 1101 | new_args.append(self.make_argument(args.vararg, None, ARG_STAR, no_type_check)) |
| 1102 | names.append(args.vararg) |
| 1103 | |
| 1104 | # keyword-only arguments with defaults |
| 1105 | for a, kd in zip(args.kwonlyargs, args.kw_defaults): |
| 1106 | new_args.append( |
| 1107 | self.make_argument( |
| 1108 | a, kd, ARG_NAMED if kd is None else ARG_NAMED_OPT, no_type_check |
| 1109 | ) |
| 1110 | ) |
| 1111 | names.append(a) |
| 1112 | |
| 1113 | # **kwarg |
| 1114 | if args.kwarg is not None: |
| 1115 | new_args.append(self.make_argument(args.kwarg, None, ARG_STAR2, no_type_check)) |
| 1116 | names.append(args.kwarg) |
| 1117 | |
| 1118 | check_param_names([arg.variable.name for arg in new_args], names, self.fail_arg) |
| 1119 | |
| 1120 | return new_args |
| 1121 | |
| 1122 | def make_argument( |
| 1123 | self, |
no test coverage detected