Tuple of strings parsed as string if one of the strings contains a hyphen
Author: kjxlstadCreated Sep 25, 2024Updated Jul 7, 2026
When parsing in a tuple of strings i can normally pass in comma-separated values with no issues, however if one of the values contains a hyphen the arguments gets parsed as a string instead of a tuple of strings.
Using your provided example.py script
import fire
fire.Fire(lambda obj: type(obj).__name__)If i call it with multiple strings not containing hyphens i get the expected output
>>> python example.py '(foobar,baz)'
tuplehowever, if I call it with a string containing a hyphen (-), I get this unexpected output
>>> python example.py '(foo-bar,baz)'
strIs this to be expected? I also see that this is an issue with other symbols aswell. Is there a way to work around this other than to pass in a repr-like string?
E.g, this works, but is not very human friendly:
>>> python example.py '("foo-bar","baz")'
tupleEdit: This is also the case for lists, sets and dicts containing strings.
Source: google/python-fire