Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the origin of __author__?

Where does the convention of using private metadata variables like __author__ within a module come from?

This Python mailinglist thread seems to hint at some discussion about it in 2001, but by the sound of it the convention was already out in the wild.

Other than that, I can only find this PEP on package metadata, which seems influential but tangental at best.

I'd like to try and find some explicit material on the subject so my documentation tool can parse these metadata variables successfully.

like image 647
mvanveen Avatar asked Mar 02 '12 09:03

mvanveen


1 Answers

My guess is, it's from the old times when packaging meta data was not common then. In PEP 8 one is encouraged to use the _version_ top level variable to hold the revision id of the versioning system in use. This dates back to 2001-05-01. PEP 396 is superseding this for module _version_ attributes.

For _author_ there is a post from the python dev mailing list, concerning this matter. This one dates back to 2001-03-01. The author questions the use of _author_: "What's next ? _cute_signoff_ ?".

Since there is no mention in the PEPs, don't worry about _author_. Packaging metadata is our friend anyway.

http://mail.python.org/pipermail/python-dev/2001-March/013328.html

 Ping just checked in this:  > Log Message: > Add __author__ and __credits__ variables. >  >  > Index: tokenize.py > =================================================================== > RCS file: /cvsroot/python/python/dist/src/Lib/tokenize.py,v > retrieving revision 1.19 > retrieving revision 1.20 > diff -C2 -r1.19 -r1.20 > *** tokenize.py   2001/03/01 04:27:19 1.19 > --- tokenize.py   2001/03/01 13:56:40 1.20 > *************** > *** 10,14 **** >   it produces COMMENT tokens for comments and gives type OP for all operators.""" >    > ! __version__ = "Ka-Ping Yee, 26 October 1997; patched, GvR 3/30/98" >    >   import string, re > --- 10,15 ---- >   it produces COMMENT tokens for comments and gives type OP for all operators.""" >    > ! __author__ = 'Ka-Ping Yee ' > ! __credits__ = 'first version, 26 October 1997; patched, GvR 3/30/98' >    >   import string, re  I'm slightly uncomfortable with the __credits__ variable inserted here.  First of all, __credits__ doesn't really describe the information given.  Second, doesn't this info belong in the CVS history?  I'm not for including random extracts of a module's history in the source code -- this is more likely than not to become out of date.  (E.g. from the CVS log it's not clear why my contribution deserves a mention while Tim's doesn't -- it looks like Tim probably spent a lot more time thinking about it than I did.)  Anothor source of discomfort is that there's absolutely no standard for this kind of meta-data variables.  We've got __version__, and I believe we once agreed on that (in 1994 or so :-).  But __author__? __credits__?  What next -- __cute_signoff__? 
like image 180
itsafire Avatar answered Sep 19 '22 06:09

itsafire