| 109 | self.kw = kwargs() if kw is arguments._None else copy.copy(kw) |
| 110 | |
| 111 | def append(self, x): |
| 112 | args, kw = package(), kwargs() |
| 113 | if isinstance(x, package): |
| 114 | args = x |
| 115 | elif isinstance(x, kwargs): |
| 116 | kw = x |
| 117 | elif isinstance(x, arguments): |
| 118 | args, kw = x.args, x.kw |
| 119 | else: |
| 120 | args = package((x,)) |
| 121 | if args: self.args += args |
| 122 | if kw: |
| 123 | dup_keys = set(self.kw.keys()).intersection(set(kw.keys())) |
| 124 | assert len(dup_keys) == 0, f'Duplicated keys: {dup_keys}' |
| 125 | self.kw.update(kw) |
| 126 | return self |
| 127 | |
| 128 | |
| 129 | builtins.package = package |