This part only handles object inheritance
No extra dependency added.
In general LGTM, as someone who's done a 2-3 conversion of similar scale before.
The only suggestion I'd make is to consider changing the __future__ imports to from __future__ import absolute_import, division, print_function
I found this gave the best consistency between 2 & 3. Probably you don't need it at this point, but once the conversion is done there's less to go wrong in future.
Can you split off the pure modernisation changes like new exception or print ? Those are completely non-contentious changes after all. I generally do not like the range and list related changes as many instances are clear regressions for the 2.x case. filter to list comprehension should IMO be a separate change as well, but those are much less problematic and often an improvement in terms of both performance and readability.