[Cython] Strange cimport behaviour
Robert Bradshaw
robertwb at math.washington.edu
Thu Jul 21 07:30:29 CEST 2011
On Wed, Jul 20, 2011 at 9:40 PM, Vitja Makarov <vitja.makarov at gmail.com> wrote:
> 2011/7/21 Robert Bradshaw <robertwb at math.washington.edu>:
>> On Wed, Jul 20, 2011 at 9:27 PM, Vitja Makarov <vitja.makarov at gmail.com> wrote:
>>> 2011/7/16 Lars Buitinck <L.J.Buitinck at uva.nl>:
>>>> 2011/7/15 Vitja Makarov <vitja.makarov at gmail.com>:
>>>>> I've found strange bug. In my example cimport misses "fcntl.h" include:
>>>>>
>>>>> ((c2f2e12...)) vitja at vitja-laptop:~/work/cython-vitek/zzz$ cat ./fff.pyx
>>>>> cimport posix.unistd
>>>>> cimport posix.fcntl
>>>>>
>>>>> print posix.fcntl.O_RDWR
>>>>
>>>> Fascinating; I can reproduce the error (on Scientific Linux 5.5), but
>>>> it goes away when I reverse the order of the includes.
>>>>
>>>
>>> What's about this issue? Is that easy to fix before release or it's
>>> better to create a ticket?
>>
>> I'm not sure what we can do here--we make sure to emit the #include
>> statements in the same order as they are encountered in the Cython
>> sources because C is sensitive to this kind of thing, but we can't
>> really "fix" C. I suppose we could cimport posix.fcntl from within
>> posix.unistd to force an ordering.
>>
>
> That's not C bug. That's cython bug. Actualy fcntl.h isn't included at all.
> That seems to be a problem with cimport and packages.
>
> As I said "from posix cimport unistd, fcntl" works just fine.
I thought you meant that
cimport posix.fcntl
cimport posix.unistd
worked but
cimport posix.unistd
cimport posix.fcntl
didn't. I'm seeing the bug now. (There are of course cases where one
does care about import order.)
- Robert
More information about the cython-devel
mailing list