在模块中使用私有元数据变量(如__author__
)的惯例来自何处?
This Python邮件列表线程似乎暗示了2001年对它的一些讨论,但听到它的声音已经公开了。
除此之外,我只能找到this PEP on package metadata,这看起来很有影响力,但最多只能用于切线。
我想尝试找一些有关该主题的明确材料,以便我的文档工具可以成功解析这些元数据变量。
答案 0 :(得分:19)
我的猜测是,从包装元数据不常见的旧时代开始。 在PEP 8中,鼓励使用__version__顶级变量来保存正在使用的版本控制系统的修订版ID。这可以追溯到2001-05-01。 PEP 396正在取代模块__version__属性。
对于__author__,python dev邮件列表中有一篇关于此事的帖子。这个可以追溯到2001-03-01。作者质疑__author__的用法:“下一步是什么?__ execute_signoff__?”。
由于PEP中没有提及,我们不必担心__author__。包装元数据无论如何都是我们的朋友。
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__?