def test_assigned_tuple_expansion(self): code = dedent(''' u, v = 0.0, 1.0 [x, y] = 0.0, 1.0 ''') assigned = list(sorted(get_assigned(code))) expect = ['u', 'v', 'x', 'y'] self.assertEqual(assigned, expect)
def test_assigned_values(self): code = dedent(''' u[0] = 0.0 x = 1 y = sin(x)*theta z += 1 ''') assigned = list(sorted(get_assigned(code))) # sin or theta should not be detected. expect = ['u', 'x', 'y', 'z'] self.assertEqual(assigned, expect)
def _get_method_body(self, meth, lines, indent=' ' * 8): args = set(inspect.getargspec(meth).args) src = [self._process_body_line(line) for line in lines] declared = [x[0] for x in src if len(x[0]) > 0] cython_body = ''.join([x[1] for x in src]) body = ''.join(lines) dedented_body = dedent(body) symbols = get_assigned(dedented_body) undefined = symbols - set(declared) - args declare = [indent + 'cdef double %s\n' % x for x in sorted(undefined)] code = ''.join(declare) + cython_body return code
def _get_method_body(self, meth, lines, indent=' ' * 8): args = set(inspect.getargspec(meth).args) src = [self._process_body_line(line) for line in lines] declared = [] for names, defn in src: if names: declared.extend(x.strip() for x in names.split(',')) cython_body = ''.join([x[1] for x in src]) body = ''.join(lines) dedented_body = dedent(body) symbols = get_assigned(dedented_body) undefined = symbols - set(declared) - args declare = [indent + 'cdef double %s\n' % x for x in sorted(undefined)] code = ''.join(declare) + cython_body return code