"Martin v. Löwis", 15.11.2011 01:33:
Currently, for Cython? I don't think that can work.

Hmm, it might work to put an empty module next to the 'real' extension
and to import it to figure out the common directory of both. As long as
it's still there after installation and the right one gets imported,
that is. A relative import should help on versions that support it.
Although that won't help in the __init__ case because a relative import
will likely depend on __path__ being available first. Chicken and egg...

If there was an actual __init__.py that just had

import __cinit__

or rather

    from .__cinit__ import *

(relative import only for CPythons that support it)

then __cinit__ could copy __path__ from the already-loaded __init__, no?

Hmm, right - that should work. __init__ would be in sys.modules with a properly set __file__ and __path__, and __cinit__ (knowing its own package name anyway) could look it up there to find out its file system path.

I don't think there's much code out there that actually uses __file__ to find out the name of the module rather than just its package directory. So it would (more or less) fix both problems for __init__ files, and it should work with Py2.4+.


Certainly. An approach similar to _Py_PackageContext should be possible.

Yes, and a "_Py_ModuleImportContext" would be rather trivial to do.
Could that go into 3.3?

If somebody contributes a patch: sure.

Ok, cool.


What about 2.7?

Certainly not. It would be a new feature, and there can't be new
features in 2.7.

Could an exception be made there regarding new "features"?
It's not likely to break anything, but it would help Cython.

"Not likely to break anything" really means it practice
"it probably will break somebody's code". Policies are
there to be followed, and this one I personally feel strongly
about. If it means that users can get certain Cython features
only with Python 3.x, the better.

Understandable.

Stefan

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to