Beim Upgrade von openSUSE Leap 15.3 auf openSUSE Leap 15.4 ergibt sich bei pre-commit ein interessantes Problem. Auf älteren Versionen von Leap konnte das Paket aus dem Entwicklungsprojekt devel:languages:python installiert werden. Dort findet sich aber keine Version für Leap 15.4. Eine solche findet sich jetzt in meinem Projekt home:theMarix:py36 und lässt sich von dort einfach installieren:

zypper addrepo https://download.opensuse.org/repositories/home:theMarix:py36/15.4/home:theMarix:py36.repo
zypper refresh
zypper install python3-pre-commit

Das Problem entsteht, weil pre-commit es bisher nicht in die Distribution geschafft hat. Das ist normalerweise kein Problem, weil die Pakete in den Entwicklungsprojekten auch für alle aktuellen Versionen von Leap gebaut werden. Speziell bei Leap 15.4 ist hier aber etwas interessantes passiert. pre-commit hat in Version 2.17.0 verständlicherweise die Unterstützung für Python 3.6 fallengelassen. Allerdings setzt Leap 15.4 aus Kompatibilitätsgründen noch auf diese Version von Python. Da jetzt aber das Upgrade auf 2.17.0 in devel:languages:python passierte bevor Leap 15.4 angelegt wurde, wurde die letzte mit Python 3.6 lauffähige Version 2.16.0 nie für Leap 15.4 gebaut. Anders für Leap 15.3, für das genau diese Version bis zuletzt noch installierbar war.

Im Projekt home:theMarix:py36 befindet sich jetzt einfach ein Link auf die letzte Revision des Pakets in devel:languages:python die noch mit Python 3.6 kompatibel war. So gibt es jetzt zwar leider keine aktuelle Version von pre-commit für Leap 15.4, aber immerhin eine ohne Verrenkungen nutzbare, die mit dem Update auf 15.5 wird sich dass dann ganz von alleine wieder auf das aktuelle Paket wechseln wird. Und auch wenn das jetzt wahnsinnig aufwendig klingt, der Zeitaufwand das Paket anzulegen war geringer als der diesen Artikel zu schreiben.