Example #1
0
    def test_multiline_spec0(self):
        code = '''
#pythran export foo(
              # )
def foo(): return
            '''
        pythran.spec_parser(code)
Example #2
0
    def test_crappy_spec1(self):
        code = '''
#      pythran export foo(int)
#this is a pythran export test
def foo(i,j,k): return
            '''
        pythran.spec_parser(code)
Example #3
0
    def test_multiline_spec1(self):
        code = '''
#pythran export foo(int
  #, int
              # )
def foo(i,j): return
            '''
        pythran.spec_parser(code)
Example #4
0
    def test_middle_spec1(self):
        code = '''
def foo(i): return
#this is a pythran export test
#      pythran export foo(int)
#this is an export test
#      pythran export foo(float)
def bar(i): return
            '''
        self.assertEquals(len(pythran.spec_parser(code)), 1)
        self.assertEquals(len(pythran.spec_parser(code)['foo']), 2)
Example #5
0
    def test_middle_spec1(self):
        code = '''
def zoo(i): return
#this is a pythran export test
#      pythran export zoo(int)
#this is an export test
#      pythran export zoo(str)
def bar(i): return
            '''
        self.assertEquals(len(pythran.spec_parser(code).functions), 1)
        self.assertEquals(len(pythran.spec_parser(code).functions['zoo']), 2)
Example #6
0
    def test_middle_spec1(self):
        code = '''
def foo(i): return
#this is a pythran export test
#      pythran export foo(int)
#this is an export test
#      pythran export foo(float)
def bar(i): return
            '''
        self.assertEquals(len(pythran.spec_parser(code)), 1)
        self.assertEquals(len(pythran.spec_parser(code)['foo']), 2)
Example #7
0
    def test_multiline_spec0(self):
        code = '''
#pythran export foo(
              # )
def foo(): return
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #8
0
    def test_crappy_spec1(self):
        code = '''
#      pythran export foo(int)
#this is a pythran export test
def foo(i): return
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #9
0
    def test_crappy_spec1(self):
        code = '''
#      pythran export poo(int)
#this is a pythran export test
def poo(i): return
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #10
0
    def test_middle_spec0(self):
        code = '''
def too(i): return
#      pythran export too(int)
#this is a pythran export test
def bar(i): return
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #11
0
    def test_middle_spec0(self):
        code = '''
def foo(i): return
#      pythran export foo(int)
#this is a pythran export test
def bar(i): return
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #12
0
 def interface(cls, name=None, file=None):
     ''' Return Pythran specs.'''
     default_value = {name: []}
     try:
         from pythran import spec_parser
         specs = spec_parser(open(file).read()) if file else default_value
     except SyntaxError:
         specs = default_value
     return specs
Example #13
0
 def interface(cls, name=None, file=None):
     ''' Return Pythran specs.'''
     default_value = {name: []}
     try:
         from pythran import spec_parser
         specs = spec_parser(open(file).read()) if file else default_value
     except SyntaxError:
         specs = default_value
     return specs
Example #14
0
    def interface(name=None, file_=None):
        """ Return Pythran specs."""
        default_value = {name: []}

        # Look for an extra spec file
        spec_file = os.path.splitext(file_)[0] + '.pythran'
        if os.path.isfile(spec_file):
            return load_specfile(open(spec_file).read())
        else:
            return spec_parser(open(file_).read()) if file_ else default_value
Example #15
0
    def test_multiline_spec2(self):
        code = '''
#      pythran export foo(int,

# float
  #, int
              # )
