Skip to content
  • Guilhem Saurel's avatar
    Python clean, mostly pep8 · 626a16ca
    Guilhem Saurel authored
    https://www.python.org/dev/peps/pep-0008/
    
    A few hints:
        + About Spaces:
            - always after a comma
            - never after [, (, {
            - never before ], ), }
            - always around -, +, *, **, %, ==, >=, <=
            - always around = for an assignation
            - never around = for a default value of an argument
            - never at the end of a line
        + One statement by line:
            - nothing after : unless inside []
            - no ;
        + No useless (), like in a simple if or assert
        + Indentation uses four spaces
        + Blanklines:
            - 2 before class or function declaration
            - 1 before class method declaration
            - never more than 2
        + Line length:
            - We said 79. This is far from beeign respected. Maybe 119 is more reasonable
        + Align:
            - at the begining of a line continuation
            - not multiple spaces before = to align multiple assignements
    
    Of course, in our case, it would be tricky to follow some other rules, like:
        N802 function name should be lowercase
        N803 argument name should be lowercase
        N806 variable in function should be lowercase
    
    Other issues may be addressed:
        F401 '<something>' imported but unused
        F403 'from <some_lib> import *' used; unable to detect undefined names
    
    To check all of this:
        flake8 --ignore=N802,N803,N806 --max-line-length=119 <root_folder>
    
    Other things changed:
        - import order (thanks isort)
        - useless elif changed to if
        - useless else removed
        - usage of ValueError, when an argument does not fit the expected type / size
        - issubclass(x.__class__, X) / x.__class__ == X → isinstance(x, X)
        - isinstance accepts a list or a tuple of classes (eg: isinstance(x, (int, float)))
        - print "" → print
    626a16ca