ATLAS Offline Software
Loading...
Searching...
No Matches
python.acmdlib.Command Class Reference

classes ----------------------------------------------------------------— More...

Inheritance diagram for python.acmdlib.Command:
Collaboration diagram for python.acmdlib.Command:

Public Types

typedef HLT::TypeInformation::for_each_type_c< typenameEDMLIST::map, my_functor, my_result<>, my_arg< HLT::TypeInformation::get_cont, CONTAINER > >::type result

Public Member Functions

 __init__ (self, fct, **kwargs)
 name (self)
 help (self)
 description (self)
 add_argument (self)
 __call__ (self, *args, **kwargs)
 add_mutually_exclusive_group (self, **kwargs)

Public Attributes

 fct = fct
 parser = self._make_parser(**kwargs)
 help
 description
 name

Protected Member Functions

 _make_parser (self, **kwargs)
 _init_arguments (self)

Protected Attributes

 _acmdlib_mutual_group = self.add_mutually_exclusive_group()

Detailed Description

classes ----------------------------------------------------------------—

A wrapper class to manage the creation of commands and their arguments

this is very heavily inspired from:
http://pypi.python.org/pypi/django-boss (MIT licence)

Definition at line 41 of file acmdlib.py.

Member Typedef Documentation

◆ result

Definition at line 90 of file EDM_MasterSearch.h.

Constructor & Destructor Documentation

◆ __init__()

python.acmdlib.Command.__init__ ( self,
fct,
** kwargs )

Definition at line 48 of file acmdlib.py.

48 def __init__(self, fct, **kwargs):
49 object.__init__(self)
50 self.fct = fct
51 self.parser = self._make_parser(**kwargs)
52 self._init_arguments()
53 plugin_name = kwargs.get('name') or self.name
54 register(plugin_name, self.fct.__module__)
55

Member Function Documentation

◆ __call__()

python.acmdlib.Command.__call__ ( self,
* args,
** kwargs )

Definition at line 75 of file acmdlib.py.

75 def __call__(self, *args, **kwargs):
76 return self.fct(*args, **kwargs)
77

◆ _init_arguments()

python.acmdlib.Command._init_arguments ( self)
protected

Definition at line 120 of file acmdlib.py.

120 def _init_arguments(self):
121 if hasattr(self.fct, '_acmdlib_arguments'):
122 while self.fct._acmdlib_arguments:
123 args, kwargs = self.fct._acmdlib_arguments.pop()
124 self.add_argument(*args, **kwargs)
125
126 if hasattr(self.fct,'_acmdlib_arguments_mutual'):
127 if not hasattr(self, '_acmdlib_mutual_group'):
128 self._acmdlib_mutual_group = self.add_mutually_exclusive_group()
129 while self.fct._acmdlib_arguments_mutual:
130 args, kwargs = self.fct._acmdlib_arguments_mutual.pop()
131 self._acmdlib_mutual_group.add_argument(*args, **kwargs)
132

◆ _make_parser()

python.acmdlib.Command._make_parser ( self,
** kwargs )
protected
Create and register a subparser for this command.

Definition at line 78 of file acmdlib.py.

78 def _make_parser(self, **kwargs):
79 """Create and register a subparser for this command."""
80
81 kwargs.setdefault('help', self.help)
82 kwargs.setdefault('formatter_class',argparse.RawDescriptionHelpFormatter)
83 kwargs.setdefault('description', self.description)
84 kwargs.setdefault('name', self.name)
85 names = (kwargs.get('name') or self.name).split('.')
86
87 def _get_subparser(a):
88 if a._subparsers:
89 for action in a._subparsers._actions:
90 if isinstance(action, argparse._SubParsersAction):
91 return action
92 raise RuntimeError('could not find adequate subparser')
93 return a.add_subparsers(dest='command',
94 title='commands',
95 metavar='COMMAND',
96 required=True,
97 )
98 def _get_parser(node, name):
99 if name in node.choices:
100 return node.choices[name]
101 args = {
102 'name' : name,
103 'help' : 'a group of sub-commands',
104 }
105 return node.add_parser(**args)
106
107 parser = ACMD_PARSER
108 for name in names[:-1]:
109 node = _get_subparser(parser)
110 parser = _get_parser(node, name)
111
112 node = _get_subparser(parser)
113 kwargs['name'] = names[-1]
114 parser = node.add_parser(**kwargs)
115 return parser
116
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177

◆ add_argument()

python.acmdlib.Command.add_argument ( self)

Definition at line 72 of file acmdlib.py.

72 def add_argument(self):
73 return self.parser.add_argument
74

◆ add_mutually_exclusive_group()

python.acmdlib.Command.add_mutually_exclusive_group ( self,
** kwargs )

Definition at line 117 of file acmdlib.py.

117 def add_mutually_exclusive_group(self, **kwargs):
118 return self.parser.add_mutually_exclusive_group(**kwargs)
119

◆ description()

python.acmdlib.Command.description ( self)

Definition at line 67 of file acmdlib.py.

67 def description(self):
68 if getattr(self.fct, '__doc__', None):
69 return textwrap.dedent(self.fct.__doc__)
70
std::string description
glabal timer - how long have I taken so far?
Definition hcg.cxx:91

◆ help()

python.acmdlib.Command.help ( self)

Definition at line 61 of file acmdlib.py.

61 def help(self):
62 if getattr(self.fct, '__doc__', None):
63 # just the first line of the doc string
64 return self.fct.__doc__.splitlines()[0]
65

◆ name()

python.acmdlib.Command.name ( self)

Definition at line 57 of file acmdlib.py.

57 def name(self):
58 return self.fct.__name__.replace('_','-')
59

Member Data Documentation

◆ _acmdlib_mutual_group

python.acmdlib.Command._acmdlib_mutual_group = self.add_mutually_exclusive_group()
protected

Definition at line 128 of file acmdlib.py.

◆ description

python.acmdlib.Command.description

Definition at line 83 of file acmdlib.py.

◆ fct

python.acmdlib.Command.fct = fct

Definition at line 50 of file acmdlib.py.

◆ help

python.acmdlib.Command.help

Definition at line 81 of file acmdlib.py.

◆ name

python.acmdlib.Command.name

Definition at line 84 of file acmdlib.py.

◆ parser

python.acmdlib.Command.parser = self._make_parser(**kwargs)

Definition at line 51 of file acmdlib.py.


The documentation for this class was generated from the following file: