pyperf is incompatible with click
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
Direzione di ricerca
Esegui lo script minimo riproducibile dell’issue con click 7.1.1 e pyperf 2.0.0, quindi esamina pyperf/_runner.py intorno alle righe 126-129, dove viene usato argparse. Traccia il modo in cui Runner gestisce i propri argomenti quando viene invocato all’interno del comando click. Il lavoro è completato quando la riproduzione non invia più a click opzioni di pyperf come --worker, mentre l’invocazione prevista del benchmark rimane supportata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When a script calls pyperf.Runner.bench_func from a script that uses click to handle arguments, it raises an exception in pyperf's argument parsing logic. Here is a minimal reproducing script:
import click
import pyperf
@click.command()
def cli():
def f():
pass
runner = pyperf.Runner()
runner.bench_func("Example", f)
if __name__ == "__main__":
cli()
Here's a requirements.txt, pinned to the versions I have tried this with:
click==7.1.1
pyperf==2.0.0
The error message is:
$ python my_benchmark.py
Usage: my_benchmark.py [OPTIONS]
Try 'my_benchmark.py --help' for help.
Error: no such option: --worker
I believe that the issue is that pyperf.Runner is directly using argparse to add its own command line arguments, which is not really the behavior I would expect from a library.
It might be a lot to ask, but I think a better option would be to refactor this into a config object that can also be constructed automatically from the parser, something like this:
import attr
@attr.s(auto_attrib=True)
class RunnerConfig:
verbose: bool = False
quiet: bool = False
pipe: int = None
...
@classmethod
def from_argparse(cls, argparser=None):
if argparser is None:
argparser = argparse.ArgumentParser()
parser.description = "Benchmark"
....
args = argparser.parse_args()
return cls(verbose=args.verbose, quiet=args.quiet, pipe=args.pipe, ...)
To avoid backwards incompatibility issues, you can add a flag to Runner like use_argparse=True, which users of click could set to False to avoid this problem.
- Lingua principale
- Python
- Stelle
- 967
- Fork
- 112
- Merge medio
- 5g 8h
- PR unite (30g)
- 9
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di psf/pyperf
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
Improve Type System for `pyperf`Forse già presa @DebanKsahu l’ha presa 69 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 32/100
I maintainer di solito rispondono entro 1 giorno
-
Extend hook's teardown metadata with warmup/calibration flagsForse già presa @maurycy l’ha presa 170 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
psf/pyperf#239 · 12 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
add entry to blockAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"Forse già presa @0z5a l’ha presa oggi. Apertaneeds-triage
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
plot_graph crashes when a mesh node has no m2m edgeForse già presa @tygvi l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
mllam/neural-lam#883 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
future-agi/future-agi#4092 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
transcript analytics: a text whose only protected spans the prose pass redacts is withheld wholeAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
WingedGuardian/GENesis-AGI#4641 ·
I maintainer di solito rispondono entro 1 giorno