2012-03-02 59 views
21

在模块中使用私有元数据变量(如__author__)的约定来自哪里?__author__的起源是什么?

This Python邮件列表线程在2001年似乎暗示了一些关于它的讨论,但通过它的声音,大会已经在野外。

除此之外,我只能找到this PEP on package metadata,这似乎有影响力,但最好是正切。

我想尝试找到关于这个主题的一些明确材料,这样我的文档工具就可以成功地解析这些元数据变量。

回答

17

我的猜测是,这是从过去封装元数据不常见的时候开始的。 在PEP 8中,鼓励使用__version__顶级变量来保存正在使用的版本控制系统的版本ID。这可以追溯到2001-05-01。 PEP 396正在取代模块__version__属性。

对于__author__,有一篇关于此事的python开发邮件列表。这个可以追溯到2001-03-01。作者质疑__author__的使用:“下一步是什么?__cute_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__? 
+0

鉴于这可能是有没有办法可靠地分析\ _ \ _笔者\ _ \ _或\ _ \ _学分\ _ \ _属性。 – itsafire 2012-03-05 10:21:18