Belle II Software  release-08-01-10
modules.py
1 #!/usr/bin/env python3
2 
3 
10 
11 import sys
12 import pybasf2
13 from basf2.utils import print_all_modules, print_params
14 from basf2.core import set_log_level
15 from terminal_utils import Pager
16 
17 
18 def print_module_list(modName=None):
19  """
20  This wraps around the ``print_all_modules`` function but sanitizes potential command line arguments before doing so.
21 
22  Parameters:
23  modName: Can be the name of a module or package. Prints more information about a specific module or reduces the output
24  to requested package.
25  """
26 
27  # Do not show INFO messages in module list (actually a problem of the module)
28  set_log_level(pybasf2.LogLevel.WARNING)
29 
30  # Get the list of available modules
31  avModList = pybasf2.list_available_modules()
32 
33  if modName is not None:
34  # If exactly one argument is given, print the specified module.
35  if modName in avModList:
36  try:
37  current_module = pybasf2._register_module(modName)
38  with Pager('Module information for "%s"' % (modName), quit_if_one_screen=True):
39  print_params(current_module, False, avModList[modName])
40  except pybasf2.ModuleNotCreatedError:
41  pybasf2.B2FATAL('The module could not be loaded.')
42  except Exception as e:
43  pybasf2.B2FATAL("An exception occured when trying to create the module: %s" % e)
44 
45  elif modName == modName.lower():
46  # lower case? might be a package instead
47  with Pager('List of modules in package "%s"' % (modName)):
48  print_all_modules(avModList, modName)
49  else:
50  pybasf2.B2FATAL('Print module information: A module with the name "' +
51  modName + '" does not exist!')
52  else:
53  # Otherwise print all modules.
54  with Pager('List of all basf2 modules'):
55  print_all_modules(avModList)
56 
57 
58 if __name__ == "__main__":
59  try:
60  argument = sys.argv[1]
61  except IndexError:
62  argument = None
63  finally:
64  print_module_list(argument)