[Cython] (Possible) bug: module level global vars end up in upper scope?

Yury V. Zaytsev yury at shurup.com
Mon Jul 25 09:27:40 EDT 2016


Hi,

I've hit the following deviation from Python 2: when a Cython module has a 
global variable, somehow, upon importing the module, the global variables 
end up in the *current* (importing) module scope, rather than *imported* 
module scope, and, while normally relatively harmless, in the case of 
namedtuples, for instance, this has caused pickling errors in our 
production code.

test1.py / test2.pyx

     import collections

     Test = collections.namedtuple("Test", ["test"])

$ ipython
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
IPython 1.2.1 -- An enhanced Interactive Python.

In [1]: import test1

In [2]: test1.Test
Out[2]: test1.Test

In [3]: import test2

In [4]: test2.Test
Out[4]: __main__.Test

I would appreciate any hints in the case that I'm deeply confused and 
doing something obviously wrong...

-- 
Sincerely yours,
Yury V. Zaytsev


More information about the cython-devel mailing list