def visit_schema(self, schema, display_relations=0, skiptypes=()): """get a layout for a whole schema""" title = Title(self._('Schema %s') % schema.name, klass='titleUnderline') layout = Section(children=(title, )) esection = Section( children=(Title(self._('Entities'), klass='titleUnderline'), )) layout.append(esection) eschemas = [ eschema for eschema in schema.entities() if not (eschema.final or eschema in skiptypes) ] for eschema in sorted(eschemas, key=TYPE_GETTER): esection.append(self.visit_entityschema(eschema, skiptypes)) if display_relations: title = Title(self._('Relations'), klass='titleUnderline') rsection = Section(children=(title, )) layout.append(rsection) relations = [ rschema for rschema in sorted(schema.relations(), key=TYPE_GETTER) if not (rschema.final or rschema.type in skiptypes) ] keys = [(rschema.type, rschema) for rschema in relations] for key, rschema in sorted(keys, key=itemgetter(1)): relstr = self.visit_relationschema(rschema) rsection.append(relstr) return layout
def make_reports(self, stats, old_stats): """render registered reports""" sect = Section("Report", "%s statements analysed." % (self.stats["statement"])) for checker in self._reports: for reportid, r_title, r_cb in self._reports[checker]: if not self.report_is_enabled(reportid): continue report_sect = Section(r_title) try: r_cb(report_sect, stats, old_stats) except EmptyReport: continue report_sect.report_id = reportid sect.append(report_sect) return sect
def make_reports(self, stats, old_stats): """render registered reports""" sect = Section('Report', '%s statements analysed.' % (self.stats['statement'])) for checker in self.report_order(): for reportid, r_title, r_cb in self._reports[checker]: if not self.report_is_enabled(reportid): continue report_sect = Section(r_title) try: r_cb(report_sect, stats, old_stats) except EmptyReport: continue report_sect.report_id = reportid sect.append(report_sect) return sect
def _display(self, layout): """launch layouts display overridden from BaseReporter to add insert the messages section (in add_message, message is not displayed, just collected so it can be displayed in an html table) """ if self.msgs: # add stored messages to the layout msgs = ['type', 'module', 'object', 'line', 'message'] msgs += self.msgs sect = Section('Messages') layout.append(sect) sect.append(Table(cols=5, children=msgs, rheaders=1)) self.msgs = [] HTMLWriter().format(layout, self.out)
def _display(self, layout): """launch layouts display overridden from BaseReporter to add insert the messages section (in add_message, message is not displayed, just collected so it can be displayed in an html table) """ if self.msgs: # add stored messages to the layout msgs = ['type', 'module', 'object', 'line', 'col_offset', 'message'] msgs += self.msgs sect = Section('Messages') layout.append(sect) sect.append(Table(cols=6, children=msgs, rheaders=1)) self.msgs = [] HTMLWriter().format(layout, self.out)
def visit_entityschema(self, eschema, skiptypes=()): """get a layout for an entity schema""" etype = eschema.type layout = Section(children=' ', klass='clear') layout.append(Link(etype, ' ', id=etype)) # anchor title = self.format_eschema(eschema) boxchild = [Section(children=(title, ), klass='title')] data = [] data.append(Section(children=boxchild, klass='box')) data.append(Section(children='', klass='vl')) data.append(Section(children='', klass='hl')) t_vars = [] rels = [] first = True rel_defs = sorted(eschema.relation_definitions(), key=lambda el: el[0].type) for rschema, targetschemas, role in rel_defs: if rschema.type in skiptypes: continue for oeschema in sorted(targetschemas, key=TYPE_GETTER): rdef = rschema.role_rdef(eschema, oeschema, role) if not self.may_read(rdef): continue label = rschema.type if role == 'subject': cards = rschema.rdef(eschema, oeschema).cardinality else: cards = rschema.rdef(oeschema, eschema).cardinality cards = cards[::-1] label = '%s %s %s' % (CARD_MAP[cards[1]], label, CARD_MAP[cards[0]]) rlink = self.format_rschema(rschema, label) elink = self.format_eschema(oeschema) if first: t_vars.append(Section(children=(elink, ), klass='firstvar')) rels.append(Section(children=(rlink, ), klass='firstrel')) first = False else: t_vars.append(Section(children=(elink, ), klass='var')) rels.append(Section(children=(rlink, ), klass='rel')) data.append(Section(children=rels, klass='rels')) data.append(Section(children=t_vars, klass='vars')) layout.append(Section(children=data, klass='entityAttributes')) return layout
def make_reports(self, stats, old_stats): """render registered reports""" if self.config.files_output: filename = 'pylint_global.' + self.reporter.extension self.reporter.set_output(open(filename, 'w')) sect = Section('Report', '%s statements analysed.' % (self.stats['statement'])) for checker in self._reports: for reportid, r_title, r_cb in self._reports[checker]: if not self.report_is_enabled(reportid): continue report_sect = Section(r_title) try: r_cb(report_sect, stats, old_stats) except EmptyReport: continue report_sect.report_id = reportid sect.append(report_sect) self.reporter.display_results(sect)
def make_reports(self, stats, old_stats): """render registered reports""" if self.config.files_output: filename = 'pylint_global.' + self.reporter.extension self.reporter.set_output(open(filename, 'w')) sect = Section('Report', '%s statements analysed.'% (self.stats['statement'])) for checker in self._reports: for reportid, r_title, r_cb in self._reports[checker]: if not self.report_is_enabled(reportid): continue report_sect = Section(r_title) try: r_cb(report_sect, stats, old_stats) except EmptyReport: continue report_sect.report_id = reportid sect.append(report_sect) self.reporter.display_results(sect)
def make_reports(self, stats, old_stats): """render registered reports""" if self.config.files_output: filename = "pylint_global." + self.reporter.extension self.reporter.set_output(open(filename, "w")) sect = Section("Report", "%s statements analysed." % (self.stats["statement"])) checkers = self.sort_checkers(self._reports) checkers.reverse() for checker in checkers: for reportid, r_title, r_cb in self._reports[checker]: if not self.is_report_enabled(reportid): continue report_sect = Section(r_title) try: r_cb(report_sect, stats, old_stats) except EmptyReport: continue report_sect.report_id = reportid sect.append(report_sect) self.reporter.display_results(sect)
def visit_relationschema(self, rschema, title=True): """get a layout for a relation schema""" _ = self._ if title: title = self.format_rschema(rschema) stereotypes = [] if rschema.meta: stereotypes.append('meta') if rschema.symmetric: stereotypes.append('symmetric') if rschema.inlined: stereotypes.append('inlined') title = Section(children=(title, ), klass='title') if stereotypes: title.append(self.stereotype(','.join(stereotypes))) layout = Section(children=(title, ), klass='schema') else: layout = Section(klass='schema') data = [_('from'), _('to')] schema = rschema.schema rschema_objects = rschema.objects() if rschema_objects: # might be empty properties = [ p for p in RelationDefinitionSchema.rproperty_defs( rschema_objects[0]) if p not in ('cardinality', 'composite', 'eid') ] else: properties = [] data += [_(prop) for prop in properties] cols = len(data) done = set() for subjtype, objtypes in sorted(rschema.associations()): for objtype in objtypes: if (subjtype, objtype) in done: continue done.add((subjtype, objtype)) if rschema.symmetric: done.add((objtype, subjtype)) data.append(self.format_eschema(schema[subjtype])) data.append(self.format_eschema(schema[objtype])) rdef = rschema.rdef(subjtype, objtype) for prop in properties: val = getattr(rdef, prop) if val is None: val = '' elif prop == 'constraints': val = ', '.join([c.expression for c in val]) elif isinstance(val, dict): for key, value in val.items(): if isinstance(value, (list, tuple)): val[key] = ', '.join( sorted(str(v) for v in value)) val = str(val) elif isinstance(val, (list, tuple)): val = sorted(val) val = ', '.join(str(v) for v in val) elif val and isinstance(val, str): val = _(val) else: val = str(val) data.append(Text(val)) table = Table(cols=cols, rheaders=1, children=data, klass='listing') layout.append(Section(children=(table, ), klass='relationDefinition')) layout.append(Section(children='', klass='clear')) return layout