Modul orbit_framework.index¶
Dieses Modul unterstützt das Nachrichtensystem von ORBIT mit einer hierarchischen Indexstruktur.
Das Modul enthält die folgenden Klassen:
MultiLevelReversedIndex¶
- class orbit_framework.index.MultiLevelReverseIndex(attributes, item_attribute_selector=getattr, lookup_attribute_selector=getattr)¶
Diese Klasse implementiert eine hierarchischen Indexstruktur mit Unterstützung für mehrstufige Schlüssel einschließlich Gruppen und Wildcards im Schlüssel.
Parameter
attributes
Eine Liste mit den Namen der Indexattribute.
item_attribut_selector
(optional)Eine Funktion die beim Hinzufügen eines Objektes mit
add()
verwendet wird, um den Attributwert unter Angabe des Objektes und des Attributnamens zu ermitteln. Standardwert istgetattr()
.lookup_attribut_selector
(optional)Eine Funktion die beim Look-Up mit
lookup()
verwendet wird, um den Attributwert unter Angabe des Schlüsselobjektes und des Attributnamens zu ermitteln. Standardwert istgetattr()
.
Beschreibung
Der Index wird mit einer Liste von Attributnamen (Indexattribute) initialisiert. Jedes Indexattribut steht für eine Ebene des hierarchischen Index.
Gruppen für jedes Indexattribut können mit
add_group()
unddelete_group()
verwaltet werden.Objekte werden mit
add()
hinzugefügt und anhand der Indexattribute indiziert. Die Attributwerte des Objektes können konkrete Werte, ein Gruppennamen oder None als Wildcard sein.Ein Look-Up erfolgt mit
lookup()
und der Angabe eines Schlüsselobjekts. Ein Schlüsselobjekt besitzt wie die indizierten Objekte alle Indexattribute. Zurückgegeben werden bei einem Look-Up alle Objekte, deren Attributwerte zum angegebenen Schlüsselobjekt passen.- add(item)¶
Fügt dem Index ein Objekt hinzu. Das Objekt wird anhand der Indexattribute indiziert.
Die Werte der Indexattribute können konkrete Werte, Gruppennamen oder None als Wildcard sein.
- add_group(attribute, group, keys)¶
Fügt dem Index eine Gruppe für ein Attribut hinzu.
attribute
Der Name des Indexattributes für das eine Gruppe eingerichtet werden soll.
group
Der Gruppenname unter dem Objekte indiziert werden können.
keys
Eine Sequenz von Werten die bei Look-Ups zu Objekten führen welche unter dem Gruppennamen indiziert wurden.
- delete_group(attribute, group)¶
Entfernt eine Gruppe für ein Attribut aus dem Index.
attribute
Der Name des Indexattributes für das die Gruppe entfernt werden soll.
group
Der Name der Gruppe.
- is_empty()¶
Gibt
True
zurück, wenn der Index kein Objekt enthält, sonstFalse
.Der Index ist auch dann leer, wenn Gruppen eingerichtet, aber keine Objekte indiziert wurden.
- lookup(key_obj)¶
Ruft eine Liste mit allen Objekten ab, deren indizierte Attributwerte zu den Attributwerten des übergebenen Schlüsselobjektes passen.
Damit ein Objekt im Ergebnis enthalten ist, müssen alle Indexattribute passen. Ein Indexattribut passt
wenn der indizierte Attributwert gleich dem Schlüsselattribut ist
oder das indizierte Attribut ein Gruppenname und das Schlüsselattribut in dieser Gruppe ist,
oder das indizierte Attribut None ist.
- remove(item)¶
Entfernt ein Objekt aus dem Index.