FWIW, I would vote for the "__version__", "__author__", etc assignments being after the imports. Reason being cases where the "__version__" is not from VCS, but is calculated from pkg_resources:
from pkg_resources import get_distribution __version__ = get_distribution('mypackage').version Also, then more useful things like "__all__" (which can very reasonably rely on imports), can be together with "__version__" and "__author__" assignments. I would vote: shebang docstring imports dunder assignments other code... </2 cents> ~ Ian Lee On Fri, Mar 20, 2015 at 9:24 PM, Ian Lee <ianlee1...@gmail.com> wrote: > Guido, > > In that case would you be open to a patch to update the PEP accordingly? > > Additionally, does that official statement cover other dunder assignments > (e.g. "__author__"?). If so I'll update the PEP8 tool accordingly. > > Thanks, > > ~ Ian Lee > On Mar 20, 2015 8:55 PM, "Guido van Rossum" <gu...@python.org> wrote: > >> FWIW, I think __version__, __author__ etc. were bad ideas. Almost nobody >> manages these correctly. Note that the PEP 8 section starts with less than >> an endorsement: "If you *have* to have Subversion, CVS, or RCS crud in >> your source file, do it as follows." >> >> That said, if an official answer is required, common sense would suggest >> that __version__ should go before the imports. (I would put it before the >> docstring too, except then the docstring wouldn't be a docstring any more. >> Go figure.) >> >> On Fri, Mar 20, 2015 at 6:38 PM, Ben Finney <ben+pyt...@benfinney.id.au> >> wrote: >> >>> Lewis Coates <lew...@pdx.edu> writes: >>> >>> > In pep8 there are two conflicting statements, both >>> > >>> > https://www.python.org/dev/peps/pep-0008/#version-bookkeeping >>> > https://www.python.org/dev/peps/pep-0008/#imports >>> > >>> > Stipulate that they should be "at the top of the file after any module >>> > comments and docstrings." Which of these takes precedence? >>> >>> I don't know an official answer. The convention I've observed is >>> overwhelmingly in one direction: import statements come before any >>> assignment statements. >>> >>> > Secondly, we also have an "__author__", and "__project__" variables, I >>> > assume these would be put with the version information as well? >>> >>> Yes. >>> >>> -- >>> \ “Welchen Teil von ‘Gestalt’ verstehen Sie nicht? [What part of | >>> `\ ‘gestalt’ don't you understand?]” —Karsten M. Self | >>> _o__) | >>> Ben Finney >>> >>> _______________________________________________ >>> Python-Dev mailing list >>> Python-Dev@python.org >>> https://mail.python.org/mailman/listinfo/python-dev >>> Unsubscribe: >>> https://mail.python.org/mailman/options/python-dev/guido%40python.org >>> >> >> >> >> -- >> --Guido van Rossum (python.org/~guido) >> >> _______________________________________________ >> Python-Dev mailing list >> Python-Dev@python.org >> https://mail.python.org/mailman/listinfo/python-dev >> Unsubscribe: >> https://mail.python.org/mailman/options/python-dev/ianlee1521%40gmail.com >> >>
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com