hamarituc / dfs-aip

Skripte zur Aufbereitung der DFS AIP
Other
6 stars 2 forks source link

Python Package erstellen #5

Open fpletz opened 1 month ago

fpletz commented 1 month ago

Wir von VATSIM Germany haben von der DFS die Erlaubnis die AIP elektronisch zu verarbeiten. Unter anderem möchte ich gerne zum Schnellzugriff auf Seiten einen Suchindex über die Seitennamen und Inhalte aufbauen und in unser ATCISS einbauen. Dazu möchte ich gerne den Code in diesem Repo in ein vollwertiges Python Modul bzw. Package umbauen und im ATCISS als Dependency benutzen.

Das ganze möchte ich natürlich wieder zurück liefern, jedoch werde ich an der Struktur des Repos und des Codes ein paar Änderungen vornehmen müssen. Dazu würde ich mir gerne Feedback wünschen damit ich die Änderungen, sofern gewünscht, hier reibungslos rein bekomme und ich nicht wieder alles umschreiben muss. :wink:

Ich plane folgende Änderungen:

Danke für dieses Projekt! :heart:

hamarituc commented 1 month ago

Wir von VATSIM Germany haben von der DFS die Erlaubnis die AIP elektronisch zu verarbeiten. Unter anderem möchte ich gerne zum Schnellzugriff auf Seiten einen Suchindex über die Seitennamen und Inhalte aufbauen und in unser ATCISS einbauen. Dazu möchte ich gerne den Code in diesem Repo in ein vollwertiges Python Modul bzw. Package umbauen und im ATCISS als Dependency benutzen.

Das ganze möchte ich natürlich wieder zurück liefern, jedoch werde ich an der Struktur des Repos und des Codes ein paar Änderungen vornehmen müssen. Dazu würde ich mir gerne Feedback wünschen damit ich die Änderungen, sofern gewünscht, hier reibungslos rein bekomme und ich nicht wieder alles umschreiben muss. 😉

Wow, das freut mich, dass das Tool auch in der Simulator-Welt nutzbar sein kann/soll/wird.

Ich plane folgende Änderungen:

* `pyproject.toml` in der die Metadaten, Dependencies und Entrypoints (Scripts/Executables) gepflegt werden.

Sehr gern. Das ganze Python-Paketbau-Universum war für mich bisher zu diffus, um mich damit für dieses Tool auseinanderzusetzen.

* [Poetry](https://python-poetry.org/) als Paketmanager/Builder (passt gut in mein sonstiges Tooling mit [Nix](https://nixos.org/))

Zu Poetry kann ich nichts sagen. Letztendlich erstellt es aber sicher eine .whl-Datei, richtig? Mache am besten einen Vorschlag und ich schaue es mir an.

* `aip` Modul ins Repo-Root ziehen und in `dfsaip` oder `dfs_aip` umbenennen.

Historisch enthält das Repo eigentlich zwei separate Projekte, die die selbe Funktion haben. Als die Papier-Version der AIP abgekündigt wurde, wurden alle bestehenden Abos auf die Online-AIP umgestellt. Hier erhält man PDFs von Einzelseiten bzw. Kapiteln zum Download. Das Tool im Verzeichnis online soll diese PDFs druckfertig in ein PDF montieren.

Als sich der OpenData-Gedanke bei der DFS durchsetzte, hoffte ich dass die Online-AIP freigegeben wird. Stattdessen gibt es aber die Basic-AIP, die die Einzelseiten nur als Rasterbilder zur Verfügung stand. Deswegen entstand später das Tool im Verzeichnis basic. Nur dieses Tool benötigt den Cache aus dem aip-Modul.

Ich würde gern beide Projekte weiter pflegen und getrennt halten. Wie wichtig ist es für die Paketierung das Modul ins Root-Verzeichnis umzuziehen? Wenn es unumgänglich ist, dann müsste ich das Git-Repo in zwei getrennte Projekte forken.

Die Umbenennung in dfsaip wäre OK.

* Das Cache-Handling der CLI von der reinen Library Funktionalität decouplen. Wir werden die TOC und die Seiten in einer Datenbank ablegen und nicht im Filesystem. Die CLI wird weiterhin wie gerade die Daten cachen.

Wie genau "entkoppeln" gemeint ist, müsste ich mir in einem konkreten Code-Vorschlag anschauen. Wenn das Caching in ein separates Modul ausgelagert wird und es mehrere Cache-Backends (Dateisystem vs. Datenbank) gibt, dann klingt das vernünftig.

* [aiohttpclient](https://docs.aiohttp.org/en/stable/client.html) für HTTP Requests mit durchreichen einer `ClientSession`. Wir möchten beispielsweise in allen unseren Requests einen `User-Agent` setzen damit die DFS unsere Requests nachvollziehen kann.

Das klingt sinnvoll. Ich freue mich auf einen Code-Vorschlag. Es wäre aber gut, wenn der Code auf das Standardverhalten zurückfällt, wenn keine Session übergeben wird.

Danke für dieses Projekt! ❤️

Es freut mich, wenn ich nicht der einzige Nutzer bin.