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 ist getattr().

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 ist getattr().

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() und delete_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, sonst False.

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

  1. wenn der indizierte Attributwert gleich dem Schlüsselattribut ist

  2. oder das indizierte Attribut ein Gruppenname und das Schlüsselattribut in dieser Gruppe ist,

  3. oder das indizierte Attribut None ist.

remove(item)

Entfernt ein Objekt aus dem Index.