I didn't like how much duplicated code (though not duplicated entirely consistently) there was between Graph and HRG for handling node and edge labels. This factors all that code into a single class LabelingMixin.
Alternative: Make both Graph and HRG contain a Labeling object. This is probably more orthodox but adds more complexity to code that uses Graphs and HRGs.
I didn't like how much duplicated code (though not duplicated entirely consistently) there was between Graph and HRG for handling node and edge labels. This factors all that code into a single class LabelingMixin.
Alternative: Make both Graph and HRG contain a Labeling object. This is probably more orthodox but adds more complexity to code that uses Graphs and HRGs.