On Thu, Mar 11, 2010 at 11:05 AM, Baiju M <[email protected]> wrote: > On Thu, Mar 11, 2010 at 10:09 AM, P.J. Eby <[email protected]> wrote: >> At 09:50 AM 3/10/2010 +0530, Baiju M wrote: >>> >>> I spend some time with Buildout and setuptools code to identify the issue. >>> I will try to explain my findings. >>> >>> 1. Buildout is relying on pkg_resources.Requirement.parse function to >>> get the "project_name" like this: >>> >>> pkg_resources.Requirement.parse('jiva_interface').project_name >>> >>> I can see from the code of `Requirement` class that, the `__init__` >>> method is deprecated and recommend to use `parse` >>> function. >> >> It is undocumented, not deprecated. You are simply not supposed to create >> instances via that (private) constructor. > > Okay, fine. Buildout doesn't create any instance directly. > >>> Does this mean that we should not use the attributes >>> of an instance of `Requirement` class? This is very important as >>> the `parse` function return a list of instances of `Requirement` class. >> >> Requirement objects are documented; see: >> >> http://peak.telecommunity.com/DevCenter/PkgResources#requirement-objects > > So, according to the EBNF given there, "_" is a valid project_name identifier: > > project_name ::= identifier > identifier ::= [-A-Za-z0-9_]+ > >>> So, if it is acceptable to use the "project_name" attribute, then >>> Buildout can rely on it, right ? >> >> Yes. >> >>> According to this code, this will be the result: >>> >>> pkg_resources.safe_name('jiva_interface') >>> 'jiva-interface' >>> >>> And: >>> >>> pkg_resources.Requirement.parse('jiva_interface').project_name >>> 'jiva-interface' >>> >>> Is this behavior correct ? >> >> Yes it is. All non-alphanumeric, non-dot characters are replaced with '-' in >> a project name. This turns project names like e.g. "Foo's Bar Factory" into >> their canonical form (i.e., "Foo-s-Bar-Factory"). > > If "_" is a valid project_name identifier, why it is replaces with "-" ?
There nearly 300 packages in PyPI with "_" in the package name. For all the packages built using Setuptools, the "Name" field in the PKG-INFO file is replaced with "-". I checked some of the packages built with "distutils.core" [1] Distutils is not replacing "Name" field in PKG-INFO file with "-". Why Setuptools is behaving different from Distutils ? Regards, Baiju M [1] http://pypi.python.org/pypi/text_table/0.02 _______________________________________________ Distutils-SIG maillist - [email protected] http://mail.python.org/mailman/listinfo/distutils-sig
