[Distutils] distlib and wheel metadata

Nick Coghlan ncoghlan at gmail.com
Thu Feb 23 08:47:01 EST 2017


On 23 February 2017 at 22:32, Nick Coghlan <ncoghlan at gmail.com> wrote:

> On 23 February 2017 at 18:53, Paul Moore <p.f.moore at gmail.com> wrote:
>
>> On 23 February 2017 at 08:44, Nick Coghlan <ncoghlan at gmail.com> wrote:
>> > That gets us back into the world of defining what the various package
>> types
>> > mean, and I really don't want to go there :)
>>
>> And yet I still don't understand what's wrong with "application",
>> "library", and "metapackage" (the latter saying to me "complex thing
>> that I don't need to understand"). Those terms are clear enough -
>> after all, they are precisely the ones we've always used when debating
>> "should you pin or not"?
>>
>> Sure, there's a level of judgement involved - but it's precisely the
>> *same* judgement as we're asking authors to make when asking"should I
>> pin", just using the underlying distinction directly.
>>
>
> Thinking about it further, I may be OK with that, especially since we can
> point to concrete examples.
>
>   component: a library or framework used to build Python applications.
> Users will mainly interact with the component via a Python API. Examples:
> requests, numpy, pytz
>

Slight amendment here to use the term "library" rather than the generic
component (freeing up the latter for its usual meaning in referring to
arbitrary software components). I also realised that we need a separate
category to cover packages like "pip" itself, and I chose "tool" based on
the name of the field in pyproject.toml:

============
    library: a software component used to build Python applications. Users
will mainly interact with the component via a Python API. Libraries are
essentially dynamic plugins for a Python runtime. Examples: requests,
numpy, pytz
    tool: a software utility used to develop and deploy Python libraries,
applications, and scripts. Users will mainly interact with the component
via the command line, or a GUI. Examples: pip, pycodestyle, gunicorn,
jupyter
    application: an installable client application or web service. Users
will mainly interact with the service via either the command line, a GUI,
or a network interface. While they may expose Python APIs to end users, the
fact they're written in Python themselves is technically an implementation
detail, making it possible to use them without even being aware that Python
exists. Examples: ckan (network), ansible (cli), spyder (GUI)
    metapackage: a package that collects specific versions of other
components into a single installable group. Example: PyObjC
============

I think a package_type field with those possible values would cover
everything I was worried about when I came up with the idea of the separate
"integrates" field, and it seems like it would be relatively
straightforward to explain to newcomers.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20170223/2967ffde/attachment-0001.html>


More information about the Distutils-SIG mailing list