Make coverage_analyzer.py support Python 3 #680
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Usually when implementing Python 3 support for a script, you test the Python 2 version under Python 3, get some silly compile errors, fix them, and then the fixed version has identical output under both versions.
In this case, I never got any compile errors under Python 3 (great!) but the results subtly disagreed between the two versions for reasons that I wasn't able to track down (awful).
So what I ended up doing was a fairly substantial refactoring of the code to simplify it in ways that make the behavior easier to understand and predict. As a bonus, the new version runs about 100x faster! In the single real-world test case I got from @amoravargas, it produces the same output as the old version under both Python 2 and 3.
@amoravargas please review (I would have tagged you as a formal reviewer but you were not in the list of options).