List of list of tuple keys Parameters ---------- head : tuple The known tuple so far ind : Iterable An iterable of indices not yet covered values : dict Known values for non-dummy indices dummies : dict Ranges of values for dummy indices
(head, ind, values, dummies)
| 1038 | |
| 1039 | |
| 1040 | def lol_tuples(head, ind, values, dummies): |
| 1041 | """List of list of tuple keys |
| 1042 | |
| 1043 | Parameters |
| 1044 | ---------- |
| 1045 | head : tuple |
| 1046 | The known tuple so far |
| 1047 | ind : Iterable |
| 1048 | An iterable of indices not yet covered |
| 1049 | values : dict |
| 1050 | Known values for non-dummy indices |
| 1051 | dummies : dict |
| 1052 | Ranges of values for dummy indices |
| 1053 | |
| 1054 | Examples |
| 1055 | -------- |
| 1056 | >>> lol_tuples(('x',), 'ij', {'i': 1, 'j': 0}, {}) |
| 1057 | ('x', 1, 0) |
| 1058 | |
| 1059 | >>> lol_tuples(('x',), 'ij', {'i': 1}, {'j': range(3)}) |
| 1060 | [('x', 1, 0), ('x', 1, 1), ('x', 1, 2)] |
| 1061 | |
| 1062 | >>> lol_tuples(('x',), 'ijk', {'i': 1}, {'j': [0, 1, 2], 'k': [0, 1]}) # doctest: +NORMALIZE_WHITESPACE |
| 1063 | [[('x', 1, 0, 0), ('x', 1, 0, 1)], |
| 1064 | [('x', 1, 1, 0), ('x', 1, 1, 1)], |
| 1065 | [('x', 1, 2, 0), ('x', 1, 2, 1)]] |
| 1066 | """ |
| 1067 | if not ind: |
| 1068 | return head |
| 1069 | if ind[0] not in dummies: |
| 1070 | return lol_tuples(head + (values[ind[0]],), ind[1:], values, dummies) |
| 1071 | else: |
| 1072 | return [ |
| 1073 | lol_tuples(head + (v,), ind[1:], values, dummies) for v in dummies[ind[0]] |
| 1074 | ] |
| 1075 | |
| 1076 | |
| 1077 | def optimize_blockwise(graph, keys=()): |
no outgoing calls
no test coverage detected
searching dependent graphs…