def foo(i,j,k): return
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #16
0
    def test_multiline_spec2(self):
        code = '''
#      pythran export foo(int,

# float
  #, int
              # )
def foo(i,j,k): return
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #17
0
    def interface(name=None, file_=None):
        """ Return Pythran specs."""

        # Look for an extra spec file
        spec_file = os.path.splitext(file_)[0] + '.pythran'
        if os.path.isfile(spec_file):
            return load_specfile(spec_file)
        elif file_ is None:
            return Spec({name: []})
        else:
            with open(file_) as fd:
                return spec_parser(fd.read())
Example #18
0
    def run(self):
        import glob
        import timeit
        from pythran import cxx_generator, spec_parser
        from pythran import compile as pythran_compile
        where = "pythran/tests/cases/"
        candidates = glob.glob(where + '*.py')
        sys.path.append(where)
        median = lambda x: sorted(x)[len(x) / 2]
        for candidate in candidates:
            with file(candidate) as content:
                runas = [line for line in content.readlines()
                        if line.startswith(BenchmarkCommand.runas_marker)]
                if runas:
                    module_name, _ = os.path.splitext(
                            os.path.basename(candidate))
                    runas_commands = runas[0].replace(
                            BenchmarkCommand.runas_marker, '').split(";")
                    runas_context = ";".join(["import {0}".format(
                                    module_name)] + runas_commands[:-1])
                    runas_command = module_name + '.' + runas_commands[-1]

                    # cleaning
                    sopath = module_name + ".so"
                    if os.path.exists(sopath):
                        os.remove(sopath)

                    ti = timeit.Timer(runas_command, runas_context)

                    # pythran part
                    if self.mode.startswith('pythran'):
                        specs = spec_parser(candidate)
                        code = file(candidate).read()
                        mod = cxx_generator(module_name, code, specs)
                        cxxflags = ["-Ofast", "-DNDEBUG"]
                        if self.mode == "pythran+omp":
                            cxxflags.append("-fopenmp")
                        pythran_compile(os.environ.get("CXX", "c++"),
                                mod, cxxflags=cxxflags)

                    timing = median(ti.repeat(self.nb_iter, number=1))
                    print module_name, timing
Example #19
0
File: setup.py Project: yws/pythran
    def run(self):
        import os
        for extension in self.extensions:
            source = extension.sources[0]
            out = extension.name + '.so'
            if not path.isfile(
                    out) or path.getmtime(source) > path.getmtime(out):
                print 'building pythran extension', extension.name
                content = file(source).read()

                module = pythran.cxx_generator(extension.name, content,
                                               pythran.spec_parser(content),
                                               [])

                pythran.compile(os.environ.get('CXX', 'c++'),
                                module,
                                out,
                                cxxflags=['-O2', '-g'] +
                                extension.extra_compile_args +
                                extension.extra_link_args)
Example #20
0
    def run(self):
        import os
        for extension in self.extensions:
            source = extension.sources[0]
            out = extension.name + '.so'
            if not path.isfile(out) or path.getmtime(source) > path.getmtime(out):
                print 'building pythran extension', extension.name
                content = file(source).read()

                module = pythran.cxx_generator(
                        extension.name,
                        content,
                        pythran.spec_parser(content),
                        []
                        )

                pythran.compile(
                        os.environ.get('CXX','c++'),
                        module,
                        out,
                        cxxflags = ['-O2', '-g'] + extension.extra_compile_args + extension.extra_link_args
                        )
Example #21
0
 def interface(name=None, file_=None):
     """ Return Pythran specs."""
     default_value = {name: []}
     return spec_parser(open(file_).read()) if file_ else default_value
Example #22
0
 def test_parser(self):
     real_path = os.path.splitext(os.path.realpath(__file__))[0] + ".py"
     print pythran.spec_parser(real_path)
Example #23
0
    def test_trailing_comma_arg0(self):
        code = '''
#      pythran export foo(int,)
def foo(n): return n
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #24
0
    def test_crappy_spec0(self):
        code = '''
#      pythran export soo(int) this is an int test
def soo(i): return
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #25
0
    def test_var_export0(self):
        code = '''
#      pythran export foo
foo = 1
            '''
        self.assertTrue(pythran.spec_parser(code))
Example #26
0
 def __call__(self):
     module_path=os.path.join(os.path.dirname(__file__),"cases",self.module_name+".py")
     specs = pythran.spec_parser(module_path)
     print self.module_name
     module= pythran.cxx_generator(self.module_name, file(module_path).read(), specs)
     pythran.compile(os.environ.get("CXX","c++"), module, check=False)
Example #27
0
 def interface(name=None, file_=None):
     """ Return Pythran specs."""
     default_value = {name: []}
     return spec_parser(open(file_).read()) if file_ else default_value
Example #28
0
 def test_parser(self):
     real_path = os.path.splitext(os.path.realpath(__file__))[0] + ".py"
     with open(real_path) as fd:
         print(pythran.spec_parser(fd.read()))
Example #29
0
    def test_var_export0(self):
        code = '''
#      pythran export coo
coo = 1
            '''
        self.assertTrue(pythran.spec_parser(code))
 def test_parser(self):
     real_path = os.path.splitext(os.path.realpath(__file__))[0] + ".py"
     print(pythran.spec_parser(real_path))