(items: Sequence[nodes.Item])
| 253 | |
| 254 | |
| 255 | def reorder_items(items: Sequence[nodes.Item]) -> list[nodes.Item]: |
| 256 | argkeys_by_item: dict[Scope, dict[nodes.Item, OrderedSet[ParamArgKey]]] = {} |
| 257 | items_by_argkey: dict[Scope, dict[ParamArgKey, OrderedDict[nodes.Item, None]]] = {} |
| 258 | for scope in HIGH_SCOPES: |
| 259 | scoped_argkeys_by_item = argkeys_by_item[scope] = {} |
| 260 | scoped_items_by_argkey = items_by_argkey[scope] = defaultdict(OrderedDict) |
| 261 | for item in items: |
| 262 | argkeys = dict.fromkeys(get_param_argkeys(item, scope)) |
| 263 | if argkeys: |
| 264 | scoped_argkeys_by_item[item] = argkeys |
| 265 | for argkey in argkeys: |
| 266 | scoped_items_by_argkey[argkey][item] = None |
| 267 | |
| 268 | items_set = dict.fromkeys(items) |
| 269 | return list( |
| 270 | reorder_items_atscope( |
| 271 | items_set, argkeys_by_item, items_by_argkey, Scope.Session |
| 272 | ) |
| 273 | ) |
| 274 | |
| 275 | |
| 276 | def reorder_items_atscope( |
no test coverage detected