r""" Set args and kwargs for Expr.
(self, *args, **kwargs)
| 184 | return False |
| 185 | |
| 186 | def set_args_kwargs(self, *args, **kwargs): |
| 187 | r""" Set args and kwargs for Expr. |
| 188 | """ |
| 189 | assert ( |
| 190 | self._support_set_args_kwargs |
| 191 | ), "Doesn't support set args/kwargs for {} expr".format(type(self).__name__) |
| 192 | args, kwargs = _convert_kwargs_to_args(self._get_func(), args, kwargs) |
| 193 | inputs, arg_def = tree_flatten((args, kwargs)) |
| 194 | orig_inputs = self.inputs |
| 195 | self.inputs = [] |
| 196 | self.const_val = [] |
| 197 | for val in inputs: |
| 198 | if isinstance(val, (TensorNode, ModuleNode)): |
| 199 | self.inputs.append(val) |
| 200 | else: |
| 201 | assert _is_leaf(val) and _is_const_leaf(val) |
| 202 | idx = len(self.inputs) + len(self.const_val) |
| 203 | self.const_val.append((idx, val)) |
| 204 | |
| 205 | for n in orig_inputs: |
| 206 | if n not in self.inputs: |
| 207 | n.users.remove(self) |
| 208 | |
| 209 | for n in self.inputs: |
| 210 | if n not in orig_inputs: |
| 211 | n.users.append(self) |
| 212 | |
| 213 | self.arg_def = arg_def |
| 214 | |
| 215 | @property |
| 216 | def kwargs(self): |