Python namespace in packages

Ian Burrell ianburrell at gmail.com
Tue Jan 17 19:28:29 UTC 2006


On 1/17/06, Jeff Pitman <jeff.pitman at gmail.com> wrote:
> On 1/12/06, Ignacio Vazquez-Abrams <ivazquez at ivazquez.net> wrote:
> > Currently in Perl packages rpmbuild detects what modules are used and
> > provided by the package and creates Requires and Provides tags in the
> > form of "perl(Foo::Bar)". Supposedly there are scripts that can detect
> > module usage in Python apps as well and can generate the appropriate
> > tags, e.g., "Provides: python(kid)". I'm just wondering why Fedora isn't
> > taking advantage of this.
>
> Because, up until now, no one wanted to mess with sorting out
> upstream's inconsistent naming schemes. Perl works wonderfully because
> everything you see in CPAN follows a nominally unambiguous grammar
> whereas in Python, anything goes. But, the script on the mandrake
> archives might be the way around this, I dunno.
>

Python does have a namespace for imports.  It maps directly to
directories and files in the site-packages tree.  The inconsistency is
in the naming of projects and rpm packages.  A separate namespace for
Python packages like with Perl modules should.  For example, the yum
package would provider python(yum), python(repomd), and
python(rpmUtils).   Instead of depending on yum, yum-utils could
depend on python(yum).

Perl and Ruby work similarly.  Perl, at least for newer packages,
names the tarballs after the  modules contained inside.  Some of the
older modules don't follow the naming scheme.  Which is why there is a
separate namespace for the modules.  For example, perl(LWP) is
provided by perl-libwww-perl with the file
/usr/lib/perl5/vendor_perl/5.8.6/LWP.pm.

 - Ian




More information about the fedora-devel-list mailing list