From 9cc4cc6d6987f0e9ab01574a1a0211f05c5d3272 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 22 Nov 2023 11:57:43 +1100 Subject: [PATCH 1/2] Remove duplicates from search results. --- lib/python/qmk/build_targets.py | 11 +++++++++++ lib/python/qmk/search.py | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/python/qmk/build_targets.py b/lib/python/qmk/build_targets.py index fc7202204992..56793fb2ee5c 100644 --- a/lib/python/qmk/build_targets.py +++ b/lib/python/qmk/build_targets.py @@ -31,6 +31,17 @@ def __str__(self): def __repr__(self): return f'BuildTarget(keyboard={self.keyboard}, keymap={self.keymap})' + def __eq__(self, __value: object) -> bool: + if not isinstance(__value, BuildTarget): + return False + return (self.keyboard, self.keymap) == (__value.keyboard, __value.keymap) + + def __ne__(self, __value: object) -> bool: + return not self.__eq__(__value) + + def __hash__(self) -> int: + return self.__repr__().__hash__() + def configure(self, parallel: int = None, clean: bool = None, compiledb: bool = None) -> None: if parallel is not None: self._parallel = parallel diff --git a/lib/python/qmk/search.py b/lib/python/qmk/search.py index 9b8bb430b5e6..84cf6cbe3266 100644 --- a/lib/python/qmk/search.py +++ b/lib/python/qmk/search.py @@ -122,7 +122,7 @@ def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str """ if len(filters) == 0: cli.log.info('Preparing target list...') - targets = list(parallel_map(_construct_build_target_kb_km, target_list)) + targets = list(set(parallel_map(_construct_build_target_kb_km, target_list))) else: cli.log.info('Parsing data for all matching keyboard/keymap combinations...') valid_keymaps = [(e[0], e[1], dotty(e[2])) for e in parallel_map(_load_keymap_info, target_list)] @@ -183,7 +183,7 @@ def f(e): cli.log.info('Preparing target list...') valid_keymaps = [(e[0], e[1], e[2].to_dict() if isinstance(e[2], Dotty) else e[2]) for e in valid_keymaps] # need to convert dotty_dict back to dict because it doesn't survive parallelisation - targets = list(parallel_map(_construct_build_target_kb_km_json, list(valid_keymaps))) + targets = list(set(parallel_map(_construct_build_target_kb_km_json, list(valid_keymaps)))) return targets From 7691a1e080f8e93bd69ac935a53146900d4d6d58 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 22 Nov 2023 12:01:52 +1100 Subject: [PATCH 2/2] Simplify. --- lib/python/qmk/build_targets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/build_targets.py b/lib/python/qmk/build_targets.py index 56793fb2ee5c..16a7ef87a22d 100644 --- a/lib/python/qmk/build_targets.py +++ b/lib/python/qmk/build_targets.py @@ -34,7 +34,7 @@ def __repr__(self): def __eq__(self, __value: object) -> bool: if not isinstance(__value, BuildTarget): return False - return (self.keyboard, self.keymap) == (__value.keyboard, __value.keymap) + return self.__repr__() == __value.__repr__() def __ne__(self, __value: object) -> bool: return not self.__eq__(__value)