__author__的起源是什么?

时间:2012-03-02 09:51:19

标签: python metadata

在模块中使用私有元数据变量(如__author__)的惯例来自何处?

This Python邮件列表线程似乎暗示了2001年对它的一些讨论,但听到它的声音已经公开了。

除此之外,我只能找到this PEP on package metadata,这看起来很有影响力,但最多只能用于切线。

我想尝试找一些有关该主题的明确材料,以便我的文档工具可以成功解析这些元数据变量。

1 个答案:

答案 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__?