Nick Coghlan added the comment:

Changes in version 5:

- added a new reference pointing back to this tracker issue. I figure that's a 
good precedent to set for future updates.
- I liked Barry's point about "Don't break backwards compatility" enough that I 
moved it into its own paragraph ahead of the bulleted list and changed the 
heading to "Some other good..."
- changed a few more cases of "rule" to "guideline"
- tabs vs spaces section now strongly prefers spaces, saying tabs should be 
used only for legacy compatibility reasons
- changed the line length recommendation to allow up to 99 characters when it 
improves readability (I kept 79 as the default recommendation, and 72 for 
reflowing long blocks of text)
- rewrapped my additions to the PEP at 72 chars ;)
- encodings section no longer mentions Latin-1, referring only to UTF-8, ASCII 
and non-ASCII.
- class based exception note changed to a recommendation to inherit from 
Exception (this ended up leading quite well into the comment about inheritance 
heirarchy design)
- we already had an admonition to avoid bare except clauses (as well as "except 
BaseException:")
- dropped the "highly" from the annotation decorator recommendation
- added a note that the public/internal API guideline still applies when using 
a wildcard import to republish APIs, as well as noting you should only use them 
when you don't know the list of republished names in advance

I *didn't* make any changes in relation to Barry's comment about having the 
commentary intermixed with the guidelines. I quite like the notion of stripping 
PEP 8 down to just the essentials and having PEP 108 as "The annotated PEP 8", 
but that's a bigger project than I'm prepared to tackle (heck, even the 
*current* patch turned out to be a far more substantial update than I 
expected!).

I'll commit this version - feel free to tweak further in the PEP repo if you 
spot any mistakes :)

I deliberately left the following point out since Guido said "out of scope" 
above (I wrote it before noticing that):

- Use an iterator or a "loop-and-a-half" construct rather than
  repeating loop setup code in the body of the loop.

  Yes::

    def itervalues(x):
        yield x.getvalue()

    for value in itervalues(obj):
        process(value)

  Yes::

    while True:
        value = obj.getvalue()
        if not value:
            break
        process(value)

  No::

    value = obj.getvalue()
    while value:
        process(value)
        value = obj.getvalue()

----------
Added file: http://bugs.python.org/file31109/issue18472_pep_8_update5.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue18472>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to