Changelog
2.0.0 (2025-10-??)
🚀 Neue Funktionen
- Vollumfänglicher Support für Lehrer- und Raumpläne hinzugefügt, Support für Klassenpläne vervollständigt 
- Parameter - portzu- Vertretungsplanhinzugefügt
- Enumerator - Stundenplan24Pfadehinzugefügt, der die Standardpfade auf stundenplan24.de enthält
- Submodul - confighinzugefügt, das Parameter für das Parsing enthält
- Datenmodelle können mit - .as_dict()in ein sauberes JSON-kompatibles Dictionary umgewandelt werden
- Konversionsfunktionen zwischen - VertretungsTag-Datenmodellen in- extensions.reparserhinzugefügt
Lehrer- & Raumpläne
Im Rahmen der Einführung neuer Vertretungsplantypen wurden einige Datenmodelle in Basis- und Unterklassen aufgeteilt. Die drei Vertretungsplanklassen KlassenVertretungsTag, LehrerVertretungsTag und RaumVertretungsTag erben von einer neuen Basisklasse, die grundlegendes Verhalten für Pläne enthält. Die einzelnen Planklassen bringen dann noch weitere Funktionen mit.
Neue Klassen sind:
- VertretungsTag- Basisklasse für Vertretungspläne 
- Erzeugt beim Instanzierungsversuch eine Instanz einer ihrer Subklassen 
- Kann mit - isinstance()als Protokoll für alle Vertretungspläne genutzt werden
 
- LehrerVertretungsTag- Subklasse von - VertretungsTag
- Hat - .lehrerund- .get_lehrer()
 
- RaumVertretungsTag- Subklasse von - VertretungsTag
- Hat - .räumeund- .raum()
 
- Lehrer- Das Lehrerplan-Äquivalent zu - Klasse
- Wird von - LehrerVertretungsTag.lehrererzeugt
 
- Raum- Das Raumplan-Äquivalent zu - Klasse
- Wird von - RaumVertretungsTag.räumeerzeugt
 
- Aufsicht- Ein primitives Datenmodell, ähnlich zu - Stunde, das Informationen über eine Lehreraufsicht enthält
- Hat - .vorStunde,- .uhrzeit,- .zeitund- .ort
- Wird von - Lehrer.aufsichtenerzeugt
 
- Klausur- Ein primitives Datenmodell, ähnlich zu - Aufsicht, das Informationen über eine Klausur enthält
- Wird von - Klasse.klausurenerzeugt
 
