(keymap, empty=b"")
| 195 | |
| 196 | |
| 197 | def compile_keymap(keymap, empty=b""): |
| 198 | r = {} |
| 199 | for key, value in keymap.items(): |
| 200 | if isinstance(key, bytes): |
| 201 | first = key[:1] |
| 202 | else: |
| 203 | first = key[0] |
| 204 | r.setdefault(first, {})[key[1:]] = value |
| 205 | for key, value in r.items(): |
| 206 | if empty in value: |
| 207 | if len(value) != 1: |
| 208 | raise KeySpecError("key definitions for %s clash" % (value.values(),)) |
| 209 | else: |
| 210 | r[key] = value[empty] |
| 211 | else: |
| 212 | r[key] = compile_keymap(value, empty) |
| 213 | return r |
searching dependent graphs…