There's an import cycle thing going on between coveragepy and pytest. Both use the presence of each other to modify their behaviour as tools when adding their config etc.
But trying to break import cycles (#1311) will require a cleaner dependency relationship. I've thought about the options but one to consider is to try and be more deliberate about keeping separate book-keeping for which class attributes of tools are allowed to read files/config etc. versus others which should never change (e.g. the name of the tool).
Perhaps ToolMeta is needed, since it gives us the metadata about the tool. This would be an attribute of the tool itself.