summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/__init__.py2
-rw-r--r--coverage/cmdline.py2
-rw-r--r--coverage/collector.py3
-rw-r--r--coverage/config.py4
-rw-r--r--coverage/control.py3
-rw-r--r--coverage/data.py3
-rw-r--r--coverage/exceptions.py48
-rw-r--r--coverage/execfile.py3
-rw-r--r--coverage/files.py3
-rw-r--r--coverage/html.py4
-rw-r--r--coverage/inorout.py2
-rw-r--r--coverage/misc.py45
-rw-r--r--coverage/parser.py2
-rw-r--r--coverage/plugin_support.py3
-rw-r--r--coverage/python.py2
-rw-r--r--coverage/report.py3
-rw-r--r--coverage/results.py3
-rw-r--r--coverage/sqldata.py3
-rw-r--r--coverage/summary.py2
-rw-r--r--coverage/tomlconfig.py3
-rw-r--r--lab/parse_all.py2
-rw-r--r--tests/conftest.py2
-rw-r--r--tests/test_api.py3
-rw-r--r--tests/test_cmdline.py2
-rw-r--r--tests/test_config.py2
-rw-r--r--tests/test_coverage.py2
-rw-r--r--tests/test_data.py2
-rw-r--r--tests/test_execfile.py2
-rw-r--r--tests/test_files.py4
-rw-r--r--tests/test_html.py2
-rw-r--r--tests/test_misc.py3
-rw-r--r--tests/test_parser.py2
-rw-r--r--tests/test_plugins.py5
-rw-r--r--tests/test_results.py2
-rw-r--r--tests/test_summary.py2
35 files changed, 99 insertions, 81 deletions
diff --git a/coverage/__init__.py b/coverage/__init__.py
index 331b304b..429a7bd0 100644
--- a/coverage/__init__.py
+++ b/coverage/__init__.py
@@ -14,7 +14,7 @@ from coverage.version import __version__, __url__, version_info
from coverage.control import Coverage, process_startup
from coverage.data import CoverageData
-from coverage.misc import CoverageException
+from coverage.exceptions import CoverageException
from coverage.plugin import CoveragePlugin, FileTracer, FileReporter
from coverage.pytracer import PyTracer
diff --git a/coverage/cmdline.py b/coverage/cmdline.py
index 318cd5a0..cc7d8082 100644
--- a/coverage/cmdline.py
+++ b/coverage/cmdline.py
@@ -18,8 +18,8 @@ from coverage import env
from coverage.collector import CTracer
from coverage.data import line_counts
from coverage.debug import info_formatter, info_header, short_stack
+from coverage.exceptions import BaseCoverageException, ExceptionDuringRun, NoSource
from coverage.execfile import PyRunner
-from coverage.misc import BaseCoverageException, ExceptionDuringRun, NoSource
from coverage.results import should_fail_under
diff --git a/coverage/collector.py b/coverage/collector.py
index fd88e37d..e219c928 100644
--- a/coverage/collector.py
+++ b/coverage/collector.py
@@ -9,7 +9,8 @@ import sys
from coverage import env
from coverage.debug import short_stack
from coverage.disposition import FileDisposition
-from coverage.misc import CoverageException, isolate_module
+from coverage.exceptions import CoverageException
+from coverage.misc import isolate_module
from coverage.pytracer import PyTracer
os = isolate_module(os)
diff --git a/coverage/config.py b/coverage/config.py
index 1dee072e..71f8fbd0 100644
--- a/coverage/config.py
+++ b/coverage/config.py
@@ -10,8 +10,8 @@ import os
import os.path
import re
-from coverage.misc import contract, CoverageException, isolate_module
-from coverage.misc import substitute_variables
+from coverage.exceptions import CoverageException
+from coverage.misc import contract, isolate_module, substitute_variables
from coverage.tomlconfig import TomlConfigParser, TomlDecodeError
diff --git a/coverage/control.py b/coverage/control.py
index b3c5b7dc..95d22007 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -20,11 +20,12 @@ from coverage.context import should_start_context_test_function, combine_context
from coverage.data import CoverageData, combine_parallel_data
from coverage.debug import DebugControl, short_stack, write_formatted_info
from coverage.disposition import disposition_debug_msg
+from coverage.exceptions import CoverageException
from coverage.files import PathAliases, abs_file, relative_filename, set_relative_directory
from coverage.html import HtmlReporter
from coverage.inorout import InOrOut
from coverage.jsonreport import JsonReporter
-from coverage.misc import CoverageException, bool_or_none, join_regex
+from coverage.misc import bool_or_none, join_regex
from coverage.misc import DefaultValue, ensure_dir_for_file, isolate_module
from coverage.plugin import FileReporter
from coverage.plugin_support import Plugins
diff --git a/coverage/data.py b/coverage/data.py
index cf258328..752822b7 100644
--- a/coverage/data.py
+++ b/coverage/data.py
@@ -13,7 +13,8 @@ imports working.
import glob
import os.path
-from coverage.misc import CoverageException, file_be_gone
+from coverage.exceptions import CoverageException
+from coverage.misc import file_be_gone
from coverage.sqldata import CoverageData
diff --git a/coverage/exceptions.py b/coverage/exceptions.py
new file mode 100644
index 00000000..ed96fb21
--- /dev/null
+++ b/coverage/exceptions.py
@@ -0,0 +1,48 @@
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
+
+"""Exceptions coverage.py can raise."""
+
+
+class BaseCoverageException(Exception):
+ """The base of all Coverage exceptions."""
+ pass
+
+
+class CoverageException(BaseCoverageException):
+ """An exception raised by a coverage.py function."""
+ pass
+
+
+class NoSource(CoverageException):
+ """We couldn't find the source for a module."""
+ pass
+
+
+class NoCode(NoSource):
+ """We couldn't find any code at all."""
+ pass
+
+
+class NotPython(CoverageException):
+ """A source file turned out not to be parsable Python."""
+ pass
+
+
+class ExceptionDuringRun(CoverageException):
+ """An exception happened while running customer code.
+
+ Construct it with three arguments, the values from `sys.exc_info`.
+
+ """
+ pass
+
+
+class StopEverything(BaseCoverageException):
+ """An exception that means everything should stop.
+
+ The CoverageTest class converts these to SkipTest, so that when running
+ tests, raising this exception will automatically skip the test.
+
+ """
+ pass
diff --git a/coverage/execfile.py b/coverage/execfile.py
index c2709a74..2ca9f55f 100644
--- a/coverage/execfile.py
+++ b/coverage/execfile.py
@@ -13,8 +13,9 @@ import sys
import types
from coverage import env
+from coverage.exceptions import CoverageException, ExceptionDuringRun, NoCode, NoSource
from coverage.files import canonical_filename, python_reported_file
-from coverage.misc import CoverageException, ExceptionDuringRun, NoCode, NoSource, isolate_module
+from coverage.misc import isolate_module
from coverage.phystokens import compile_unicode
from coverage.python import get_python_source
diff --git a/coverage/files.py b/coverage/files.py
index 1f78e0b6..f1832207 100644
--- a/coverage/files.py
+++ b/coverage/files.py
@@ -13,7 +13,8 @@ import re
import sys
from coverage import env
-from coverage.misc import contract, CoverageException, join_regex, isolate_module
+from coverage.exceptions import CoverageException
+from coverage.misc import contract, join_regex, isolate_module
os = isolate_module(os)
diff --git a/coverage/html.py b/coverage/html.py
index 5965b048..7626f54e 100644
--- a/coverage/html.py
+++ b/coverage/html.py
@@ -12,9 +12,9 @@ import types
import coverage
from coverage.data import add_data_to_hash
+from coverage.exceptions import CoverageException
from coverage.files import flat_rootname
-from coverage.misc import CoverageException, ensure_dir, file_be_gone, Hasher, isolate_module
-from coverage.misc import format_local_datetime
+from coverage.misc import ensure_dir, file_be_gone, Hasher, isolate_module, format_local_datetime
from coverage.report import get_analysis_to_report
from coverage.results import Numbers
from coverage.templite import Templite
diff --git a/coverage/inorout.py b/coverage/inorout.py
index b46162ee..fae9ef18 100644
--- a/coverage/inorout.py
+++ b/coverage/inorout.py
@@ -15,9 +15,9 @@ import traceback
from coverage import env
from coverage.disposition import FileDisposition, disposition_init
+from coverage.exceptions import CoverageException
from coverage.files import TreeMatcher, FnmatchMatcher, ModuleMatcher
from coverage.files import prep_patterns, find_python_files, canonical_filename
-from coverage.misc import CoverageException
from coverage.python import source_for_file, source_for_morf
diff --git a/coverage/misc.py b/coverage/misc.py
index 52583589..db2c3b75 100644
--- a/coverage/misc.py
+++ b/coverage/misc.py
@@ -17,6 +17,7 @@ import sys
import types
from coverage import env
+from coverage.exceptions import CoverageException
ISOLATED_MODULES = {}
@@ -338,47 +339,3 @@ def import_local_file(modname, modfile=None):
spec.loader.exec_module(mod)
return mod
-
-
-class BaseCoverageException(Exception):
- """The base of all Coverage exceptions."""
- pass
-
-
-class CoverageException(BaseCoverageException):
- """An exception raised by a coverage.py function."""
- pass
-
-
-class NoSource(CoverageException):
- """We couldn't find the source for a module."""
- pass
-
-
-class NoCode(NoSource):
- """We couldn't find any code at all."""
- pass
-
-
-class NotPython(CoverageException):
- """A source file turned out not to be parsable Python."""
- pass
-
-
-class ExceptionDuringRun(CoverageException):
- """An exception happened while running customer code.
-
- Construct it with three arguments, the values from `sys.exc_info`.
-
- """
- pass
-
-
-class StopEverything(BaseCoverageException):
- """An exception that means everything should stop.
-
- The CoverageTest class converts these to SkipTest, so that when running
- tests, raising this exception will automatically skip the test.
-
- """
- pass
diff --git a/coverage/parser.py b/coverage/parser.py
index 445eeeab..87a8f6a4 100644
--- a/coverage/parser.py
+++ b/coverage/parser.py
@@ -13,8 +13,8 @@ import tokenize
from coverage import env
from coverage.bytecode import code_objects
from coverage.debug import short_stack
+from coverage.exceptions import NoSource, NotPython, StopEverything
from coverage.misc import contract, join_regex, new_contract, nice_pair, one_of
-from coverage.misc import NoSource, NotPython, StopEverything
from coverage.phystokens import compile_unicode, generate_tokens, neuter_encoding_declaration
diff --git a/coverage/plugin_support.py b/coverage/plugin_support.py
index cf7ef80f..7accc56f 100644
--- a/coverage/plugin_support.py
+++ b/coverage/plugin_support.py
@@ -7,7 +7,8 @@ import os
import os.path
import sys
-from coverage.misc import CoverageException, isolate_module
+from coverage.exceptions import CoverageException
+from coverage.misc import isolate_module
from coverage.plugin import CoveragePlugin, FileTracer, FileReporter
os = isolate_module(os)
diff --git a/coverage/python.py b/coverage/python.py
index 7b6a6d8a..619857d9 100644
--- a/coverage/python.py
+++ b/coverage/python.py
@@ -8,8 +8,8 @@ import types
import zipimport
from coverage import env, files
+from coverage.exceptions import CoverageException, NoSource
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
diff --git a/coverage/report.py b/coverage/report.py
index 4849fe80..3a5a03b7 100644
--- a/coverage/report.py
+++ b/coverage/report.py
@@ -4,8 +4,9 @@
"""Reporter foundation for coverage.py."""
import sys
+from coverage.exceptions import CoverageException, NoSource, NotPython
from coverage.files import prep_patterns, FnmatchMatcher
-from coverage.misc import CoverageException, NoSource, NotPython, ensure_dir_for_file, file_be_gone
+from coverage.misc import ensure_dir_for_file, file_be_gone
def render_report(output_path, reporter, morfs):
diff --git a/coverage/results.py b/coverage/results.py
index 0a7a6135..c60ccac2 100644
--- a/coverage/results.py
+++ b/coverage/results.py
@@ -6,7 +6,8 @@
import collections
from coverage.debug import SimpleReprMixin
-from coverage.misc import contract, CoverageException, nice_pair
+from coverage.exceptions import CoverageException
+from coverage.misc import contract, nice_pair
class Analysis:
diff --git a/coverage/sqldata.py b/coverage/sqldata.py
index 0e31a358..14279518 100644
--- a/coverage/sqldata.py
+++ b/coverage/sqldata.py
@@ -18,8 +18,9 @@ import threading
import zlib
from coverage.debug import NoDebugging, SimpleReprMixin, clipped_repr
+from coverage.exceptions import CoverageException
from coverage.files import PathAliases
-from coverage.misc import CoverageException, contract, file_be_gone, filename_suffix, isolate_module
+from coverage.misc import contract, file_be_gone, filename_suffix, isolate_module
from coverage.numbits import numbits_to_nums, numbits_union, nums_to_numbits
from coverage.version import __version__
diff --git a/coverage/summary.py b/coverage/summary.py
index 7d000150..0597a2aa 100644
--- a/coverage/summary.py
+++ b/coverage/summary.py
@@ -5,9 +5,9 @@
import sys
+from coverage.exceptions import CoverageException
from coverage.report import get_analysis_to_report
from coverage.results import Numbers
-from coverage.misc import CoverageException
class SummaryReporter:
diff --git a/coverage/tomlconfig.py b/coverage/tomlconfig.py
index 0853812a..1e0b1241 100644
--- a/coverage/tomlconfig.py
+++ b/coverage/tomlconfig.py
@@ -7,7 +7,8 @@ import configparser
import os
import re
-from coverage.misc import CoverageException, substitute_variables
+from coverage.exceptions import CoverageException
+from coverage.misc import substitute_variables
# TOML support is an install-time extra option.
try:
diff --git a/lab/parse_all.py b/lab/parse_all.py
index 37606838..b14c1f0e 100644
--- a/lab/parse_all.py
+++ b/lab/parse_all.py
@@ -3,7 +3,7 @@
import os
import sys
-from coverage.misc import CoverageException
+from coverage.exceptions import CoverageException
from coverage.parser import PythonParser
for root, dirnames, filenames in os.walk(sys.argv[1]):
diff --git a/tests/conftest.py b/tests/conftest.py
index 5e3ed445..c84f446a 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -14,7 +14,7 @@ import warnings
import pytest
from coverage import env
-from coverage.misc import StopEverything
+from coverage.exceptions import StopEverything
# Pytest will rewrite assertions in test modules, but not elsewhere.
diff --git a/tests/test_api.py b/tests/test_api.py
index 05554ae4..d6a9c08a 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -18,8 +18,9 @@ import pytest
import coverage
from coverage import env
from coverage.data import line_counts
+from coverage.exceptions import CoverageException
from coverage.files import abs_file, relative_filename
-from coverage.misc import CoverageException, import_local_file
+from coverage.misc import import_local_file
from tests.coveragetest import CoverageTest, TESTS_DIR, UsingModulesMixin
from tests.helpers import assert_count_equal, change_dir, nice_file
diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py
index ed5090f5..b214473c 100644
--- a/tests/test_cmdline.py
+++ b/tests/test_cmdline.py
@@ -16,7 +16,7 @@ import coverage.cmdline
from coverage import env
from coverage.config import CoverageConfig
from coverage.data import CoverageData
-from coverage.misc import ExceptionDuringRun
+from coverage.exceptions import ExceptionDuringRun
from coverage.version import __url__
from tests.coveragetest import CoverageTest, OK, ERR, command_line
diff --git a/tests/test_config.py b/tests/test_config.py
index 83d756a5..a8b0ecef 100644
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -10,7 +10,7 @@ import pytest
import coverage
from coverage.config import HandyConfigParser
-from coverage.misc import CoverageException
+from coverage.exceptions import CoverageException
from tests.coveragetest import CoverageTest, UsingModulesMixin
from tests.helpers import without_module
diff --git a/tests/test_coverage.py b/tests/test_coverage.py
index 3ddc6e86..1ae927bd 100644
--- a/tests/test_coverage.py
+++ b/tests/test_coverage.py
@@ -7,7 +7,7 @@ import pytest
import coverage
from coverage import env
-from coverage.misc import CoverageException
+from coverage.exceptions import CoverageException
from tests.coveragetest import CoverageTest
diff --git a/tests/test_data.py b/tests/test_data.py
index 867891d4..4b385b7f 100644
--- a/tests/test_data.py
+++ b/tests/test_data.py
@@ -16,8 +16,8 @@ import pytest
from coverage.data import CoverageData, combine_parallel_data
from coverage.data import add_data_to_hash, line_counts
from coverage.debug import DebugControlString
+from coverage.exceptions import CoverageException
from coverage.files import PathAliases, canonical_filename
-from coverage.misc import CoverageException
from tests.coveragetest import CoverageTest
from tests.helpers import assert_count_equal
diff --git a/tests/test_execfile.py b/tests/test_execfile.py
index 7c63ac15..dcd03b44 100644
--- a/tests/test_execfile.py
+++ b/tests/test_execfile.py
@@ -14,9 +14,9 @@ import sys
import pytest
from coverage import env
+from coverage.exceptions import NoCode, NoSource
from coverage.execfile import run_python_file, run_python_module
from coverage.files import python_reported_file
-from coverage.misc import NoCode, NoSource
from tests.coveragetest import CoverageTest, TESTS_DIR, UsingModulesMixin
diff --git a/tests/test_files.py b/tests/test_files.py
index cfe37460..98ece632 100644
--- a/tests/test_files.py
+++ b/tests/test_files.py
@@ -8,13 +8,13 @@ import os.path
import pytest
+from coverage import env
from coverage import files
+from coverage.exceptions import CoverageException
from coverage.files import (
TreeMatcher, FnmatchMatcher, ModuleMatcher, PathAliases,
find_python_files, abs_file, actual_path, flat_rootname, fnmatches_to_regex,
)
-from coverage.misc import CoverageException
-from coverage import env
from tests.coveragetest import CoverageTest
diff --git a/tests/test_html.py b/tests/test_html.py
index 3b3250e4..c9dbacc8 100644
--- a/tests/test_html.py
+++ b/tests/test_html.py
@@ -16,9 +16,9 @@ import pytest
import coverage
from coverage import env
+from coverage.exceptions import CoverageException, NotPython, NoSource
from coverage.files import abs_file, flat_rootname
import coverage.html
-from coverage.misc import CoverageException, NotPython, NoSource
from coverage.report import get_analysis_to_report
from tests.coveragetest import CoverageTest, TESTS_DIR
diff --git a/tests/test_misc.py b/tests/test_misc.py
index 760d8efe..95ca977d 100644
--- a/tests/test_misc.py
+++ b/tests/test_misc.py
@@ -5,9 +5,10 @@
import pytest
+from coverage.exceptions import CoverageException
from coverage.misc import contract, dummy_decorator_with_args, file_be_gone
from coverage.misc import Hasher, one_of, substitute_variables
-from coverage.misc import CoverageException, USE_CONTRACTS
+from coverage.misc import USE_CONTRACTS
from tests.coveragetest import CoverageTest
diff --git a/tests/test_parser.py b/tests/test_parser.py
index 46ee25f3..7fd87bba 100644
--- a/tests/test_parser.py
+++ b/tests/test_parser.py
@@ -8,7 +8,7 @@ import textwrap
import pytest
from coverage import env
-from coverage.misc import NotPython
+from coverage.exceptions import NotPython
from coverage.parser import PythonParser
from tests.coveragetest import CoverageTest
diff --git a/tests/test_plugins.py b/tests/test_plugins.py
index 21aeab14..3401895b 100644
--- a/tests/test_plugins.py
+++ b/tests/test_plugins.py
@@ -12,9 +12,10 @@ import pytest
import coverage
from coverage import env
-from coverage.data import line_counts
from coverage.control import Plugins
-from coverage.misc import CoverageException, import_local_file
+from coverage.data import line_counts
+from coverage.exceptions import CoverageException
+from coverage.misc import import_local_file
import coverage.plugin
diff --git a/tests/test_results.py b/tests/test_results.py
index 0453424b..5811b0c2 100644
--- a/tests/test_results.py
+++ b/tests/test_results.py
@@ -5,7 +5,7 @@
import pytest
-from coverage.misc import CoverageException
+from coverage.exceptions import CoverageException
from coverage.results import format_lines, Numbers, should_fail_under
from tests.coveragetest import CoverageTest
diff --git a/tests/test_summary.py b/tests/test_summary.py
index a326fc85..a6384c46 100644
--- a/tests/test_summary.py
+++ b/tests/test_summary.py
@@ -16,7 +16,7 @@ import coverage
from coverage import env
from coverage.control import Coverage
from coverage.data import CoverageData
-from coverage.misc import CoverageException
+from coverage.exceptions import CoverageException
from coverage.summary import SummaryReporter
from tests.coveragetest import CoverageTest, TESTS_DIR, UsingModulesMixin