def __call__(self, paths=[], **params_to_override):
p=param.ParamOverrides(self, dict(params_to_override, paths=paths))<EOL>if p.paths == []:<EOL><INDENT>raise Exception("<STR_LIT>")<EOL><DEDENT>paths = [p.paths] if isinstance(p.paths, str) else p.paths<EOL>def _desc(path, ind):<EOL><INDENT>for vcs in p.commands.keys():<EOL><INDENT>if os.path.exists(os.path.join(path, vcs)):<EOL><INDENT>proc = subprocess.Popen(p.commands[vcs][ind],<EOL>stdout=subprocess.PIPE,<EOL>stderr=subprocess.PIPE, cwd=path)<EOL>return str(proc.communicate()[<NUM_LIT:0>].decode()).strip()<EOL><DEDENT><DEDENT><DEDENT>abspaths = [os.path.abspath(path) for path in paths]<EOL>return {'<STR_LIT>' : dict((path, _desc(path,<NUM_LIT:0>)) for path in abspaths),<EOL>'<STR_LIT>':  dict((path, _desc(path,<NUM_LIT:1>)) for path in abspaths),<EOL>'<STR_LIT>':     dict((path, _desc(path,<NUM_LIT:2>)) for path in abspaths)}<EOL>
Takes a single path string or a list of path strings and
returns the corresponing version control information.