From the stylistic nitpicks for instance, I really had a strong urge to just call _prepare_snap_replacement_data() in both _calculateSnapSizeRequirements() and _replaceDebsWithSnaps(), and simply make it to exit early if self._snap_list is already non-empty. But then it would be non-optimal, since we know _replaceDebsWithSnaps will never be called without _calculateSnapSizeRequirements running first. But eh, I somehow couldn't make this look pretty, sorry...
From the stylistic nitpicks for instance, I really had a strong urge to just call _prepare_ snap_replacemen t_data( ) in both _calculateSnapS izeRequirements () and _replaceDebsWit hSnaps( ), and simply make it to exit early if self._snap_list is already non-empty. But then it would be non-optimal, since we know _replaceDebsWit hSnaps will never be called without _calculateSnapS izeRequirements running first. But eh, I somehow couldn't make this look pretty, sorry...