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

"Set" classes are not iterable

Aberta
#65 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Python
Estrelas
6
Forks
16
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece pelas classes Set, incluindo tsp.trace_set.TraceSet, e localize as implementações de ExperimentSet, TraceSet, ConfigurationParameterDescriptorSet, ConfigurationSet, ConfigurationSourceSet e OutputDescriptorSet. Compare o comportamento atual delas como coleções com os padrões de acesso na issue e no commit de exemplo vinculado. Considera-se concluído quando cada classe puder ser iterada diretamente e informar seu tamanho com len(), enquanto a indexação permanece opcional.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
api
Tipo de issue
Funcionalidade
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
52/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.