[Distutils] DRAFT PEP 396 - module version number

Éric Araujo merwok at netwok.org
Sat Apr 9 18:23:20 CEST 2011


 Hi,

 Glad to read my review helped :)

>> I know that the referenced PEP 345 call these things “software
>> packages”, but let’s try to use consistent terminology.  See threads
>> starting at
>> 
>> http://mail.python.org/pipermail/distutils-sig/2011-March/017438.html
>> and 
>> http://mail.python.org/pipermail/distutils-sig/2011-March/017450.html 
>> .
> I remember that discussion, but I don't actually remember if there 
> was
> agreement on terminology. ;)  I'm sympathetic to Jim's Elaboration On 
> PJE's
> Glossary.  That would make a worthy PEP for someone else to write 
> <wink>.

 Ah, right, I probably have extrapolated the distutils2 consensus.  I’m
 not sure I should be the one to write this PEP, I already have enough 
 of
 a nitpicker reputation.  Maybe if a distutils-sig veteran accepts to be
 a co-writer.

> In this case I'm changing it to *The Bob Bundle* since that's 
> sufficiently
> meaningless as to not be distracting.

 I also think that “bundle” is a nice term to name what the docs
 currently calls a distribution.

>>> Carole maintains several namespace packages, each of which are
>>> independently developed and distributed.
>> I am not sure we should advertise setuptools namespace packages, 
>> given
>> that standardization is under way (PEP 382).  [...]
> Right.  This is just a use case and it doesn't mention setuptools
> specifically, even though it does mention setup.py.  Everybody knows 
> what the
> latter is, and I can't think of any better way to phrase this, so I 
> guess I'll
> leave it.

 As PJE helpfully corrected, namespaces packages are not tied to
 setuptools, even though in practice they mostly are.  The current PEP
 text is therefore fine.

>>> of an ``__version__`` module attribute by independent module
>> s/an/a/
> Heh, yeah I'm old skool so I still pronounce it "under under".  
> Saying
> "dunder" just reminds me too much of The Office to take seriously. :)

 I write about Python much more than I talk about it, so I pronounce it
 “version” (or more exactly, I say “init” when I talk about “__init__”,
 or “underscore-underscore-init-underscore-underscore” when I need total
 explicitness).  I never read or heard “dunder”.

>>> Another example of version information is the sqlite3 [5]_ library
>> the sqlite3 module

 You overlooked that one.

>>> #. For modules which are also packages, the top level module 
>>> namespace
>>>    SHOULD include the ``__version__`` attribute.
>> Just a remark: I don’t remember ever reading the term “top-level 
>> module
>> namespace”.  It’s not hard to understand, but it might be helpful to
>> some readers if you add “(i.e. the :file:`{somepackage}/__init__.py`
>> file)”.  (The brackets will cause the enclosed text to be marked up 
>> as
>> replaceable text, just a nicety.)
> How about just removing "top-level"?
>
>     #. For modules which are also packages, the module namespace 
> SHOULD
>        include the ``__version__`` attribute.

 I’m still not sure “module namespace” will be clear to everyone.

> (Aside: using :file:`file.py` produces a warning when the PEP html is
> generated:

 Fooled again: it’s a Sphinx-specific role, not a docutils one.  Forget
 my advice and use ````.

>>> #. The ``version`` attribute in a classic distutils ``setup.py`` 
>>> file,
>>>    or the ``Version`` metadata field in a PEP 345 [7]_ SHOULD be
>>>    derived from the ``__version__`` field, or vice versa.
>> “In a PEP 345” what? :) file, I guess.
> Oops, IIUC there really isn't a PEP 345 "thing" so I've rewritten it 
> like
> this:

 There is actually a METADATA file, but your rewrite is good without
 mentioning that.

>>> Because the distutils2 style ``setup.cfg`` is declarative, we can't
>>> run any code to extract the ``__version__`` attribute, either via
>>> import or via parsing.  This PEP suggests a special key be allowed 
>>> for
>>> the ``version`` field in a ``setup.cfg`` file to indicate "get the
>>> version from this file".
>> With my distutils2 hat on, I recommend a KISS approach similar to 
>> what’s
>> done for the long description: just define another key in the 
>> setup.cfg
>> specification:
>>
>>  [metadata]
>>  version-from-file: elle.py
> It's an open issue, but we definitely want built-in support from
> distutils2/packaging.  This section was one of the main reasons why I 
> posted
> here first, because I really wanted to get feedback on how best to 
> support
> this in a setup.cfg file.  I've changed the example to your text 
> above, since
> it does seem cleaner.  Though if we get more universal adoption of 
> the PEP, I
> suspect version-from-file will be much more popular than version, so 
> we might
> want to address keeping the common case simple.

 Tarek already ruled last summer that field names in setup.cfg have to
 have their PEP 345 name.  I proposed to merge author name and email 
 into
 the author field, and to have the description field always refer to a
 file: author and author_email are still separate, and a new
 description_from_file fields has been added.  That’s why I think a new
 field has to be defined.  version-from should be a short enough name.  
 I
 also expect most people to use copy-paste or the interactive setup.cfg
 creation helper, so field name length should not be that big of an 
 issue.

 Now on to defuse FUD on python-dev.

 Regards


More information about the Distutils-SIG mailing list