eclipse-cdt-cloud / eclipse-cdt-cloud/tsp-python-client

"Set" classes are not iterable

Abierto
#65 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
6
Forks
16
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

The Set classes, `ExperimentSet`, `TraceSet`, `ConfigurationParameterDescriptorSet`, `ConfigurationSet`, `ConfigurationSourceSet` and `OutputDescriptorSet` are not usable by themselves as collections.

This gives you access patterns like:
```python3
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:
```python3
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:
```python3
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](https://github.com/awendelin-work/tsp-python-client/commit/025576dccb9c7239e343c872153fe160973c9425).

`__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.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.