def print_info(self, buf=sys.stdout, verbose=False):
_pr = Printer(buf)<EOL>if not self.contexts:<EOL><INDENT>_pr("<STR_LIT>")<EOL>return<EOL><DEDENT>context_names = sorted(self.contexts.keys())<EOL>_pr("<STR_LIT>" % len(context_names))<EOL>if not verbose:<EOL><INDENT>_pr('<STR_LIT:U+0020>'.join(context_names))<EOL>return<EOL><DEDENT>tools = list(self.get_tools().values())<EOL>context_tools = defaultdict(set)<EOL>context_variants = defaultdict(set)<EOL>for entry in tools:<EOL><INDENT>context_name = entry["<STR_LIT>"]<EOL>context_tools[context_name].add(entry["<STR_LIT>"])<EOL>context_variants[context_name].add(str(entry["<STR_LIT>"]))<EOL><DEDENT>_pr()<EOL>rows = [["<STR_LIT>", "<STR_LIT>", "<STR_LIT>"],<EOL>["<STR_LIT>", "<STR_LIT>", "<STR_LIT>"]]<EOL>for context_name in context_names:<EOL><INDENT>context_path = self._context_path(context_name) or '<STR_LIT:->'<EOL>ntools = len(context_tools.get(context_name, []))<EOL>if ntools:<EOL><INDENT>nvariants = len(context_variants[context_name])<EOL>short_desc = "<STR_LIT>" % (ntools, nvariants)<EOL><DEDENT>else:<EOL><INDENT>short_desc = "<STR_LIT>"<EOL><DEDENT>rows.append((context_name, short_desc, context_path))<EOL><DEDENT>_pr("<STR_LIT:\n>".join(columnise(rows)))<EOL>
Prints a message summarising the contents of the suite.