The Set classes, ExperimentSet, TraceSet, ConfigurationParameterDescriptorSet, ConfigurationSet, ConfigurationSourceSet and OutputDescriptorSet are not usable by themselves as collections.
This gives you access patterns like:
from tsp.trace_set import TraceSet
traces = TraceSet([{"name": "trace0"}, {"name": "trace1"}])
for trace in traces.traces:
print(t.name)
# trace0
# trace1
print(len(traces.traces))
# 2
This is especially inconvenient when working with experiments, since to loop over traces, you must do:
for t in experiment.traces.traces
We could make the classes easier to work with by making them implement collection interfaces.
This would give you the following access patterns instead:
from tsp.trace_set import TraceSet
traces = TraceSet([{"name": "trace0"}, {"name": "trace1"}])
for trace in traces:
print(t.name)
# trace0
# trace1
print(len(traces))
# 2
See example in this commit.
__getitem__ could be implemented as well to allow indexing with integers (traces[0]), but it is not implemented for Python sets, so it would make the "Set" classes look less like sets.
If this kind of functionality is wanted, I can help provide patches.
The Set classes,
ExperimentSet,TraceSet,ConfigurationParameterDescriptorSet,ConfigurationSet,ConfigurationSourceSetandOutputDescriptorSetare not usable by themselves as collections.This gives you access patterns like:
This is especially inconvenient when working with experiments, since to loop over traces, you must do:
We could make the classes easier to work with by making them implement collection interfaces.
This would give you the following access patterns instead:
See example in this commit.
__getitem__could be implemented as well to allow indexing with integers (traces[0]), but it is not implemented for Python sets, so it would make the "Set" classes look less like sets.If this kind of functionality is wanted, I can help provide patches.