Fix exception handling, and update imports

Review Request #9648 — Created Feb. 16, 2018 and submitted

Information

RBTools
master
5629bb1...

Reviewers

Remove fix exception handling, and update imports

Ran Unit tests in Python 2.7 and all passed.

Description From Last Updated

This change breaks Python 2.7. We don't want to remove the (object).

chipx86chipx86

Import groups must be in the following order, with a blank line separating each: from __future__ Python Standard Library imports …

chipx86chipx86

This line should be removed

daviddavid

Not everything in setup() can deal with having unicode strings. I'm not sure it's actually a problem in this particular …

daviddavid

Undo this change?

daviddavid
solarmist
chipx86
  1. 
      
  2. Show all issues

    This change breaks Python 2.7. We don't want to remove the (object).

    1. This should not break anything in Python 2.7. New style classes have been around since Python 2.2. https://docs.python.org/2.5/ref/node33.html
      And support for them is completely dropped in Python 3 https://www.python.org/doc/newstyle/.

    2. I think there's some confusion on what old-style and new-style classes are.

      Old-style classes refer to the older class model in Python 1/2 that you get if you didn't inherit from object. In Python 2, these are old-style classes:

      class A():
          pass
      
      class B:
          pass
      

      Old-style classes don't allow for things like super(). For a while, many built-in Python classes, like Exception, were old-style classes, requiring that you do things like Exception.__init__(self, ...) to call parents.

      To get a new-style class in Python 2, you had to subclass object:

      class A(object):
          pass
      

      That's now implicit in Python 3, meaning that all classes are new-style classes. There's no way to get an old-style class anymore. However, if you need to preserve compatibility with Python 2, you still need to inherit from object, or you're back to using old-style classes on Python 2.

      Removing the inheritance on object will break everything.

    3. Yeah, that was my mistake. My virtualenv was setup wrong. My nosetests-2.7 -v was using Python 3.6 to run.

  3. rbtools/api/resource.py (Diff revision 1)
     
     
     
     
     
     
     
     
     
     
     
     
    Show all issues

    Import groups must be in the following order, with a blank line separating each:

    1. from __future__
    2. Python Standard Library imports
    3. Third-party module imports
    4. Project imports

    Within each, we want import ... statements followed by from ... statements, without a blank line in-between. All must also be in alphabetical order.

    We also don't need absolute_import. Please revert those.

  4. 
      
solarmist
david
  1. Can you rebase this on top of the latest master? There's some overlap with some of the work I did.

  2. 
      
solarmist
david
  1. 
      
  2. rbtools/utils/console.py (Diff revision 3)
     
     
    Show all issues

    This line should be removed

  3. 
      
solarmist
david
  1. 
      
  2. setup.py (Diff revision 4)
     
     
    Show all issues

    Not everything in setup() can deal with having unicode strings. I'm not sure it's actually a problem in this particular case, but I'd feel more comfortable just leaving this file alone.

    1. Is this what you're referring to:
      https://mail.python.org/pipermail/distutils-sig/2009-September/013275.html
      https://mail.python.org/pipermail/distutils-sig/2009-September/013277.html

      It sounds like that issue was handled in Python 2.6.

      Please let me know the specifics and I can write a unit test or at least document that in the code.

    2. What breaks is anything that deals with cmdclasses and option handling. They require native strings on both Python 2.7 and 3.x. This is a common requirement across many Python modules, and in those cases is handled by doing str('blah').

      I don't see problems with the usage in setup.py here. It just needs to be tested on Python 2.7 and supported 3.x releases for all major distribution types (sdist, bdist_egg, bdist_wheel, develop).

  3. setup.py (Diff revision 4)
     
     
    Show all issues

    Undo this change?

    1. Okay?

    2. Two blank lines between sections at the top level is standard.

  4. 
      
solarmist
david
  1. Ship It!
  2. 
      
solarmist
Review request changed
Status:
Completed
Change Summary:
Pushed to master (a7629a1)