gnomeExtensions: count naming collisions only for the last three shell versions

Before this commit, we counted naming collisions of extensions for each shell version.
With this commit, we count naming collisions of extensions for the last three shell versions, because `gnomeExtensions` contains extensions for the last three shell versions.
This commit is contained in:
Honnip
2024-05-29 00:36:23 +09:00
parent 523892928d
commit 7d150337d1
3 changed files with 94 additions and 471 deletions
+48 -369
View File
@@ -1,371 +1,50 @@
{
"38": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"workspace-indicator": [
"workspace-indicator@gnome-shell-extensions.gcampax.github.com",
"horizontal-workspace-indicator@tty2.io"
],
"lock-keys": [
"lockkeys@vaina.lt",
"lockkeys@fawtytoo"
],
"fuzzy-clock": [
"Fuzzy_Clock@dallagi",
"fuzzy-clock@keepawayfromfire.co.uk"
],
"hide-activities-button": [
"Hide_Activities@shay.shayel.org",
"hide-activities-button@nmingori.gnome-shell-extensions.org"
],
"shutdowntimer": [
"ShutdownTimer@neumann",
"ShutdownTimer@deminder"
],
"bottompanel": [
"bottompanel@tmoer93",
"bottom-panel@sulincix"
],
"noannoyance": [
"noannoyance@sindex.com",
"noannoyance@daase.net"
],
"virtualbox-applet": [
"vbox-applet@gs.eros2.info",
"vbox-applet@buba98"
],
"transparent-window": [
"transparent-window@pbxqdown.github.com",
"transparentwindows.mdirshad07"
],
"azan-islamic-prayer-times": [
"azan@faissal.bensefia.id",
"azan@hatem.masmoudi.org"
],
"floating-dock": [
"floatingDock@sun.wxg@gmail.com",
"floating-dock@nandoferreira_prof@hotmail.com"
],
"gnome-trash": [
"gnome-trash@gnome-trash.b00f.gitlab.com",
"gnome-trash@b00f.github.io"
],
"true-color-invert": [
"true-color-invert@jackkenney",
"true-color-window-invert@lynet101"
],
"volume-scroller": [
"volume_scroller@trflynn89.pm.me",
"volume_scroller@francislavoie.github.io"
]
},
"40": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"workspace-indicator": [
"workspace-indicator@gnome-shell-extensions.gcampax.github.com",
"horizontal-workspace-indicator@tty2.io"
],
"lock-keys": [
"lockkeys@vaina.lt",
"lockkeys@fawtytoo"
],
"system-monitor": [
"system-monitor@paradoxxx.zero.gmail.com",
"System_Monitor@bghome.gmail.com"
],
"hide-activities-button": [
"Hide_Activities@shay.shayel.org",
"hide-activities-button@nmingori.gnome-shell-extensions.org"
],
"clipboard-indicator": [
"clipboard-indicator@tudmotu.com",
"clipboard-indicator@Dieg0Js.github.io"
],
"shutdowntimer": [
"ShutdownTimer@neumann",
"shutdown-timer-gnome-shell-extension",
"ShutdownTimer@deminder"
],
"noannoyance": [
"noannoyance@sindex.com",
"noannoyance@daase.net"
],
"fuzzy-clock": [
"fuzzy-clock@keepawayfromfire.co.uk",
"FuzzyClock@johngoetz"
],
"virtualbox-applet": [
"vbox-applet@gs.eros2.info",
"vbox-applet@buba98"
],
"panel-date-format": [
"panel-date-format@keiii.github.com",
"panel-date-format@atareao.es"
],
"disable-unredirect-fullscreen-windows": [
"unredirect@vaina.lt",
"unredirect@aunetx"
],
"floating-dock": [
"floatingDock@sun.wxg@gmail.com",
"floating-dock@nandoferreira_prof@hotmail.com"
],
"extension-list": [
"extension-list@tu.berry",
"screen-lock@garciabaameiro.com"
],
"wireguard-indicator": [
"wireguard-indicator@gregos.me",
"wireguard-indicator@atareao.es"
],
"true-color-invert": [
"true-color-invert@jackkenney",
"true-color-window-invert@lynet101"
],
"volume-scroller": [
"volume_scroller@trflynn89.pm.me",
"volume_scroller@francislavoie.github.io"
],
"floating-panel": [
"floating-panel@aylur",
"floating-panel-usedbymyself@wpism"
]
},
"41": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"workspace-indicator": [
"workspace-indicator@gnome-shell-extensions.gcampax.github.com",
"horizontal-workspace-indicator@tty2.io"
],
"lock-keys": [
"lockkeys@vaina.lt",
"lockkeys@fawtytoo"
],
"shutdowntimer": [
"ShutdownTimer@neumann",
"ShutdownTimer@deminder"
],
"noannoyance": [
"noannoyance@sindex.com",
"noannoyance@daase.net"
],
"fuzzy-clock": [
"fuzzy-clock@keepawayfromfire.co.uk",
"FuzzyClock@johngoetz"
],
"virtualbox-applet": [
"vbox-applet@gs.eros2.info",
"vbox-applet@buba98"
],
"panel-date-format": [
"panel-date-format@keiii.github.com",
"panel-date-format@atareao.es"
],
"disable-unredirect-fullscreen-windows": [
"unredirect@vaina.lt",
"unredirect@aunetx"
],
"floating-dock": [
"floatingDock@sun.wxg@gmail.com",
"floating-dock@nandoferreira_prof@hotmail.com"
],
"wireguard-indicator": [
"wireguard-indicator@gregos.me",
"wireguard-indicator@atareao.es"
],
"true-color-invert": [
"true-color-invert@jackkenney",
"true-color-window-invert@lynet101"
],
"volume-scroller": [
"volume_scroller@trflynn89.pm.me",
"volume_scroller@francislavoie.github.io"
],
"floating-panel": [
"floating-panel@aylur",
"floating-panel-usedbymyself@wpism"
]
},
"42": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"workspace-indicator": [
"workspace-indicator@gnome-shell-extensions.gcampax.github.com",
"horizontal-workspace-indicator@tty2.io"
],
"lock-keys": [
"lockkeys@vaina.lt",
"lockkeys@fawtytoo"
],
"persian-calendar": [
"PersianCalendar@oxygenws.com",
"persian-calendar@iamrezamousavi.gmail.com"
],
"clipboard-indicator": [
"clipboard-indicator@tudmotu.com",
"clipboard-indicator@Dieg0Js.github.io"
],
"noannoyance": [
"noannoyance@sindex.com",
"noannoyance@daase.net"
],
"fuzzy-clock": [
"fuzzy-clock@keepawayfromfire.co.uk",
"FuzzyClock@johngoetz"
],
"virtualbox-applet": [
"vbox-applet@gs.eros2.info",
"vbox-applet@buba98"
],
"panel-date-format": [
"panel-date-format@keiii.github.com",
"panel-date-format@atareao.es"
],
"wireguard-indicator": [
"wireguard-indicator@gregos.me",
"wireguard-indicator@atareao.es"
],
"true-color-invert": [
"true-color-invert@jackkenney",
"true-color-window-invert@lynet101"
],
"volume-scroller": [
"volume_scroller@trflynn89.pm.me",
"volume_scroller@francislavoie.github.io"
],
"auto-activities": [
"auto-activities@acedron.github.io",
"auto-activities@CleoMenezesJr.github.io"
],
"floating-panel": [
"floating-panel@aylur",
"floating-panel-usedbymyself@wpism"
]
},
"43": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"workspace-indicator": [
"workspace-indicator@gnome-shell-extensions.gcampax.github.com",
"horizontal-workspace-indicator@tty2.io"
],
"lock-keys": [
"lockkeys@vaina.lt",
"lockkeys@fawtytoo"
],
"persian-calendar": [
"PersianCalendar@oxygenws.com",
"persian-calendar@iamrezamousavi.gmail.com"
],
"clipboard-indicator": [
"clipboard-indicator@tudmotu.com",
"clipboard-indicator@Dieg0Js.github.io"
],
"keep-awake": [
"KeepAwake@jepfa.de",
"awake@vixalien.com"
],
"noannoyance": [
"noannoyance@sindex.com",
"noannoyance@daase.net"
],
"fuzzy-clock": [
"fuzzy-clock@keepawayfromfire.co.uk",
"FuzzyClock@johngoetz"
],
"virtualbox-applet": [
"vbox-applet@gs.eros2.info",
"vbox-applet@buba98"
],
"panel-date-format": [
"panel-date-format@keiii.github.com",
"panel-date-format@atareao.es"
],
"battery-time": [
"batime@martin.zurowietz.de",
"batterytime@typeof.pw"
],
"volume-scroller": [
"volume_scroller@trflynn89.pm.me",
"volume_scroller@francislavoie.github.io"
],
"floating-panel": [
"floating-panel@aylur",
"floating-panel-usedbymyself@wpism"
]
},
"44": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"workspace-indicator": [
"workspace-indicator@gnome-shell-extensions.gcampax.github.com",
"horizontal-workspace-indicator@tty2.io"
],
"persian-calendar": [
"PersianCalendar@oxygenws.com",
"persian-calendar@iamrezamousavi.gmail.com"
],
"clipboard-indicator": [
"clipboard-indicator@tudmotu.com",
"clipboard-indicator@Dieg0Js.github.io"
],
"virtualbox-applet": [
"vbox-applet@gs.eros2.info",
"vbox-applet@buba98"
],
"panel-date-format": [
"panel-date-format@keiii.github.com",
"panel-date-format@atareao.es"
],
"battery-time": [
"batime@martin.zurowietz.de",
"batterytime@typeof.pw"
]
},
"45": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"persian-calendar": [
"PersianCalendar@oxygenws.com",
"persian-calendar@iamrezamousavi.gmail.com"
],
"battery-time": [
"batime@martin.zurowietz.de",
"batterytime@typeof.pw"
],
"power-profile-indicator": [
"power-profile-indicator@laux.wtf",
"power-profile@fthx"
]
},
"46": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"persian-calendar": [
"PersianCalendar@oxygenws.com",
"persian-calendar@iamrezamousavi.gmail.com"
],
"power-profile-indicator": [
"power-profile-indicator@laux.wtf",
"power-profile@fthx"
]
}
"applications-menu": [
"Applications_Menu@rmy.pobox.com",
"apps-menu@gnome-shell-extensions.gcampax.github.com"
],
"workspace-indicator": [
"horizontal-workspace-indicator@tty2.io",
"workspace-indicator@gnome-shell-extensions.gcampax.github.com"
],
"persian-calendar": [
"persian-calendar@iamrezamousavi.gmail.com",
"PersianCalendar@oxygenws.com"
],
"openweather": [
"openweather-extension@jenslody.de",
"openweather-extension@penguin-teal.github.io"
],
"clipboard-indicator": [
"clipboard-indicator@tudmotu.com",
"clipboard-indicator@Dieg0Js.github.io"
],
"system-monitor": [
"system-monitor@gnome-shell-extensions.gcampax.github.com",
"System_Monitor@bghome.gmail.com"
],
"virtualbox-applet": [
"vbox-applet@gs.eros2.info",
"vbox-applet@buba98"
],
"panel-date-format": [
"panel-date-format@atareao.es",
"panel-date-format@keiii.github.com"
],
"battery-time": [
"batterytime@typeof.pw",
"batime@martin.zurowietz.de"
],
"kernel-indicator": [
"kernel-indicator@elboulangero.gitlab.com",
"kernel-indicator@pvizc.gitlab.com"
],
"fuzzy-clock": [
"fuzzy-clock@keepawayfromfire.co.uk",
"FuzzyClock@johngoetz"
],
"power-profile-indicator": [
"power-profile-indicator@laux.wtf",
"power-profile@fthx"
]
}
@@ -3,111 +3,49 @@
# - Every item from ./collisions.json (for the respective Shell version) should have an entry in here
# - Set the value to `null` for filtering (duplicate or unmaintained extensions)
# - Sort the entries in order of appearance in the collisions.json
# - Make a separate section for each GNOME version. Collisions will come back eventually
# as the extensions are updated.
{
# ####### GNOME 45 #######
"apps-menu@gnome-shell-extensions.gcampax.github.com" = "applications-menu";
"Applications_Menu@rmy.pobox.com" = "frippery-applications-menu";
"apps-menu@gnome-shell-extensions.gcampax.github.com" = "applications-menu";
"horizontal-workspace-indicator@tty2.io" = "workspace-indicator-2";
"workspace-indicator@gnome-shell-extensions.gcampax.github.com" = "workspace-indicator";
"PersianCalendar@oxygenws.com" = "persian-calendar";
"persian-calendar@iamrezamousavi.gmail.com" = "persian-calendar-2";
"PersianCalendar@oxygenws.com" = "persian-calendar";
"openweather-extension@jenslody.de" = "openweather";
"openweather-extension@penguin-teal.github.io" = "openweather-refined";
"clipboard-indicator@tudmotu.com" = "clipboard-indicator";
"clipboard-indicator@Dieg0Js.github.io" = "clipboard-indicator-2";
"system-monitor@gnome-shell-extensions.gcampax.github.com" = "system-monitor";
"System_Monitor@bghome.gmail.com" = "system-monitor-2";
"vbox-applet@gs.eros2.info" = "virtualbox-applet";
"vbox-applet@buba98" = "virtualbox-applet-2";
"panel-date-format@atareao.es" = "panel-date-format-2";
"panel-date-format@keiii.github.com" = "panel-date-format";
"batime@martin.zurowietz.de" = "battery-time";
"batterytime@typeof.pw" = "battery-time-2";
"batime@martin.zurowietz.de" = "battery-time";
# No longer maintained: https://gitlab.com/arnaudr/gnome-shell-extension-kernel-indicator
"kernel-indicator@elboulangero.gitlab.com" = null;
"kernel-indicator@pvizc.gitlab.com" = "kernel-indicator";
"fuzzy-clock@keepawayfromfire.co.uk" = "fuzzy-clock-2";
"FuzzyClock@johngoetz" = "fuzzy-clock";
"power-profile-indicator@laux.wtf" = "power-profile-indicator";
"power-profile@fthx" = "power-profile-indicator-2";
# ############################################################################
# These are conflicts for older extensions (i.e. they don't support the latest GNOME version).
# Make sure to move them up once they are updated
# ####### GNOME 44 #######
"workspace-indicator@gnome-shell-extensions.gcampax.github.com" = "workspace-indicator";
"horizontal-workspace-indicator@tty2.io" = "workspace-indicator-2";
"clipboard-indicator@tudmotu.com" = "clipboard-indicator";
"clipboard-indicator@Dieg0Js.github.io" = "clipboard-indicator-2";
"vbox-applet@gs.eros2.info" = "virtualbox-applet";
"vbox-applet@buba98" = "virtualbox-applet-2";
"panel-date-format@keiii.github.com" = "panel-date-format";
"panel-date-format@atareao.es" = "panel-date-format-2";
# ####### GNOME 43 #######
"lockkeys@vaina.lt" = "lock-keys";
"lockkeys@fawtytoo" = "lock-keys-2";
# DEPRECATED: Use "Caffeine" instead
"KeepAwake@jepfa.de" = "keep-awake";
"awake@vixalien.com" = null;
"noannoyance@sindex.com" = "noannoyance";
"noannoyance@daase.net" = "noannoyance-2";
"fuzzy-clock@keepawayfromfire.co.uk" = "fuzzy-clock-2";
"FuzzyClock@johngoetz" = "fuzzy-clock";
"volume_scroller@trflynn89.pm.me" = "volume-scroller";
"volume_scroller@francislavoie.github.io" = "volume-scroller-2";
# no source repository can be found for this extension
"floating-panel@aylur" = "floating-panel";
"floating-panel-usedbymyself@wpism" = null;
# ####### GNOME 42 #######
"wireguard-indicator@gregos.me" = "wireguard-indicator-2";
"wireguard-indicator@atareao.es" = "wireguard-indicator";
"auto-activities@acedron.github.io" = "auto-activities-2";
"auto-activities@CleoMenezesJr.github.io" = "auto-activities";
"true-color-invert@jackkenney" = "true-color-invert";
"true-color-window-invert@lynet101" = "true-color-window-invert";
# ####### GNOME 41 #######
# These extensions no longer collide. We preserve the old attribute name for backwards compatibility.
"floatingDock@sun.wxg@gmail.com" = "floating-dock-2";
"floating-dock@nandoferreira_prof@hotmail.com" = "floating-dock";
"unredirect@vaina.lt" = "disable-unredirect-fullscreen-windows";
"unredirect@aunetx" = "disable-unredirect-fullscreen-windows-2";
# At the moment, ShutdownTimer@deminder is a fork of ShutdownTimer@neumann which adds new features
# there seem to be upstream plans, so this should be checked periodically:
# https://github.com/Deminder/ShutdownTimer https://github.com/neumann-d/ShutdownTimer/pull/46
"ShutdownTimer@neumann" = null;
"shutdown-timer-gnome-shell-extension" = "shutdowntimer-2";
"ShutdownTimer@deminder" = "shutdowntimer";
# ####### GNOME 40 #######
"System_Monitor@bghome.gmail.com" = "system-monitor-2";
"Hide_Activities@shay.shayel.org" = "hide-activities-button";
"hide-activities-button@nmingori.gnome-shell-extensions.org" = "hide-activities-button-2";
"extension-list@tu.berry" = "extension-list";
"screen-lock@garciabaameiro.com" = "screen-lock"; # Don't know why they got 'extension-list' as slug
# ####### GNOME 3.38 #######
"bottompanel@tmoer93" = "bottompanel";
"bottom-panel@sulincix" = "bottompanel-2";
# See https://github.com/pbxqdown/gnome-shell-extension-transparent-window/issues/12#issuecomment-800765381
"transparent-window@pbxqdown.github.com" = "transparent-window";
"transparentwindows.mdirshad07" = null;
# Forks of each other, azan@faissal.bensefia.id is more recent
"azan@faissal.bensefia.id" = "azan-islamic-prayer-times";
"azan@hatem.masmoudi.org" = null;
"true-color-window-invert@lynet101" = "true-color-window-invert";
"volume_scroller@francislavoie.github.io" = "volume-scroller-2";
# ############################################################################
# Overrides for extensions that were manually packaged in the past but are gradually
@@ -9,7 +9,7 @@ import urllib.error
import urllib.request
from operator import itemgetter
from pathlib import Path
from typing import List, Dict, Optional, Any, Tuple
from typing import List, Dict, Optional, Any, Tuple, Set
# We don't want all those deprecated legacy extensions
# Group extensions by GNOME "major" version for compatibility reasons
@@ -302,15 +302,21 @@ if __name__ == "__main__":
json.load(out)
with open(updater_dir_path / "collisions.json", "w") as out:
# Find the name collisions only for the last 3 shell versions
last_3_versions = sorted(supported_versions.keys(), key=lambda v: float(v), reverse=True)[:3]
package_name_registry_for_versions = [v for k, v in package_name_registry.items() if k in last_3_versions]
# Merge all package names into a single dictionary
package_name_registry_filtered: Dict[PackageName, Set[Uuid]] = {}
for pkgs in package_name_registry_for_versions:
for pname, uuids in pkgs.items():
if pname not in package_name_registry_filtered:
package_name_registry_filtered[pname] = set()
package_name_registry_filtered[pname].update(uuids)
# Filter out those that are not duplicates
package_name_registry_filtered: Dict[ShellVersion, Dict[PackageName, List[Uuid]]] = {
# The outer level keys are shell versions
shell_version: {
# The inner keys are extension names, with a list of all extensions with that name as value.
pname: extensions for pname, extensions in collisions.items() if len(extensions) > 1
} for shell_version, collisions in package_name_registry.items()
}
json.dump(package_name_registry_filtered, out, indent=2, ensure_ascii=False)
package_name_registry_filtered = {k: v for k, v in package_name_registry_filtered.items() if len(v) > 1}
# Convert set to list
collisions: Dict[PackageName, List[Uuid]] = {k: list(v) for k, v in package_name_registry_filtered.items()}
json.dump(collisions, out, indent=2, ensure_ascii=False)
out.write("\n")
logging.info(