> Outside any header requirements or directive documentation requirements,
> are there any changes to PEP8 that folks want to make? If so, please
> list the exceptions and why you think they should be adopted.

==== E251 =====

libtaskotron/directives/bodhi_comment_directive.py:247:67: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:247:69: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:293:13: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:293:15: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:293:31: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:293:33: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:426:28: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:426:30: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:427:33: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:427:35: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:428:29: E251 unexpected 
spaces around keyword / parameter equals
libtaskotron/directives/bodhi_comment_directive.py:428:31: E251 unexpected 
spaces around keyword / parameter equals


def _is_comment_needed(old_result, comment_time, result, time_span = None):

-or-

            outcome = _post_testresult(self.bodhi_api, detail.item,
                        env_data['checkname'],
                        detail.outcome,
                        url = "http://example.com";,
                        doreport = input_data['doreport'],
                        arch = detail.keyvals.get('arch', 'noarch'),
                        )


Josef is used to add spaces between keyword name and its value in method 
definitions or method calls. Personally, I find it more readable according to 
PEP8 (with no space), but Josef claims the opposite :)


==== E128 ====

libtaskotron/check.py:94:17: E128 continuation line under-indented for visual 
indent
libtaskotron/check.py:97:21: E128 continuation line under-indented for visual 
indent
libtaskotron/check.py:209:21: E128 continuation line under-indented for visual 
indent


            raise exc.TaskotronValueError("'output' parameter must be a "
                "mutable sequence of strings. Yours was: %s" % type(output))


This is a braindead check. You have a limited line length, and it is happens 
that you need to type the opening bracket shortly before the end of the line, 
PEP8 imagines you end up providing the rest of the code as a short column of 
text underneath it. Like this:


            raise exc.TaskotronValueError("'output' parameter must be a "
                                          "mutable sequence of strings. "
                                          "Yours was: %s" % type(output))

or you break the line immediately after the opening bracket, like this:

            raise exc.TaskotronValueError(
                "'output' parameter must be a "
                "mutable sequence of strings. Yours was: %s" % type(output))


Still, the most readable code I believe is the first one, against PEP8.


==== E303 ====

libtaskotron/check.py:88:5: E303 too many blank lines (2)
libtaskotron/check.py:110:5: E303 too many blank lines (2)
libtaskotron/check.py:115:5: E303 too many blank lines (2)
libtaskotron/check.py:122:5: E303 too many blank lines (2)
libtaskotron/check.py:142:5: E303 too many blank lines (2)
libtaskotron/check.py:148:5: E303 too many blank lines (2)
libtaskotron/check.py:165:5: E303 too many blank lines (2)
libtaskotron/check.py:189:5: E303 too many blank lines (2)
libtaskotron/check.py:224:5: E303 too many blank lines (2)


This forbids you from adding two blank lines between class methods. Another 
braindead checks.


==== E124 ====

libtaskotron/bodhi_utils.py:146:25: E124 closing bracket does not match visual 
indentation


                log.warn("The build %s is a part of two different updates: '%s'"
                         " and '%s'. That's probably a bug in Bodhi." % (build,
                         failures[build]['title'], build2update[build]['title'])
                        )

Because PEP8 wants this:

                log.warn("The build %s is a part of two different updates: '%s'"
                         " and '%s'. That's probably a bug in Bodhi." % (build,
                         failures[build]['title'], build2update[build]['title'])
                         )

In a longer line of text, having the closing bracket really matching the 
opening one (the first example) is much easier on the eyes.


==== E122 =====

libtaskotron/runner.py:127:17: E122 continuation line missing indentation or 
outdented


            raise TaskotronYamlError("Input yaml should contain correct 'input'"
                                     "section (a mapping). Yours was: %s" % 
type(
                                     self.taskdata['input']))

I don't really understand the purpose of this error. If I move 'type(' to the 
third line, it goes away.


==== E265 ====

libtaskotron/directives/bodhi_comment_directive.py:422:13: E265 block comment 
should start with '# '


            #TODO: replace url with proper URL


Me and Josef are used to avoid the space in these cases. We can re-learn, of 
course. But it's very common to write it this way.


==== E111, E113 ====

libtaskotron/config_defaults.py:53:35: E111 indentation is not a multiple of 
four
libtaskotron/config_defaults.py:53:35: E113 unexpected indentation


    bodhi_posting_comments_span = 4320                                      #:
                                  # 3 days (3*24*60 = 4320)


This is a nice example how automated style checks impede visual coding. In this 
case, it makes absolute sense to have the comment written in this way. However, 
if we suppress E111 and E113 globally, we might miss some potential problems 
elsewhere. I'm not sure if we can suppress certain warnings only in a selected 
block of code, but if we check for PEP8 automatically, we should find out. 
There will be more use cases like this one.




Sooo, I'm not exactly a big fan of automated PEP8 checking (I had to disable it 
in Spyder, because it was driving me mad), but it might be somewhat useful, if 
we configure some exceptions to the general rules.


_______________________________________________
qa-devel mailing list
qa-devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/qa-devel

Reply via email to