bayespy.utils.misc.parse_command_line_arguments

bayespy.utils.misc.parse_command_line_arguments(mandatory_args, *optional_args_list, argv=None)[source]

Parse command line arguments of style “–parameter=value”.

Parameter specification is tuple: (name, converter, description).

Some special handling:

  • If converter is None, the command line does not accept any value for it, but instead use either “–option” to enable or “–no-option” to disable.

  • If argument name contains hyphens, those are converted to underscores in the keys of the returned dictionaries.

Parameters
mandatory_argslist of tuples

Specs for mandatory arguments

optional_args_listlist of lists of tuples

Specs for each optional arguments set

argvlist of strings (optional)

The command line arguments. By default, read sys.argv.

Returns
argsdictionary

The parsed mandatory arguments

kwargsdictionary

The parsed optional arguments

Examples

>>> from pprint import pprint as print
>>> from bayespy.utils import misc
>>> (args, kwargs) = misc.parse_command_line_arguments(
...     # Mandatory arguments
...     [
...         ('name',     str,  "Full name"),
...         ('age',      int,  "Age (years)"),
...         ('employed', None, "Working"),
...     ],
...     # Optional arguments
...     [
...         ('phone',          str, "Phone number"),
...         ('favorite-color', str, "Favorite color")
...     ],
...     argv=['--name=John Doe',
...           '--age=42',
...           '--no-employed',
...           '--favorite-color=pink']
... )
>>> print(args)
{'age': 42, 'employed': False, 'name': 'John Doe'}
>>> print(kwargs)
{'favorite_color': 'pink'}

It is possible to have several optional argument sets:

>>> (args, kw_info, kw_fav) = misc.parse_command_line_arguments(
...     # Mandatory arguments
...     [
...         ('name',     str,  "Full name"),
...     ],
...     # Optional arguments (contact information)
...     [
...         ('phone', str, "Phone number"),
...         ('email', str, "E-mail address")
...     ],
...     # Optional arguments (preferences)
...     [
...         ('favorite-color', str, "Favorite color"),
...         ('favorite-food',  str, "Favorite food")
...     ],
...     argv=['--name=John Doe',
...           '--favorite-color=pink',
...           '--email=john.doe@email.com',
...           '--favorite-food=spaghetti']
... )
>>> print(args)
{'name': 'John Doe'}
>>> print(kw_info)
{'email': 'john.doe@email.com'}
>>> print(kw_fav)
{'favorite_color': 'pink', 'favorite_food': 'spaghetti'}