ai-content-maker/.venv/Lib/site-packages/numba/tests/test_funcdesc.py

62 lines
1.7 KiB
Python

import unittest
from numba import njit
from numba.core.funcdesc import PythonFunctionDescriptor, default_mangler
from numba.core.compiler import run_frontend
from numba.core.itanium_mangler import mangle_abi_tag
class TestModule(unittest.TestCase):
def test_module_not_in_namespace(self):
""" Test of trying to run a compiled function
where the module from which the function is being compiled
doesn't exist in the namespace.
"""
filename = 'test.py'
name = 'mypackage'
code = """
def f(x):
return x
"""
objs = dict(__file__=filename, __name__=name)
compiled = compile(code, filename, 'exec')
exec(compiled, objs)
compiled_f = njit(objs['f'])
self.assertEqual(compiled_f(3), 3)
class TestFuncDescMangledName(unittest.TestCase):
def test_mangling_abi_tags(self):
"""
This is a minimal test for the abi-tags support in the mangler.
"""
def udt():
pass
# run minimal frontend to create a function descriptor
func_ir = run_frontend(udt)
typemap = {}
restype = None
calltypes = ()
mangler = default_mangler
inline = False
noalias = False
abi_tags = ("Shrubbery", "Herring")
fd = PythonFunctionDescriptor.from_specialized_function(
func_ir, typemap, restype, calltypes, mangler, inline, noalias,
abi_tags=abi_tags,
)
# mangled tag must exist in the mangled name
self.assertIn("".join([mangle_abi_tag(x) for x in abi_tags]),
fd.mangled_name)
if __name__ == '__main__':
unittest.main()