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_args : list of tuples

Specs for mandatory arguments

optional_args_list : list of lists of tuples

Specs for each optional arguments set

argv : list of strings (optional)

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

Returns:
args : dictionary

The parsed mandatory arguments

kwargs : dictionary

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 protected]',
...           '--favorite-food=spaghetti']
... )
>>> print(args)
{'name': 'John Doe'}
>>> print(kw_info)
{'email': '[email protected]'}
>>> print(kw_fav)
{'favorite_color': 'pink', 'favorite_food': 'spaghetti'}