[Cython] Cython is not PEP-420 (Implicit Namespace Packages) compliant

Alexey V Gorshkov animus at wayround.org
Sat Dec 15 21:05:55 CET 2012

Stefan Behnel wrote:
> Alexey V Gorshkov, 15.12.2012 02:17:
>> Reporting about Cython PEP-420 (Implicit Namespace Packages) incompliance.
>> (Sample package setup attached)
>> (http://www.python.org/dev/peps/pep-0420/)
>> Next package's tree will not work and will return error
>> [...]
> I'm sure it's not - the compile time package resolution code in Cython was
> written long before namespace packages were even being thought about. (For
> comparison, remember that almost none of the existing CPython versions
> supports namespaces packages either, 3.3 is the only exception).
> Basically, the runtime import code should be ok, but the package resolution
> at compile time, that is used mainly for cimports and for figuring out the
> fully qualified module name of compiled modules, doesn't have any support
> for packages that don't have an __init__.py.
> Would you care to change that? You could try to come up with a patch, we'd
> certainly appreciate it.
> Stefan
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> http://mail.python.org/mailman/listinfo/cython-devel
Following changes works for me. But I did not made any tests except on 
package I've sent in initial message.

diff --git a/Cython/Utils.py b/Cython/Utils.py
index 5739f38..8f05287 100644
--- a/Cython/Utils.py
+++ b/Cython/Utils.py
@@ -3,7 +3,7 @@
  #            anywhere else in particular

-import os, sys, re, codecs
+import os, os.path, sys, re, codecs

  modification_time = os.path.getmtime

@@ -87,7 +87,7 @@ def search_include_directories(dirs, qualified_name, 
suffix, pos,
              dirs = (find_root_package_dir(file_desc.filename),) + dirs

-    dotted_filename = qualified_name
+    dotted_filename = qualified_name.replace('.', os.path.sep)
      if suffix:
          dotted_filename += suffix
      if not include:

More information about the cython-devel mailing list