title: Functions defined in Cython .pyx become built-in?
body: <p>I was playing with the cython tutorial (<a href="http://docs.cython.org/en/latest/src/tutorial/cython_tutorial.html" rel="nofollow noreferrer">http://docs.cython.org/en/latest/src/tutorial/cython_tutorial.html</a>)</p>
  
  <p>And I have a directory like so:</p>
  
  <pre><code>somedir/ExampleCython.py
  somedir/fib.pyx
  somedir/fib.so
  somedir/function_file.py
  somedir/setup.py
  </code></pre>
  
  <p>Where the fib.pyx defines the function fib from the cython tutorial linked above, function_file.py contains the following definition:</p>
  
  <pre><code>def moopy(param):
      param += 1
      return param
  </code></pre>
  
  <p>and ExampleCython.py contains the following:</p>
  
  <pre><code>import fib as moo
  
  print moo.fib
  
  from function_file import moopy
  
  print moopy
  </code></pre>
  
  <p>I build the fib.so using python setup.py build_ext --inplace, then I run python ExampleCython.py and I get the following output:</p>
  
  <pre><code>&lt;built-in function fib&gt;
  &lt;function moopy at 0x1002b4398&gt;
  </code></pre>
  
  <p>Now, I know there is no python built-in called fib, and just to test I tried changing the name 'fib' to something silly like 'poopypants' and it still says it's built-in.  What is happening to the namespace of the fib function?  I have this issue in a much larger block of code elsewhere which is preventing me from pickling a class I created - pickle complains that it can't find my function in the module it belongs to - but I figured I'd simplify it for the question here.</p>
  
  <p>For reference - python 2.7.11/cython 0.26 on OSX 10.12.6</p>