Files
courses/py3interm/venv/Lib/site-packages/numba/tests/test_objects.py
T
2025-05-20 11:57:43 -04:00

70 lines
1.8 KiB
Python

"""
Test generic manipulation of objects.
"""
import unittest
from numba import njit
from numba.core.compiler import compile_isolated, Flags
from numba.core import types
from numba.tests.support import TestCase
enable_pyobj_flags = Flags()
enable_pyobj_flags.enable_pyobject = True
force_pyobj_flags = Flags()
force_pyobj_flags.force_pyobject = True
no_pyobj_flags = Flags()
class C(object):
pass
def setattr_usecase(o, v):
o.x = v
def delattr_usecase(o):
del o.x
class TestAttributes(TestCase):
def test_setattr(self, flags=enable_pyobj_flags):
pyfunc = setattr_usecase
cr = compile_isolated(pyfunc, (types.pyobject, types.int32), flags=flags)
cfunc = cr.entry_point
c = C()
cfunc(c, 123)
self.assertEqual(c.x, 123)
def test_setattr_attribute_error(self, flags=enable_pyobj_flags):
pyfunc = setattr_usecase
cr = compile_isolated(pyfunc, (types.pyobject, types.int32), flags=flags)
cfunc = cr.entry_point
# Can't set undeclared slot
with self.assertRaises(AttributeError):
cfunc(object(), 123)
def test_delattr(self, flags=enable_pyobj_flags):
pyfunc = delattr_usecase
cr = compile_isolated(pyfunc, (types.pyobject,), flags=flags)
cfunc = cr.entry_point
c = C()
c.x = 123
cfunc(c)
with self.assertRaises(AttributeError):
c.x
def test_delattr_attribute_error(self, flags=enable_pyobj_flags):
pyfunc = delattr_usecase
cr = compile_isolated(pyfunc, (types.pyobject,), flags=flags)
cfunc = cr.entry_point
# Can't delete non-existing attribute
with self.assertRaises(AttributeError):
cfunc(C())
if __name__ == '__main__':
unittest.main()