D3f0 / D3f0/ipython_gcc

exec wrapper run API

Aperta
#3 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
0
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Once a gcc cell is defined, it should be nice to have a wrapper for the generated code.

Expected API:

```
%%gcc foo.c
#include

int main(int argc, char ** argv) {
for (int i = 0; i < argc; i++) {
printf("%d: %s\n", i, argv[i]);
}

return 0;
}
```

Once this cell is run, the executable should be built and wrapped in a Python `foo` object.
This object will have a `run` method that accepts `*args` and `**kwargs`:
- Uppercase kwargs are treated as enviroment variables
- Lowercase casted to string are passed as arguments.

``` python
foo.run('1', 'b', 'c', PATH="/bin")
```

It would be nice to have the env before the args, so this should be equivalent to:

``` python
foo.env(PATH="/bin").run('a', 'b', 'c')
```

Envieroment variables and arguments that receive iterators should execute many times.

**IDEA** Maybe run could be a lazy object that is evaluated within first display...

``` python
foo.env(A=1).run(range(1, 100)).time()
# Maybe too crazy

foo.env(OMP_NUM_THREADS=range(1, 4).run().time()

```

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia individuando l’implementazione esistente della cella %%gcc e comprendendo come vengono compilati ed esposti gli eseguibili generati. Definisci la più piccola API confermata intorno al wrapper foo, includendo run, env, gli argomenti e le variabili d’ambiente in maiuscolo; considera l’esecuzione degli iteratori e la valutazione lazy del tempo come idee separate non ancora risolte. Il lavoro è completato quando il comportamento documentato di foo.run e foo.env funziona per l’esempio mostrato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
jupyter, python
Ambito
developer-experience, tooling
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.