mis-assigned keyword arguments when two function parameters have the same name
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Comienza ejecutando los ejemplos proporcionados de script.py mediante el punto de entrada fire.Fire(Foo) y compara los argumentos posicionales con los argumentos de palabra clave repetidos. Rastrea cómo las invocaciones encadenadas de objetos invocables consumen los argumentos; se considera terminado cuando cada valor de --param se asigna a su método correspondiente y se mantienen intactos el comportamiento posicional existente y la finalización de comandos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Environment
Python 3.9.2
fire==0.4.0
Example Script
I have the following example script.py:
import fire
class Foo:
def __init__(self):
print("__init__")
def bar(self, param=0):
print(f"bar (param={param})")
return self
def baz(self, param=0):
print(f"baz (param={param})")
return self
def end(self):
return "end"
if __name__ == "__main__":
fire.Fire(Foo)
Example Usages (which demonstrate a problem)
When I use the script and provide the arguments by position, it works fine:
$ python script.py bar 3 baz 5 end
__init__
bar (param=3)
baz (param=5)
end
But when I provide the arguments by keyword, the output is different and the program brings up the command-line help text for Foo:
$ python script.py bar --param=3 baz --param=5 end
__init__
bar (param=5)
baz (param=end)
More examples:
$ python script.py bar --param=3 baz 5 end
__init__
bar (param=3)
baz (param=5)
end
$ python script.py bar 3 baz --param=5 end
__init__
bar (param=5)
ERROR: Could not consume arg: 3
Usage: fire_issue_eg.py bar 3 <command>
available commands: bar | baz | end
For detailed information on this command, run:
fire_issue_eg.py bar 3 --help
Thoughts
It looks like there is a problem:
- when Fire is running through two (or more) callable objects, and each object has an identically-named parameter (in the above example,
param) - when that parameter is provided on the command line via keyword on the 2nd(+) function called (in this example,
baz)
- Lenguaje dominante
- Python
- Estrellas
- 28.2k
- Forks
- 1.5k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de google/python-fire
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
google/python-fire#693 ·
-
Release 0.7.2? Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
google/python-fire#698 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
google/python-fire#672 · 5 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
google/python-fire#665 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
google/python-fire#659 · 1 comentario ·
Todos los issues de google/python-fire
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
learningequality/ricecooker#747 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
run-llama/llama_index#23199 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
KhronosGroup/glTF-Blender-IO#2769 ·