| 115 | return f"{self.name} {params}{ret}" |
| 116 | |
| 117 | def prepare_args(self, args: Sequence[str]) -> inspect.BoundArguments: |
| 118 | try: |
| 119 | bound_arguments = self.signature.bind(*args) |
| 120 | except TypeError: |
| 121 | expected = f"Expected: {self.signature.parameters}" |
| 122 | received = f"Received: {args}" |
| 123 | raise exceptions.CommandError( |
| 124 | f"Command argument mismatch: \n {expected}\n {received}" |
| 125 | ) |
| 126 | |
| 127 | for name, value in bound_arguments.arguments.items(): |
| 128 | param = self.signature.parameters[name] |
| 129 | convert_to = param.annotation |
| 130 | if param.kind == param.VAR_POSITIONAL: |
| 131 | bound_arguments.arguments[name] = tuple( |
| 132 | parsearg(self.manager, x, convert_to) for x in value |
| 133 | ) |
| 134 | else: |
| 135 | bound_arguments.arguments[name] = parsearg( |
| 136 | self.manager, value, convert_to |
| 137 | ) |
| 138 | |
| 139 | bound_arguments.apply_defaults() |
| 140 | |
| 141 | return bound_arguments |
| 142 | |
| 143 | def call(self, args: Sequence[str]) -> Any: |
| 144 | """ |