Closed liamhuber closed 3 months ago
Coverage variation | Diff coverage |
---|---|
:white_check_mark: +0.02% (target: -1.00%) | :white_check_mark: 100.00% |
You may notice some variations in coverage metrics with the latest Coverage engine update. For more details, visit the documentation
Files with Coverage Reduction | New Missed Lines | % | ||
---|---|---|---|---|
semantics.py | 6 | 95.76% | ||
<!-- | Total: | 6 | --> |
Totals | |
---|---|
Change from base Build 8403845120: | -0.07% |
Covered Lines: | 6005 |
Relevant Lines: | 6549 |
Well shoot, squashing and merging the semantic branch means all the squashed commits here still show up! I'm sure there is some sort of rebasing scheme that allows squashing to play well with stacking, but it's not something I want to work out on a Saturday, so for the rest of the stack I'm not going to squash.
This introduces a new module
has_interface_mixins
to hold all the classes that are just there to guarantee the another class has some particular attribute or method. Such mixins are useful when we decompose responsibility into different components, but component A needs to know about some particular aspect of component B -- e.g., re:#243,HasIO
will need to know about therun
method, but it won't care at all what it does, soRunnable
andHasIO
will both inherit fromHasRun
, but forHasIO
this is just to guarantee that the IO mixin gets combined with some other component that definesrun
.I intentionally ignore the
HasToDict
mixin here, because (a) it does somewhat more than simply guarantee the interface, and (b) it's on death row anyhow, as it's just there for prettier representations and I think we're going to be able to accomplish that more elegantly in other ways soon.This is all under-the-hood, so no changes to the user interface.