diff options
Diffstat (limited to 'coverage/html.py')
-rw-r--r-- | coverage/html.py | 106 |
1 files changed, 53 insertions, 53 deletions
diff --git a/coverage/html.py b/coverage/html.py index d172e896..d1a90ecd 100644 --- a/coverage/html.py +++ b/coverage/html.py @@ -69,7 +69,7 @@ def write_html(fname: str, html: str) -> None: """Write `html` to `fname`, properly encoded.""" html = re.sub(r"(\A\s+)|(\s+$)", "", html, flags=re.MULTILINE) + "\n" with open(fname, "wb") as fout: - fout.write(html.encode('ascii', 'xmlcharrefreplace')) + fout.write(html.encode("ascii", "xmlcharrefreplace")) @dataclass @@ -132,11 +132,11 @@ class HtmlDataGeneration: long_annotations = [] if lineno in analysis.excluded: - category = 'exc' + category = "exc" elif lineno in analysis.missing: - category = 'mis' + category = "mis" elif self.has_arcs and lineno in missing_branch_arcs: - category = 'par' + category = "par" for b in missing_branch_arcs[lineno]: if b < 0: short_annotations.append("exit") @@ -144,7 +144,7 @@ class HtmlDataGeneration: short_annotations.append(str(b)) long_annotations.append(fr.missing_arc_description(lineno, b, arcs_executed)) elif lineno in analysis.statements: - category = 'run' + category = "run" contexts = [] contexts_label = "" @@ -236,26 +236,26 @@ class HtmlReporter: self.template_globals = { # Functions available in the templates. - 'escape': escape, - 'pair': pair, - 'len': len, + "escape": escape, + "pair": pair, + "len": len, # Constants for this report. - '__url__': __url__, - '__version__': coverage.__version__, - 'title': title, - 'time_stamp': format_local_datetime(datetime.datetime.now()), - 'extra_css': self.extra_css, - 'has_arcs': self.has_arcs, - 'show_contexts': self.config.show_contexts, + "__url__": __url__, + "__version__": coverage.__version__, + "title": title, + "time_stamp": format_local_datetime(datetime.datetime.now()), + "extra_css": self.extra_css, + "has_arcs": self.has_arcs, + "show_contexts": self.config.show_contexts, # Constants for all reports. # These css classes determine which lines are highlighted by default. - 'category': { - 'exc': 'exc show_exc', - 'mis': 'mis show_mis', - 'par': 'par run show_par', - 'run': 'run', + "category": { + "exc": "exc show_exc", + "mis": "mis show_mis", + "par": "par run show_par", + "run": "run", }, } self.pyfile_html_source = read_data("pyfile.html") @@ -384,9 +384,9 @@ class HtmlReporter: if tok_type == "ws": html_parts.append(escape(tok_text)) else: - tok_html = escape(tok_text) or ' ' + tok_html = escape(tok_text) or " " html_parts.append(f'<span class="{tok_type}">{tok_html}</span>') - ldata.html = ''.join(html_parts) + ldata.html = "".join(html_parts) ldata.context_str = ",".join( str(context_codes[c_context]) for c_context in ldata.context_list ) @@ -419,24 +419,24 @@ class HtmlReporter: css_classes = [] if ldata.category: css_classes.append( - self.template_globals['category'][ldata.category] # type: ignore[index] + self.template_globals["category"][ldata.category] # type: ignore[index] ) - ldata.css_class = ' '.join(css_classes) or "pln" + ldata.css_class = " ".join(css_classes) or "pln" html_path = os.path.join(self.directory, ftr.html_filename) html = self.source_tmpl.render({ **file_data.__dict__, "contexts_json": contexts_json, - 'prev_html': prev_html, - 'next_html': next_html, + "prev_html": prev_html, + "next_html": next_html, }) write_html(html_path, html) # Save this file's information for the index file. index_info: IndexInfoDict = { - 'nums': ftr.analysis.numbers, - 'html_filename': ftr.html_filename, - 'relative_filename': ftr.fr.relative_filename(), + "nums": ftr.analysis.numbers, + "html_filename": ftr.html_filename, + "relative_filename": ftr.fr.relative_filename(), } self.file_summaries.append(index_info) self.incr.set_index_info(ftr.rootname, index_info) @@ -455,12 +455,12 @@ class HtmlReporter: skipped_empty_msg = f"{n} empty file{plural(n)} skipped." html = index_tmpl.render({ - 'files': self.file_summaries, - 'totals': self.totals, - 'skipped_covered_msg': skipped_covered_msg, - 'skipped_empty_msg': skipped_empty_msg, - 'first_html': first_html, - 'final_html': final_html, + "files": self.file_summaries, + "totals": self.totals, + "skipped_covered_msg": skipped_covered_msg, + "skipped_empty_msg": skipped_empty_msg, + "first_html": first_html, + "final_html": final_html, }) index_file = os.path.join(self.directory, "index.html") @@ -510,7 +510,7 @@ class IncrementalChecker: def reset(self) -> None: """Initialize to empty. Causes all files to be reported.""" - self.globals = '' + self.globals = "" self.files: Dict[str, FileInfoDict] = {} def read(self) -> None: @@ -524,17 +524,17 @@ class IncrementalChecker: usable = False else: usable = True - if status['format'] != self.STATUS_FORMAT: + if status["format"] != self.STATUS_FORMAT: usable = False - elif status['version'] != coverage.__version__: + elif status["version"] != coverage.__version__: usable = False if usable: self.files = {} - for filename, fileinfo in status['files'].items(): - fileinfo['index']['nums'] = Numbers(*fileinfo['index']['nums']) + for filename, fileinfo in status["files"].items(): + fileinfo["index"]["nums"] = Numbers(*fileinfo["index"]["nums"]) self.files[filename] = fileinfo - self.globals = status['globals'] + self.globals = status["globals"] else: self.reset() @@ -543,18 +543,18 @@ class IncrementalChecker: status_file = os.path.join(self.directory, self.STATUS_FILE) files = {} for filename, fileinfo in self.files.items(): - index = fileinfo['index'] - index['nums'] = index['nums'].init_args() # type: ignore[typeddict-item] + index = fileinfo["index"] + index["nums"] = index["nums"].init_args() # type: ignore[typeddict-item] files[filename] = fileinfo status = { - 'format': self.STATUS_FORMAT, - 'version': coverage.__version__, - 'globals': self.globals, - 'files': files, + "format": self.STATUS_FORMAT, + "version": coverage.__version__, + "globals": self.globals, + "files": files, } with open(status_file, "w") as fout: - json.dump(status, fout, separators=(',', ':')) + json.dump(status, fout, separators=(",", ":")) def check_global_data(self, *data: Any) -> None: """Check the global data that can affect incremental reporting.""" @@ -573,7 +573,7 @@ class IncrementalChecker: `rootname` is the name being used for the file. """ m = Hasher() - m.update(fr.source().encode('utf-8')) + m.update(fr.source().encode("utf-8")) add_data_to_hash(data, fr.filename, m) this_hash = m.hexdigest() @@ -588,19 +588,19 @@ class IncrementalChecker: def file_hash(self, fname: str) -> str: """Get the hash of `fname`'s contents.""" - return self.files.get(fname, {}).get('hash', '') # type: ignore[call-overload] + return self.files.get(fname, {}).get("hash", "") # type: ignore[call-overload] def set_file_hash(self, fname: str, val: str) -> None: """Set the hash of `fname`'s contents.""" - self.files.setdefault(fname, {})['hash'] = val # type: ignore[typeddict-item] + self.files.setdefault(fname, {})["hash"] = val # type: ignore[typeddict-item] def index_info(self, fname: str) -> IndexInfoDict: """Get the information for index.html for `fname`.""" - return self.files.get(fname, {}).get('index', {}) # type: ignore + return self.files.get(fname, {}).get("index", {}) # type: ignore def set_index_info(self, fname: str, info: IndexInfoDict) -> None: """Set the information for index.html for `fname`.""" - self.files.setdefault(fname, {})['index'] = info # type: ignore[typeddict-item] + self.files.setdefault(fname, {})["index"] = info # type: ignore[typeddict-item] # Helpers for templates and generating HTML |