BlackJack hat geschrieben:der Benutzer muss beim Aufruf des Programms gegenüber der Vorgängerversion nichts beachten und hat auch keine neuen Einstellungen oder Kommandozeilenoptionen.
Doch, er kann seine Konfigurationsdatei ggf. um die neu hinzugefügten Bibliotheken erweitern.
BlackJack hat geschrieben:Beim Quelltext fällt als erstes auf das die Einrückung von den üblichen vier Leerzeichen pro Ebene abweicht.
Der Standard war mir neu. Gibt es da einen "Auto-Formatter", um mir solcherlei Fauxpas künftig zu ersparen?
BlackJack hat geschrieben:Es gibt in der Standardbibliothek ein `logging`-Modul, da sollte man sich keine eigenen `debuglog()`-Funktionen basteln müssen.
Die
genau das Gleiche tut?
BlackJack hat geschrieben:Und im *Fehlerfall* sollte ein Prozess nicht den Exit-Code 0 zurückgeben, denn das ist der Code für „lief fehlerfrei“.
Danke, ich ändere das mal.
BlackJack hat geschrieben:Ein nacktes ``except:`` ohne eine konkrete Ausnahme ist in der Regel keine vernünftige Ausnahmebehandlung.
Das habe ich (ebenso wie ``Exception``) eigentlich weitgehend eliminiert, es ist nur noch da, wo
alles Mögliche auftreten kann, vorhanden.
BlackJack hat geschrieben:Was soll das `h` bei `hConfig` bedeuten?
"handle". Entschuldige - Python ist bei Weitem nicht meine erste Sprache. Ich ändere das auch mal.
BlackJack hat geschrieben:Die Aufteilung des Codes ist eigenartig.
Ist "historisch gewachsen" (guck' lieber nicht ins git-Log)...
BlackJack hat geschrieben:Warum heist das erste Argument `thislib`, also was hat das `this` dort zu suchen?
"Die, die gerade dran ist". Oder verstehe ich meinen eigenen Code falsch?
BlackJack hat geschrieben:Die Funktion gibt auch wieder entweder einen Wahrheitswert oder `None` zurück → komische API.
Ist tatsächlich nicht dafür gemacht, dass sie von Drittanbieterprogrammen mitbenutzt wird. 'tschuldigung! Ich ändere das gleich mit.
BlackJack hat geschrieben:Statt ``matches[0]`` für die Versionsnummer zu nehmen wäre eine benannte Gruppe besser, dann muss man keine Klammern zählen oder darauf achten wo man „non capturing“ Gruppen verwendet. Wobei ich gerade sehe das `findall()` verwendet wird, davon dann immer nur der erste Treffer — womit `findall()` irgendwie unsinnig ist.
Gibt es auch ein einfaches ``find``, das ich dann mit ``match`` füttern könnte?
BlackJack hat geschrieben:Der erste Kommentar in `parse_library()` ist inhaltlich falsch und zwei von drei Kommentaren in ``except``-Zweigen weil die offenbar einfach *kopiert* worden sind und inhaltlich nicht mehr zu der neuen Code-Stelle passen.
Der erste: Naja, eigentlich nicht, die Funktion wird ja in einer Schleife aufgerufen; aber ich ändere den schnell. Die anderen beiden stimmen: Das kann nur passieren, wenn die Definitionsdatei kaputt ist.
(Ich gebe zu, sie könnten ausführlicher sein.)
BlackJack hat geschrieben:Pfadteile sollte man mit `os.path.join()` zusammensetzen. Und den gleichen Pfad sollte man nur einmal zusammensetzen und nicht mehrfach.
Du hast Recht, danke.
BlackJack hat geschrieben:``pass`` macht nur in ansonsten leeren Blöcken Sinn.
Ah, ich dachte, damit könnte ich den Fehler als abgefangen kennzeichnen. Was tut es denn?
BlackJack hat geschrieben:Und an der Stelle sollte ganz bestimmt auch etwas anderes passieren, denn wenn die Webseite nicht geladen werden konnte, dann läuft der nachfolgende Code unweigerlich in einen `NameError` weil `matches` dann nicht definiert ist, was dann von einem wieder sehr groben ``except Exception`` „behandelt“ wird.
Ja, ``return False`` wäre vermutlich klüger, danke. Obwohl ...
BlackJack hat geschrieben:Und auch die `parse_library()`-Funktion gibt `True`, `False`, oder `None` zurück.
Gleich nicht mehr.
BlackJack hat geschrieben:Kann es sein dass das mit den Wahrheitswerten so ein PHP-Ding ist?
Ja, tatsächlich. Wobei man in PHP ja auf viele "strenge" Sprachkonsturkte gern mal verzichtet. Rückgabewerte? Im Bestfall is' alles "void", wir machen dafür nicht ständig ``try`` und ``catch`` ...
Danke für die Aufklärung. Ich korrigiere das Gröbste gleich.