(xs, key_fn, tolerance)
| 1014 | |
| 1015 | |
| 1016 | def cluster_objects(xs, key_fn, tolerance) -> list: |
| 1017 | if not callable(key_fn): |
| 1018 | key_fn = itemgetter(key_fn) |
| 1019 | |
| 1020 | values = map(key_fn, xs) |
| 1021 | cluster_dict = make_cluster_dict(values, tolerance) |
| 1022 | |
| 1023 | get_0, get_1 = itemgetter(0), itemgetter(1) |
| 1024 | |
| 1025 | cluster_tuples = sorted(((x, cluster_dict.get(key_fn(x))) for x in xs), key=get_1) |
| 1026 | |
| 1027 | grouped = itertools.groupby(cluster_tuples, key=get_1) |
| 1028 | |
| 1029 | return [list(map(get_0, v)) for k, v in grouped] |
| 1030 | |
| 1031 | |
| 1032 | def move_object(obj, axis: str, value): |
no test coverage detected
searching dependent graphs…