On Wed, Dec 04, 2019 at 10:29:30PM +0000, Ben Keene via GitGitGadget wrote: > From: Ben Keene <seraphire@xxxxxxxxx> > > Python 3+ handles strings differently than Python 2.7. Since Python 2 is reaching it's end of life, a series of changes are being submitted to enable python 3.7+ support. The current code fails basic tests under python 3.7. > > There are a number of translations suggested by modernize/futureize that should be taken to fix numerous non-string specific issues. > > Change references to the X.next() iterator to the function next(X) which is compatible with both Python2 and Python3. > > Change references to X.keys() to list(X.keys()) to return a list that can be iterated in both Python2 and Python3. I don't think this is necessary. From what I can tell, using the key-view of the dict objects is fine since we're always doing so in a read-only manner. > > Add the literal text (object) to the end of class definitions to be consistent with Python3 class definition. Since we're going to be dropping Python 2 soon, do we need this? I get that we'd be mixing old-style with new-style classes in Python 2 vs Python 3 but it's not like we do anything with the classess related to type() or isinstance(). Anyway, I'm going to stop here since it's way past my bedtime. I hope that my suggestions so far have been helpful. > > Change integer divison to use "//" instead of "/" Under Both python2 and python3 // will return a floor()ed result which matches existing functionality. > > Change the format string for displaying decimal values from %d to %4.1f% when displaying a progress. This avoids displaying long repeating decimals in user displayed text. > > Signed-off-by: Ben Keene <seraphire@xxxxxxxxx> > (cherry picked from commit bde6b83296aa9b3e7a584c5ce2b571c7287d8f9f)