See pack_kwargs.
(kwarg_keys: Tuple[str, ...], flat_args: Tuple[Any, ...])
| 99 | |
| 100 | |
| 101 | def unpack_kwargs(kwarg_keys: Tuple[str, ...], flat_args: Tuple[Any, ...]) -> Tuple[Tuple[Any, ...], Dict[str, Any]]: |
| 102 | """See pack_kwargs.""" |
| 103 | assert len(kwarg_keys) <= len(flat_args), f"too many keys {len(kwarg_keys)} vs. {len(flat_args)}" |
| 104 | if len(kwarg_keys) == 0: |
| 105 | return flat_args, {} |
| 106 | args = flat_args[: -len(kwarg_keys)] |
| 107 | kwargs = {k: v for k, v in zip(kwarg_keys, flat_args[-len(kwarg_keys) :])} |
| 108 | return args, kwargs |
| 109 | |
| 110 | |
| 111 | def split_non_tensors( |