def __getattr__(self, name):
if name.isupper():<EOL><INDENT>return self[name]<EOL><DEDENT>else:<EOL><INDENT>def method(*args, **kwargs):<EOL><INDENT>nsplit = name.split('<STR_LIT:_>', <NUM_LIT:1>)<EOL>if len(nsplit) == <NUM_LIT:2> and nsplit[<NUM_LIT:0>] == '<STR_LIT>' and nsplit[<NUM_LIT:1>].isupper() and len(args) == <NUM_LIT:1> and not kwargs:<EOL><INDENT>self[nsplit[<NUM_LIT:1>]] = args[<NUM_LIT:0>]  <EOL><DEDENT>elif len(nsplit) == <NUM_LIT:2> and nsplit[<NUM_LIT:0>] == '<STR_LIT>' and nsplit[<NUM_LIT:1>].isupper() and not args and not kwargs:<EOL><INDENT>return self[nsplit[<NUM_LIT:1>]]<EOL><DEDENT>else:<EOL><INDENT>values = []<EOL>for module_name in self.module_names:<EOL><INDENT>values.append(getattr(self._dut[module_name], name)(*args, **kwargs))<EOL><DEDENT>if not len(set(values)) == <NUM_LIT:1>:<EOL><INDENT>raise RuntimeError("<STR_LIT>" % (name,))<EOL><DEDENT>return values[<NUM_LIT:0>]<EOL><INDENT>raise AttributeError("<STR_LIT>" % (self.__class__, name))<EOL><DEDENT><DEDENT><DEDENT>return method<EOL><DEDENT>
called only on last resort if there are no attributes in the instance that match the name