Example #1
0
 def test_lang_version(self):
     # GH-3419. Caching for inline code didn't always respect compiler directives.
     inline_divcode = "def f(int a, int b): return a/b"
     self.assertEqual(
         inline(inline_divcode, language_level=2)['f'](5, 2), 2)
     self.assertEqual(
         inline(inline_divcode, language_level=3)['f'](5, 2), 2.5)
Example #2
0
    def test_repeated_use(self):
        inline_mulcode = "def f(int a, int b): return a * b"
        self.assertEqual(inline(inline_mulcode)['f'](5, 2), 10)
        self.assertEqual(inline(inline_mulcode)['f'](5, 3), 15)
        self.assertEqual(inline(inline_mulcode)['f'](6, 2), 12)
        self.assertEqual(inline(inline_mulcode)['f'](5, 2), 10)

        f = inline(inline_mulcode)['f']
        self.assertEqual(f(5, 2), 10)
        self.assertEqual(f(5, 3), 15)
Example #3
0
 def test_compiler_directives(self):
     self.assertEqual(
         inline('return sum(x)',
                x=[1, 2, 3],
                cython_compiler_directives={'boundscheck': False}),
         6
     )
Example #4
0
 def test_numpy(self):
     import numpy
     a = numpy.ndarray((10, 20))
     a[0, 0] = 10
     self.assertEqual(safe_type(a),
                      'numpy.ndarray[numpy.float64_t, ndim=2]')
     self.assertEqual(inline("return a[0,0]", a=a, **self.test_kwds), 10.0)
Example #5
0
        def test_numpy(self):
            import numpy

            a = numpy.ndarray((10, 20))
            a[0, 0] = 10
            self.assertEquals(safe_type(a), "numpy.ndarray[numpy.float64_t, ndim=2]")
            self.assertEquals(inline("return a[0,0]", a=a, **self.test_kwds), 10.0)
Example #6
0
 def test_compiler_directives(self):
     self.assertEqual(
         inline('return sum(x)',
                x=[1, 2, 3],
                cython_compiler_directives={'boundscheck': False}),
         6
     )
Example #7
0
 def test_pure(self):
     import cython as cy
     b = inline("""
     b = cy.declare(float, a)
     c = cy.declare(cy.pointer(cy.float), &b)
     return b
     """, a=3, **self.test_kwds)
     self.assertEquals(type(b), float)
Example #8
0
 def test_pure(self):
     import cython as cy
     b = inline("""
     b = cy.declare(float, a)
     c = cy.declare(cy.pointer(cy.float), &b)
     return b
     """, a=3, **self.test_kwds)
     self.assertEquals(type(b), float)
Example #9
0
 def test_no_return(self):
     self.assertEqual(
         inline(
             """
         a = 1
         cdef double b = 2
         cdef c = []
     """, **self.test_kwds), dict(a=1, b=2.0, c=[]))
Example #10
0
 def test_types(self):
     self.assertEqual(
         inline("""
         cimport cython
         return cython.typeof(a), cython.typeof(b)
     """,
                a=1.0,
                b=[],
                **self.test_kwds), ('double', 'list object'))
Example #11
0
 def test_no_return(self):
     self.assertEquals(
         inline(
             """
         a = 1
         cdef double b = 2
         cdef c = []
     """,
             **self.test_kwds
         ),
         dict(a=1, b=2.0, c=[]),
     )
Example #12
0
 def test_types(self):
     self.assertEquals(
         inline(
             """
         cimport cython
         return cython.typeof(a), cython.typeof(b)
     """,
             a=1.0,
             b=[],
             **self.test_kwds
         ),
         ("double", "list object"),
     )
Example #13
0
def exec(code_string, l, g):
    from Cython.Compiler.Errors import CompileError
    from Cython.Shadow import inline
    try:
        from StringIO import StringIO
    except ImportError:
        from io import StringIO

    old_stderr = sys.stderr
    try:
        sys.stderr = StringIO()
        ns = inline(code_string, locals=l, globals=g, lib_dir=os.path.dirname(__file__))
    except CompileError as exc:
        raise SyntaxError(str(exc))
    finally:
        sys.stderr = old_stderr
    g.update(ns)
Example #14
0
def exec(code_string, l, g):
    from Cython.Compiler.Errors import CompileError
    from Cython.Shadow import inline
    try:
        from StringIO import StringIO
    except ImportError:
        from io import StringIO

    old_stderr = sys.stderr
    try:
        sys.stderr = StringIO()
        ns = inline(code_string,
                    locals=l,
                    globals=g,
                    lib_dir=os.path.dirname(__file__))
    except CompileError as exc:
        raise SyntaxError(str(exc))
    finally:
        sys.stderr = old_stderr
    g.update(ns)
Example #15
0
 def test_simple(self):
     self.assertEquals(inline("return 1+2", **self.test_kwds), 3)
Example #16
0
    def test_class_ref(self):
        class Type(object):
            pass

        tp = inline("Type")['Type']
        self.assertEqual(tp, Type)
Example #17
0
 def test_no_return(self):
     self.assertEqual(inline("""
         a = 1
         cdef double b = 2
         cdef c = []
     """), dict(a=1, b=2.0, c=[]))
Example #18
0
 def test_def_node(self):
     foo = inline("def foo(x): return x * x")['foo']
     self.assertEqual(foo(7), 49)
Example #19
0
 def test_def_node(self):
     foo = inline("def foo(x): return x * x", **self.test_kwds)['foo']
     self.assertEqual(foo(7), 49)
Example #20
0
 def test_locals(self):
     a = 1
     b = 2
     self.assertEqual(inline("return a+b", **self.test_kwds), 3)
Example #21
0
 def test_globals(self):
     self.assertEqual(inline("return global_value + 1", **self.test_kwds),
                      global_value + 1)
Example #22
0
 def test_simple(self):
     self.assertEqual(inline("return 1+2", **self.test_kwds), 3)
Example #23
0
 def test_def_node(self):
     foo = inline("def foo(x): return x * x")['foo']
     self.assertEquals(foo(7), 49)
Example #24
0
 def test_types(self):
     self.assertEquals(inline("""
         cimport cython
         return cython.typeof(a), cython.typeof(b)
     """, a=1.0, b=[], **test_kwds), ('double', 'list object'))
Example #25
0
 def test_def_node(self):
     foo = inline("def foo(x): return x * x", **self.test_kwds)['foo']
     self.assertEquals(foo(7), 49)
Example #26
0
 def test_globals(self):
     self.assertEquals(inline("return global_value + 1", **self.test_kwds), global_value + 1)
Example #27
0
 def test_locals(self):
     a = 1
     b = 2
     self.assertEquals(inline("return a+b", **self.test_kwds), 3)
Example #28
0
 def test_class_ref(self):
     class Type(object):
         pass
     tp = inline("Type")['Type']
     self.assertEqual(tp, Type)