🔧 Änderungen
- Vertretungsplanund- .fetch()wurden angepasst, um die neuen Vertretungsplanarten verarbeiten zu können
- Vertretungsplan.bulkfetch()wurde entfernt
- InvalidCredentialsErrorwurde in- Unauthorizedumbenannt
- VertretungsTag.freieTagegibt statt- Nonenun- []zurück
- VertretungsTag.datumparst jetzt nicht mehr den Dateinamen sondern den XML-Tag- DatumPlan
- VertretungsTag.klassen,- .lehrerund- .räumegeben nun ein Dictionary zurück. Die Schlüssel sind die jeweiligen Kürzel, die Werte sind die jeweiligen Klasseninstanzen
- VertretungsTag.klasse(),- .get_lehrer()und- .raum()wurden entfernt
- Klasse.stundenHeutewurde in- .stundenund- .stundenHeuteInPeriodein- .stundenInPeriodeumbenannt
- Klasse.stundenInPeriode()gibt nun- []statt- Nonezurück
- Klasse.kursegibt nun ein Dictionary zurück. Die Schlüssel sind die jeweiligen Kürzel, die Werte sind die jeweiligen Kursinstanzen
- Stunde.raumwurde durch- Stunde.räumeersetzt, das nun eine Liste von Strings zurückgibt. Statt- Nonewird- []zurückgegeben
- Stunde.lehrergibt nun eine Liste von Strings zurück. Statt- Nonewird- []zurückgegeben
- Stunde.ausfallist nun auch- True, wenn die Stundeninfo- "selbst"enthält und Lehrer und Räume nicht vorhanden sind
- Kurs.gruppewurde in- .kürzelumbenannt. Es gibt jetzt als Fallback- .fachzurück
- Alle Properties, die Klassen, Lehrer oder Räume zurückgeben, verwenden nun das Trennzeichen, das in - config.SEPARATORfestgelegt werden kann, um Mehrfachnennungen zu trennen
- Alle Properties wurden - None-sicher gemacht, sodass sie nun keine Fehler mehr werfen können, sollte ein Tag in der Quelldatei unerwarteter Weise nicht vorhanden sein
- Aufzählungen von Klassen können nun auch Bereiche (z.B. - "5a-7c") enthalten und werden aufgelöst. Das Format einer Klassenbezeichnung kann in- configdurch ein Pattern konfiguriert werden. Die Capturing Groups- stufeund- suffixmüssen enthalten sein
Vertretungsplan und .fetch()
Vertretungsplan und .fetch()Vertretungsplan ist nun so konzipiert, dass es ein Standardpfadschema für Dateiabrufe gibt. Andere Dateien können in .fetch() dennoch weiterhin abgerufen werden.
- Parameter - vezeichnisund- dateinamenschemavon- .fetch()wurden in- dateipfadschemazusammengeführt
- Wenn - .fetch()mit dem Parameter- dateiangegeben wird, ersetzt das den Standarddateipfad.- dateikann, wie- Vertretungsplan.dateipfadschemamit Platzhaltern des datetime-Moduls und dem Platzhalter- schulnummerverwendet werden
🪲 Bug Fixes
- VertretungsTag.lehrerKrankwirft einen Fehler, wenn es einen Kurs gibt, der keinen Lehrer hat
1.1.0 (2025-08-27)
🚀 Neue Funktionen
- Weitere Funktionalität zum verarbeiten von von Indiware-Software bereitgestellter Daten ist nun im Submodul - extensionsverfügbar
- Kurse und deren Schüler einer Klasse können nun mit - vpmobil.extensions.einzpläne.kurse()aus EinzPläne-PDF-Dateien gelesen werden
- Tutoren und deren Schüler einer Klasse können nun mit - vpmobil.extensions.einzpläne.tutoren()aus EinzPläne-PDF-Dateien gelesen werden
🔧 Änderungen
- VpDaywurde in- VertretungsTagumbenannt
- vpmobil.parsefromfile()wurde nach- vpmobil.VertretungsTag.fromfile()verschoben und kann nun nicht mehr direkt importiert werden
- Das Projekt ist nun unter European Union Public License 1.2 lizensiert 
- Ein paar Docstrings wurden konkretisiert oder weisen nun auf mögliche Inkonsistenzen hin 
- Vertretungsplan.fetchall()wurde in- Vertretungsplan.bulkfetch()umbenannt
🪲 Bug Fixes
- Vertretungsplan.fetchall()raised nicht- ResourceNotFoundsondern- IndiwareFetchingError, wenn keine Pläne gefunden wurden
1.0.1 (2025-08-03)
🪲 Bug Fixes
- from vpmobil import *importiert nichts
1.0.0 (2025-08-03)
🚀 Neue Funktionen
- Ein bestimmter Kurs kann per Kursnummer mit - Klasse.kurs()erhalten werden
🔧 Änderungen
- Neustrukturierung der gesammten Kernfunktionalität durch die Verwendung modernerer Syntax 
- Die Werkzeugklasse - workflowwurde aufgelöst. Alle Klassen, Funktionen und Exceptions können einfach aus- vpmobilimportiert werden
- Die meisten Funktionen und Eigenschaften gegeben nun - Nonezurück statt einen Fehler zu werfen, wenn in den XML-Daten nichts gefunden wird
- Einige unhandliche und unnötige Methoden von - Klassewurden entfernt
- Ein paar Exceptions wurden umbenannt, entfernt oder durch built-ins ersetzt 
- Einige Module wurden zusammengeführt und umbenannt 
🪲 Bug Fixes
- In der Nachricht des - FetchingErrors, der bei- Vertretungsplan.fetch()geworfen wird, wird die Datei, die nicht abgerufen werden konnte, nicht richtig benannt
⚠️ Bekannte Probleme
- VpDay.lehrerKrankbehandelt mehrere in einem Kurs oder einer Stunde angeführte Lehrer nicht mehr separat
0.4.2 (2024-12-28)
🔧 Änderungen
- Werkzeugsammlungsklasse von - vpmobil.VpMobilin- vpmobil.workflowumbenannt
Zuletzt aktualisiert