Repository: eth-brownie/brownie
Issue: brownie failing on coverage

### Environment information

* `brownie` Version: 1.10.4
* `ganache-cli` Version: 6.10.1
* `solc` Version: 0.5.17
* Python Version: 3.8.2
* OS: Ubuntu 20.04.1 LTS 

### What was wrong?
brownie crashed on coverage

Please include information like:

* I have run `brownie tests --coverage`
* full output of the error you received
 
```
==================================================================================================== Coverage =====================================================================================================
  File "brownie/_cli/__main__.py", line 60, in main
    importlib.import_module(f"brownie._cli.{cmd}").main()
  File "brownie/_cli/test.py", line 65, in main
    return_code = pytest.main(pytest_args, ["pytest-brownie"])
  File "_pytest/config/__init__.py", line 157, in main
    ret = config.hook.pytest_cmdline_main(
  File "pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "pluggy/manager.py", line 84, in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
  File "pluggy/callers.py", line 208, in _multicall
    return outcome.get_result()
  File "pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "_pytest/main.py", line 289, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "_pytest/main.py", line 277, in wrap_session
    config.hook.pytest_sessionfinish(
  File "pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "pluggy/manager.py", line 84, in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
  File "pluggy/callers.py", line 203, in _multicall
    gen.send(outcome)
  File "_pytest/terminal.py", line 813, in pytest_sessionfinish
    self.config.hook.pytest_terminal_summary(
  File "pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "pluggy/manager.py", line 84, in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
  File "pluggy/callers.py", line 208, in _multicall
    return outcome.get_result()
  File "pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "brownie/test/managers/runner.py", line 419, in pytest_terminal_summary
    super().pytest_terminal_summary(terminalreporter)
  File "brownie/test/managers/base.py", line 240, in pytest_terminal_summary
    for line in output._build_coverage_output(coverage_eval):
  File "brownie/test/output.py", line 121, in _build_coverage_output
    all_totals = [
  File "brownie/test/output.py", line 122, in <listcomp>
    (i, _get_totals(i._build, coverage_eval, exclude_contracts)) for i in get_loaded_projects()
  File "brownie/test/output.py", line 197, in _get_totals
    r["statements"], r["totals"]["statements"] = _statement_totals(
  File "brownie/test/output.py", line 237, in _statement_totals
    count += len(coverage_eval[path][fn][0])
KeyError: 0
Terminating local RPC client...
```

### How can it be fixed?

I don't know really. I am knew to python and brownie. It was working fine until number of tests grew 


Changed files:
brownie/network/transaction.py

diff --git a/brownie/network/transaction.py b/brownie/network/transaction.py
index cb4a94ce..d6b2c3e9 100644
--- a/brownie/network/transaction.py
+++ b/brownie/network/transaction.py
@@ -19,6 +19,7 @@ from brownie._config import CONFIG
 from brownie.convert import EthAddress, Wei
 from brownie.exceptions import RPCRequestError
 from brownie.project import build
+from brownie.project import main as project_main
 from brownie.project.sources import highlight_source
 from brownie.test import coverage
 from brownie.utils import color
@@ -1077,7 +1078,8 @@ def _get_last_map(address: EthAddress, sig: str) -> Dict:
             path_map=contract._build.get("allSourcePaths"),
             pc_map=contract._build.get("pcMap"),
         )
-        if contract._project:
+        if isinstance(contract._project, project_main.Project):
+            # only evaluate coverage for contracts that are part of a `Project`
             last_map["coverage"] = True
             if contract._build["language"] == "Solidity":
                 last_map["active_branches"] = set()