Panu Matilainen wrote:
Separating the namespaces is a fundamental problem for the dependency
extractor. For provides this is obviously not an issue, but requires
need to be generated without being able to actually locate (and possibly
import) the actual module. Python syntax for importing egg- and regular
modules is the same, so they need to live in the same namespace,
otherwise the manual Requires just turn into manual BuildRequires and
the depency extractor will be just adding syntactic sugar for nothing :)
I think I've figured out a way to make this almost work::
import sqlalchemy
is equal to Requires python(sqlalchemy)
Any of these::
__requires__='SQLAlchemy'
pkg_resources.require('SQLAlchemy')
requires.txt:
install_requires = [ 'SQLAlchemy' ]
are equal to python-egg(sqlalchemy)
This breaks down when thinking about what happens in this case::
__requires__='TurboGears'
import pkg_requires
import sqlachemy
At this point you have to know whether TurboGears or anything that it
requires has a requires.txt which includes ['SQLAlchemy']. If it does
we are using the egg interface to sqlalchemy. If it doesn't we are
using the normal interface.
So, assuming we remove our patch that stops generation of egg-info files
for distutils generated modules for F9, I agree that there isn't very
much value for quite a bit of work.
-Toshio