On Mar 14, 2015 2:03 PM, "Robert Bradshaw" <rober...@gmail.com> wrote:
>
> That is strange, looks like it was an attempt to support relative imports?
>
> https://github.com/cython/cython/blob/384cc660f5c7958524b8839ba24099fdbc6eaffd/Cython/Compiler/ModuleNode.py#L2271

Ah, I see.

I don't see how this could affect relative imports, because if foo.bar
does 'import .baz', this doesn't actually trigger any access to
sys.modules["foo.bar"]. (Exception: if you have foo/__init__.pyx. Is
that actually supported?) The critical thing for relative imports is
having correct __name__ and/or __package__ module-level global
variables, and AFAICT cython is not currently doing anything to set
these up. But it probably should, because relative imports are a
thing.

OTOH, putting the module into sys.modules *is* crucial to handle
recursive imports, i.e. where foo.pyx's module init function imports
bar.py, and bar.py imports foo. For regular python modules or for
python 2 extension modules, this works because even while foo is still
initializing, you can already get its (incomplete) module object from
sys.modules; for python 3 extension modules this won't work unless we
do it by hand. So the code that Cython is generating seems to be
correct and necessary, it just has the wrong idea about what the
fully-qualified module name is, and this breaks things.

So I'm convinced that Cython has to know the fully-qualified module
name for correct operation, and if it's wrong then weird real bugs
will happen. Next question: how am I supposed to make this work? Maybe
I'm just missing it, but I can't find anything in the docs about how I
should tell cython that mtrand.pyx is really numpy.random.mtrand...?

-n

> On Sat, Mar 14, 2015 at 1:17 AM, Nathaniel Smith <n...@vorpus.org> wrote:
> > Hi all,
> >
> > Can anyone shed any light on this?
> >
> > https://github.com/numpy/numpy/issues/5680
> >
> > -n
> >
> > --
> > Nathaniel J. Smith -- http://vorpus.org
> > _______________________________________________
> > cython-devel mailing list
> > cython-devel@python.org
> > https://mail.python.org/mailman/listinfo/cython-devel
> _______________________________________________
> cython-devel mailing list
> cython-devel@python.org
> https://mail.python.org/mailman/listinfo/cython-devel
_______________________________________________
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel

Reply via email to