WIP Initial scoping for upgrade to Python 3 #3
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.
Initial work to investigate very roughly how long a migration to python 3 would take.
Note, this is based off of Matt Archer's branch to add integration testing.
Plans for a migration:
oneflux/partition/nighttime.py
which is 966 lines long, ie about 1/4 of nighttime.py, plus the other imported utilities it touches. This included fixing an encoding issue inlibrary.py
which was to do with changes to the way python3 represents byte strings (second answer down in this post: https://stackoverflow.com/questions/21957667/numpy-dtype-issues-in-genfromtxt-reads-string-in-as-bytestring). Without detailed knowledge of the structure of the code base, it is difficult to say what fraction of the total code base this has covered. Used pygount to get an idea of the total size of the codebase (pygount excludes whitespace which is why this is different from above):Summary:
Breakdown:
Very roughly I would estimate that the PR in it's current state has updated about 5% of the code base.
This is a fairly blunt instrument, and it is not clear exactly what the coverage is measuring, so it would be good to get more insight into this or try a different tool.
oneflux directory
, these are very long, withlibrary
being 1300 lines.My feeling is that the time needed to add appropriate tests and update the syntax to Python3 would be in the ball park of 6 months, rather than 3.
These resources are quite helpful for finding common changes between python2 and python3:
https://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html#python-2-3
https://portingguide.readthedocs.io/en/latest/index.html
issues found so far to look out for: