Esempio n. 1
0
    def test_with_defaults(self):
        def temp(a=1., b=2.):
            pass

        self.assertEqual(self.pyx_header + ['        cpdef temp(long a=1., long b=2.):\n',
                                            '            pass\n'],
                         py2pyx_autodeclare(temp, (1,), {'b':2}))
Esempio n. 2
0
 def test_autodeclare_and_defs(self):
     pyx = self.pyx_header + [
            'cpdef t2(int a, float b):\n',
            '    cdef int c\n',
            '    c = 1.\n',
            '    pass\n']
     self.assertEqual(pyx, py2pyx_autodeclare(t2, [1., 1], {}))
Esempio n. 3
0
 def test_autodeclare_assign(self):
     def temp():
         #cdef float c
         a = 1
         b = 2.
         c = 3.  # declared by cdef
         b = 4  # declared by b= 2.
     indent = " " * 8
     self.assertEqual(self.pyx_header + [indent + 'cpdef temp():\n',
                                         indent + '    cdef long a\n',
                                         indent + '    cdef double b\n',
                                         indent + '    cdef float c\n',
                                         indent + '    a = 1\n',
                                         indent + '    b = 2.\n',
                                         indent + '    c = 3.  # declared by cdef\n',
                                         indent + '    b = 4  # declared by b= 2.\n'],
                      py2pyx_autodeclare(temp, [], {}))
Esempio n. 4
0
    def test_autodeclare_complex(self):
        pyx = self.pyx_header + [
               'cpdef t3(long a, double b):\n',
               '    cdef long long c\n',
               '    cdef long d\n',
               '    cdef long e\n',
               '    cdef double f\n',
               '    cdef np.ndarray[np.float64_t,ndim=2] g\n',
               '    c = 1L\n',
               '    for d in xrange(5):\n',
               '        pass\n',
               '    for e, f in zip(range(5), [0.1]):\n',
               '        pass\n',
               '    g = np.array([[3, 4], [5., 6]])\n']


        self.assertEqual(pyx, py2pyx_autodeclare(t3, [1, 2.], {}))
Esempio n. 5
0
    def test_autodeclare_cdef(self):
        def temp():
            #cdef long long int a
            #cdef float _b # comment
            #cdef double _cc#comment
            #cdef np.ndarray[sdfl] d
            a = 1
            _b = 2.
            _cc = 3
            d = 4

        indent = " " * 8
        self.assertEqual(self.pyx_header + [indent + 'cpdef temp():\n',
                                            indent + '    cdef long long int a\n',
                                            indent + '    cdef float _b # comment\n',
                                            indent + '    cdef double _cc#comment\n',
                                            indent + '    cdef np.ndarray[sdfl] d\n',
                                            indent + '    a = 1\n',
                                            indent + '    _b = 2.\n',
                                            indent + '    _cc = 3\n',
                                            indent + '    d = 4\n'],
                         py2pyx_autodeclare(temp, [], {}))
Esempio n. 6
0
    def test_autodeclare_in(self):
        def temp():
            #cdef float c
            for a in xrange(5): pass
            for b in range(5):
                pass
            for c in [.1, .2]: pass
            for d, e in zip(['a', 'b'], [.1, .2]):
                pass

        indent = " "*8
        self.assertEqual(self.pyx_header + [indent + 'cpdef temp():\n',
                                            indent + '    cdef long a\n',
                                            indent + '    cdef long b\n',
                                            indent + '    cdef double e\n',
                                            indent + '    cdef float c\n',
                                            indent + '    for a in xrange(5): pass\n',
                                            indent + '    for b in range(5):\n',
                                            indent + '        pass\n',
                                            indent + '    for c in [.1, .2]: pass\n',
                                            indent + "    for d, e in zip(['a', 'b'], [.1, .2]):\n",
                                            indent + '        pass\n'],
                         py2pyx_autodeclare(temp, [], {}))
Esempio n. 7
0
 def test_autodeclare_arguments(self):
     self.assertEqual(self.pyx_header + ['cpdef t1(long a, double b):\n',
                                         "    pass\n"],
                      py2pyx_autodeclare(t1, (1, 2.), {}))