lib.item: add methods for list/dict manipulation #620
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ich habe als Vorschlag und zur Diskussion mal meine Idee zum Handling von dicts und lists in Items ergänzt.
Martins Implementation ist unverändert, allerdings legt das Item je nach Typ die folgenden Item-Funktionen an:
list: append, prepend, insert, pop, extend, clear, delete, remove
dict: get, delete, clear, pop, popitem, update
delete statt del, weil del als reserviertes Wort nicht nutzbar ist.
Die Funktionen lassen sich quasi 1:1 wie die originalen list-/dict-Funktionen nutzen, z.B.
Zusätzlich können allen Funktionen die Parameter
caller
,source
,dest
mitgegeben werden.Intern rufen die Funktionen alle
__call__
auf, so dass alle notwendigen Item-Mechaniken durchlaufen werden.Ich sehe das Problem, dass für
remove
,pop
usw. noch weitere zusätzliche Parameter an__call__
übergeben werden müssen und die Auswertung, welche Parameter und welche nicht übergeben wurden, schnell sehr unübersichtlich und komplex wird.Das soll keine Kritik an Martins Implementation sein und kein Ersatz, sondern eine Ergänzung (append, prepend, get rufen sogar mit "seiner" neuen Syntax
__call__
auf...).Ob wir das annehmen wollen oder nicht, wäre ggf. zu diskutieren.
Die Methoden sind alle einzeln getestet. Automatische Tests kann ich leider nicht ohne Weiteres einbauen, weil die Initialisierung der Item-Klasse nicht "normal" durchlaufen wird.