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 <ianlee1521@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" <guido@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+python@benfinney.id.au> wrote:
Lewis Coates <lewisc@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