-
Notifications
You must be signed in to change notification settings - Fork 3
Open
2 / 52 of 5 issues completedDescription
Hier soll überlegt werden, wie statische und dynamische Abhängigkeiten eines QPy-Pakets zu anderen Paketen behandelt werden sollen.
Was sollen die Abhängigkeiten machen?
- natürlich sollen sie Python-seitig Funktionen bereitstellen können, die vom Hauptpaket aufgerufen werden können
- sie sollen auch statische Dateien wie z.B. JavaScript enthalten können
- z.B. bei dem künftigen Feature "Routes" sollen sie eigene Routes registrieren können
Die letzten beiden Punkte erfordern, dass alle Pakete (auch reine Library-Pakete) eine init Funktion haben. Dafür existiert auch bereits das BasePackageInterface.
Statische Abhängigkeiten
- sind in der ZIP-Datei zusammen mit dem Hauptpaket enthalten, entpackt?
- müssen beim Bauen des Hauptpakets in einem definierten Unterordner liegen
- das
questionpypackage könnte zu einem QPy-Paket ausgebaut werden und vorerst implizit als statische Abhängigkeit mitpaketiert werden
Dynamische Abhängigkeiten
- werden in der
qpy_config.ymldefiniert und zur Laufzeit vom Application Server geladen - die statischen und dynamischen Abhängigkeiten können rekursiv weitere dynamische Abhängigkeiten beinhalten?
- die konkreten Abhängigkeiten (Paket und Version) beim Bauen festhalten (im Manifest locken) vs. der Application Server löst sie auf
- eine Abhängigkeit kann auch als "web-only" (oder so ähnlich) definiert werden, d.h. sie wird vom Application Server nicht in den Worker geladen, z.B. MathJax, das einige MB umfasst und im Worker keinen Nutzen hat, da es nur statische Dateien (JS und Fonts) beinhaltet
Implementierungsfragen
- Ist die Reihenfolge relevant, in der das Hauptpaket und die Abhängigkeiten ausgeführt werden (d.h. ihre
initFunktionen)? - IDE: die Abhängigkeiten sollten für die Entwicklung des Hauptpakets so verfügbar gemacht werden können, dass Importe ordentlich funktionieren, sowohl Python als auch JS.
- Das LMS hat die Möglichkeit, "web-only" Pakete auszutauschen, z.B. MathJax wird selber kompatibel bereitgestellt
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels