--- a/eric7/DebugClients/Python/coverage/python.py Fri Nov 19 19:28:47 2021 +0100 +++ b/eric7/DebugClients/Python/coverage/python.py Sat Nov 20 16:47:38 2021 +0100 @@ -7,9 +7,10 @@ import types import zipimport -from coverage import env, files +from coverage import env +from coverage.exceptions import CoverageException, NoSource +from coverage.files import canonical_filename, relative_filename from coverage.misc import contract, expensive, isolate_module, join_regex -from coverage.misc import CoverageException, NoSource from coverage.parser import PythonParser from coverage.phystokens import source_token_lines, source_encoding from coverage.plugin import FileReporter @@ -56,9 +57,7 @@ break else: # Couldn't find source. - exc_msg = "No source for code: '%s'.\n" % (filename,) - exc_msg += "Aborting report output, consider using -i." - raise NoSource(exc_msg) + raise NoSource(f"No source for code: '{filename}'.") # Replace \f because of http://bugs.python.org/issue19035 source = source.replace(b'\f', b' ') @@ -90,7 +89,7 @@ continue try: data = zi.get_data(parts[1]) - except IOError: + except OSError: continue return data return None @@ -136,11 +135,11 @@ elif isinstance(morf, types.ModuleType): # A module should have had .__file__, otherwise we can't use it. # This could be a PEP-420 namespace package. - raise CoverageException("Module {} has no file".format(morf)) + raise CoverageException(f"Module {morf} has no file") else: filename = morf - filename = source_for_file(files.unicode_filename(filename)) + filename = source_for_file(filename) return filename @@ -152,16 +151,15 @@ filename = source_for_morf(morf) - super(PythonFileReporter, self).__init__(files.canonical_filename(filename)) + super().__init__(canonical_filename(filename)) if hasattr(morf, '__name__'): name = morf.__name__.replace(".", os.sep) if os.path.basename(filename).startswith('__init__.'): name += os.sep + "__init__" name += ".py" - name = files.unicode_filename(name) else: - name = files.relative_filename(filename) + name = relative_filename(filename) self.relname = name self._source = None @@ -169,7 +167,7 @@ self._excluded = None def __repr__(self): - return "<PythonFileReporter {!r}>".format(self.filename) + return f"<PythonFileReporter {self.filename!r}>" @contract(returns='unicode') def relative_filename(self):