[Distutils] RFC: Updating PEP 345

Tres Seaver tseaver at palladion.com
Fri Apr 10 15:19:13 CEST 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jim Fulton wrote:
> On Apr 9, 2009, at 6:40 PM, Tres Seaver wrote:
> 
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Jim Fulton wrote:
>>> On Apr 9, 2009, at 12:55 PM, Tres Seaver wrote:
>>> ...
>>>> I have backed off on the notion of overloading 'Requires:' /
>>>> 'Provides:'
>>>> / 'Obsoletes:', following Jim's notion of deprecating them in  
>>>> favor of
>>>> new fields.  I named them 'Requires-Dist:', 'Provides-Dist:', and
>>>> 'Obsoletes-Dist'.
>>>>
>>>> "Stock" distutils should probably spell the arguments to
>>>> distutils.core.setup predictably:  'requires_dist', 'provides_dist',
>>>> 'obsoletes_dist'.  setuptools can treat 'install_requires' as an
>>>> undeprecated alias for 'requires_dist'.
>>>
>>> What is the rational for this?  I'd strongly prefer the "requires"
>>> argument name to be compatible with setuptools.  Otherwise, I think
>>> we'll introduce needless confusion.
>> I'm aiming for self-consistency within the 'PKG-INFO' field names:
>>
>> - 'Requires'
>> - 'Requires-Python'
>> - 'Requires-External'
>>
>> The 'Obsoletes' and 'Provides' fields also need
>> distutils-project-oriented versions, so picking a suffix ('-Dist')  
>> which
>> matched for them seemed cleanest.
>>
>> Add that to the fact that setuptools has no way (yet) to spell
>> 'provides' or 'obsoletes', and it seemed to me clearer to just make
>> setuptools current argument an alias for the "consistent" version to  
>> be
>> landed in distutils.
> 
> 
> I get that. In fact, I already got that. :) I think backward  
> compatibility with existing wide usage is more important and not  
> incompatible.
> 
> So then I suggest we change the field and option names to (adjusting  
> capitalization as necessary): install_requires, install_provides, and  
> install_obsoletes.
> 
> I'm a very strong -1 to requires_dist.

I think we need to distinguish the spelling of the arguments passed to
setup() from the fields written into PKG-INFO.  At the moment, there is
a very widespread usage of 'install_requires' among setuptools-based
packages.  How that argument maps onto PKG-INFO fields (which is what
PEP 345 is really about) is open to some debate.

I think consistency *within* PKG-INFO fieldnames is more important than
consistency between setup arguments and the corresponding fieldnames:
for instance, distutils.core.setup already defiens a 'url' argument,
which maps onto 'Homepage-URL' in PKG-INFO.

We could use the names you proposed for arguments to 'setup()', and
still use the names I proposed for PKG-INFO.  There is one more new
argument to setup() we should consider, which might be spelled
'build_requires', and which would map onto the 'Requires-External'
PKG-INFO field.


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJ30dR+gerLs4ltQ4RAhYHAKDY971Z0WOVGWMWUaGML42ByTNguwCfb5gX
a6/EZb+J/4T+XgtMBSoCgLs=
=rhm+
-----END PGP SIGNATURE-----



More information about the Distutils-SIG mailing list