[Python-Dev] PEP 396, Module Version Numbers
Glenn Linderman
v+python at g.nevcal.com
Sat Apr 9 20:21:28 CEST 2011
On 4/9/2011 9:23 AM, Éric Araujo wrote:
> Hi,
>
> Le 06/04/2011 23:58, Glenn Linderman a écrit :
>> On 4/6/2011 7:26 AM, Nick Coghlan wrote:
>>> On Wed, Apr 6, 2011 at 6:22 AM, Glenn
>>> Linderman<v+python at g.nevcal.com> wrote:
>>>> With more standardization of versions, should the version module be
>>>> promoted
>>>> to stdlib directly?
>>> When Tarek lands "packaging" (i.e. what distutils2 becomes in the
>>> Python 3.3 stdlib), the standardised version handling will come with
>>> it.
>>
>> I thought that might be part of the answer :) But that, and below, seem
>> to indicate that use of "packaging" suddenly becomes a requirement for
>> all modules that want to include versions. The packaging of "version"
>> inside a version of "packaging" implies more dependencies on a larger
>> body of code for a simple function.
> Not really. Some parts of distutils2/packaging are standalone modules
> that are deliberately exposed publicly for third parties to use:
> version, metadata, markers, etc. packaging.version is just the full
> name of the module implementing PEP 386. (The first implementation,
> called verlib, has not been explicitly ended, nor the references in the
> PEP updated.)
Glad for the clarification here. As long as packaging.version doesn't
have dependencies on large amounts of code to be loaded from the rest of
packaging, then I have no serious objection to that structure.
Although, writing "packaging.version" just now, it seems like the result
could be perceived as the "packaging version" which might be distinct
from the "real version" or "actual version" or "code version". That's
just a terminology thing that could be overcome with adequate documentation.
Then there is the question Nick raised about distributions that want to
cut back on space, and provide alternate mechanisms than Python's
packaging module to distribute code... producing the perception that
they could avoid including packaging in their smallest distribution (but
would probably package a packaging package using their packaging
mechanism). If that dropped packaging.version, it could be problematic
for doing version checking in applications. So distributions might have
to split apart the packaging package.
Finally, if there are other competing historical packaging mechanisms,
or new ones develop in the future, packaging packaging.version
separately from the rest of packaging might avoid having different
versions of version: when included a replacement system might think it
needs to also replace that component for completeness.
So I still favor a top-level version module that isn't included in
packaging, and implementation that doesn't depend on packaging. But
only at +0.
>> So, no support for single .py file modules, then?
> From packaging’s viewpoint, a project (something with a name and a
> version) is a directory with a setup.cfg file. The directory can
> contain zero or more Python modules, Python packages, extension modules
> or data files.
From packaging's viewpoint, there is nothing wrong with that. But from
a non-packaging viewpoint, a user of other distribution mechanisms
wouldn't necessarily want to or need to create a setup.cfg file, nor be
forced to write code to obtain __version__ by calling a packaging method
to obtain it. Not that the PEP as written currently requires that.
>> Caveat: I'm not 100% clear on when/how any of "distutils", "setuptools",
>> or "packaging" are invoked
>
> FTR: setuptools is a monkey-patching set of extensions to distutils:
> packaging is a full replacement of distutils. packaging does not depend
> on distutils nor setuptools; it is a fork of distutils with some ideas
> and code taken from setuptools.
Thanks, but that part I actually knew from cecent discussion on this
list. What I'm not clear on is whether modules packaged by any of
distutils, setuptools, or packaging, because of being packaged by them,
wind up including 0%, 10%, 90%, or 100% of the code from distutils,
setuptools, or packaging at runtime. My favored percentage would be 0%,
as I believe a packaging system should do its stuff at the time of
making, distributing, and installing code, but should get out of the way
of the runtime code, but I would find maybe 10% acceptable, if it was
only one or two files to be searched for and included, to achieve
significant benefits to the packaged code.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20110409/c1963e1b/attachment.html>
More information about the Python-Dev
mailing list