From 9f89a559ee2023c03ee704af3571a3b5cbc92b15 Mon Sep 17 00:00:00 2001 From: Maciej Olko Date: Fri, 24 Jan 2025 01:42:41 +0100 Subject: [PATCH] Remove aliases instead of failing --- manage_translation.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/manage_translation.py b/manage_translation.py index af8d245c3..6b477a9e6 100755 --- a/manage_translation.py +++ b/manage_translation.py @@ -17,7 +17,6 @@ from contextlib import chdir from dataclasses import dataclass from difflib import SequenceMatcher -from itertools import combinations from pathlib import Path from subprocess import call import sys @@ -154,7 +153,7 @@ def progress_from_resources(resources: Iterable[ResourceLanguageStatistics]) -> def get_number_of_translators(): translators = set(_fetch_translators()) _remove_bot(translators) - _check_for_aliases(translators) + translators = _eliminate_aliases(translators) return len(translators) @@ -170,12 +169,18 @@ def _remove_bot(translators: set[str]) -> None: translators.remove("Transifex Bot <>") -def _check_for_aliases(translators) -> None: - for pair in combinations(translators, 2): - if (ratio := SequenceMatcher(lambda x: x in '<>@', *pair).ratio()) > 0.64: - warn( - f"{pair} are similar ({ratio:.3f}). Please add them to aliases list or bump the limit." - ) +def _eliminate_aliases(translators: set[str]) -> set[str]: + unique = set() + for name in translators: + for match in unique: + if (ratio := SequenceMatcher(lambda x: x in '<>@', name, match).ratio()) > 0.64: + print( + f"{pair} are similar ({ratio:.3f}). Deduplicating." + ) + break + else: + unique.add(name) + return unique def language_switcher(entry: ResourceLanguageStatistics) -> bool: