Python types.new_class() Examples
The following are 30
code examples of types.new_class().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
types
, or try the search function
.
Example #1
Source File: test_types.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 6 votes |
def test_prepare_class(self): # Basic test of metaclass derivation expected_ns = {} class A(type): def __new__(*args, **kwargs): return type.__new__(*args, **kwargs) def __prepare__(*args): return expected_ns B = types.new_class("B", (object,)) C = types.new_class("C", (object,), {"metaclass": A}) # The most derived metaclass of D is A rather than type. meta, ns, kwds = types.prepare_class("D", (B, C), {"metaclass": type}) self.assertIs(meta, A) self.assertIs(ns, expected_ns) self.assertEqual(len(kwds), 0)
Example #2
Source File: test_types.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_metaclass_override_function(self): # Special case: the given metaclass isn't a class, # so there is no metaclass calculation. class A(metaclass=self.Meta): pass marker = object() def func(*args, **kwargs): return marker X = types.new_class("X", (), {"metaclass": func}) Y = types.new_class("Y", (object,), {"metaclass": func}) Z = types.new_class("Z", (A,), {"metaclass": func}) self.assertIs(marker, X) self.assertIs(marker, Y) self.assertIs(marker, Z)
Example #3
Source File: patch_config.py From groupsoftmax-simpledet with Apache License 2.0 | 6 votes |
def patch_config_as_nothrow(instance): if "NoThrow" in [instance.__name__, instance.__class__.__name__]: return instance if type(instance) == type: instance = types.new_class(instance.__name__ + "NoThrow", (instance, ), dict(metaclass=NoThrowMeta)) for (k, v) in inspect.getmembers(instance): if not k.startswith("__") and type(v) == type: type.__setattr__(instance, k, patch_config_as_nothrow(v)) else: for (k, v) in inspect.getmembers(instance.__class__): if not k.startswith("__") and type(v) == type: type.__setattr__(instance.__class__, k, patch_config_as_nothrow(v)) instance.__class__ = type(instance.__class__.__name__ + "NoThrow", (instance.__class__, NoThrowBase), {}) return instance
Example #4
Source File: util.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def specialize_class(cls, kind, base=None, **kwargs): # XXX Support passing in submodule names--load (and cache) them? # That would clean up the test modules a bit more. if base is None: base = unittest.TestCase elif not isinstance(base, type): base = base[kind] name = '{}_{}'.format(kind, cls.__name__) bases = (cls, base) specialized = types.new_class(name, bases) specialized.__module__ = cls.__module__ specialized._NAME = cls.__name__ specialized._KIND = kind for attr, values in kwargs.items(): value = values[kind] setattr(specialized, attr, value) return specialized
Example #5
Source File: test_types.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_metaclass_override_function(self): # Special case: the given metaclass isn't a class, # so there is no metaclass calculation. class A(metaclass=self.Meta): pass marker = object() def func(*args, **kwargs): return marker X = types.new_class("X", (), {"metaclass": func}) Y = types.new_class("Y", (object,), {"metaclass": func}) Z = types.new_class("Z", (A,), {"metaclass": func}) self.assertIs(marker, X) self.assertIs(marker, Y) self.assertIs(marker, Z)
Example #6
Source File: util.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 6 votes |
def specialize_class(cls, kind, base=None, **kwargs): # XXX Support passing in submodule names--load (and cache) them? # That would clean up the test modules a bit more. if base is None: base = unittest.TestCase elif not isinstance(base, type): base = base[kind] name = '{}_{}'.format(kind, cls.__name__) bases = (cls, base) specialized = types.new_class(name, bases) specialized.__module__ = cls.__module__ specialized._NAME = cls.__name__ specialized._KIND = kind for attr, values in kwargs.items(): value = values[kind] setattr(specialized, attr, value) return specialized
Example #7
Source File: test_types.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_prepare_class(self): # Basic test of metaclass derivation expected_ns = {} class A(type): def __new__(*args, **kwargs): return type.__new__(*args, **kwargs) def __prepare__(*args): return expected_ns B = types.new_class("B", (object,)) C = types.new_class("C", (object,), {"metaclass": A}) # The most derived metaclass of D is A rather than type. meta, ns, kwds = types.prepare_class("D", (B, C), {"metaclass": type}) self.assertIs(meta, A) self.assertIs(ns, expected_ns) self.assertEqual(len(kwds), 0)
Example #8
Source File: test_types.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 6 votes |
def test_metaclass_override_function(self): # Special case: the given metaclass isn't a class, # so there is no metaclass calculation. class A(metaclass=self.Meta): pass marker = object() def func(*args, **kwargs): return marker X = types.new_class("X", (), {"metaclass": func}) Y = types.new_class("Y", (object,), {"metaclass": func}) Z = types.new_class("Z", (A,), {"metaclass": func}) self.assertIs(marker, X) self.assertIs(marker, Y) self.assertIs(marker, Z)
Example #9
Source File: cloudpickle.py From ray with Apache License 2.0 | 6 votes |
def _make_skeleton_class(type_constructor, name, bases, type_kwargs, class_tracker_id, extra): """Build dynamic class with an empty __dict__ to be filled once memoized If class_tracker_id is not None, try to lookup an existing class definition matching that id. If none is found, track a newly reconstructed class definition under that id so that other instances stemming from the same class id will also reuse this class definition. The "extra" variable is meant to be a dict (or None) that can be used for forward compatibility shall the need arise. """ skeleton_class = types.new_class( name, bases, {'metaclass': type_constructor}, lambda ns: ns.update(type_kwargs) ) return _lookup_class_or_track(class_tracker_id, skeleton_class)
Example #10
Source File: test_types.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_prepare_class(self): # Basic test of metaclass derivation expected_ns = {} class A(type): def __new__(*args, **kwargs): return type.__new__(*args, **kwargs) def __prepare__(*args): return expected_ns B = types.new_class("B", (object,)) C = types.new_class("C", (object,), {"metaclass": A}) # The most derived metaclass of D is A rather than type. meta, ns, kwds = types.prepare_class("D", (B, C), {"metaclass": type}) self.assertIs(meta, A) self.assertIs(ns, expected_ns) self.assertEqual(len(kwds), 0)
Example #11
Source File: test_types.py From android_universal with MIT License | 6 votes |
def test_prepare_class(self): # Basic test of metaclass derivation expected_ns = {} class A(type): def __new__(*args, **kwargs): return type.__new__(*args, **kwargs) def __prepare__(*args): return expected_ns B = types.new_class("B", (object,)) C = types.new_class("C", (object,), {"metaclass": A}) # The most derived metaclass of D is A rather than type. meta, ns, kwds = types.prepare_class("D", (B, C), {"metaclass": type}) self.assertIs(meta, A) self.assertIs(ns, expected_ns) self.assertEqual(len(kwds), 0)
Example #12
Source File: test_types.py From android_universal with MIT License | 6 votes |
def test_metaclass_override_function(self): # Special case: the given metaclass isn't a class, # so there is no metaclass calculation. class A(metaclass=self.Meta): pass marker = object() def func(*args, **kwargs): return marker X = types.new_class("X", (), {"metaclass": func}) Y = types.new_class("Y", (object,), {"metaclass": func}) Z = types.new_class("Z", (A,), {"metaclass": func}) self.assertIs(marker, X) self.assertIs(marker, Y) self.assertIs(marker, Z)
Example #13
Source File: patch_config.py From simpledet with Apache License 2.0 | 6 votes |
def patch_config_as_nothrow(instance): if "NoThrow" in [instance.__name__, instance.__class__.__name__]: return instance if type(instance) == type: instance = types.new_class(instance.__name__ + "NoThrow", (instance, ), dict(metaclass=NoThrowMeta)) for (k, v) in inspect.getmembers(instance): if not k.startswith("__") and type(v) == type: type.__setattr__(instance, k, patch_config_as_nothrow(v)) else: for (k, v) in inspect.getmembers(instance.__class__): if not k.startswith("__") and type(v) == type: type.__setattr__(instance.__class__, k, patch_config_as_nothrow(v)) instance.__class__ = type(instance.__class__.__name__ + "NoThrow", (instance.__class__, NoThrowBase), {}) return instance
Example #14
Source File: bitstructs.py From pymtl3 with BSD 3-Clause "New" or "Revised" License | 6 votes |
def mk_bitstruct( cls_name, fields, *, namespace=None, add_init=True, add_str=True, add_repr=True, add_hash=True ): # copy namespace since will mutate it namespace = {} if namespace is None else namespace.copy() # We assume fields is a dictionary and thus there won't be duplicate # field names. So we only check if the field names are indeed strings # and that they are not keywords. annos = {} for name, f in fields.items(): if not isinstance( name, str ) or not name.isidentifier(): raise TypeError( f'Field name {name!r} is not a valid identifier!' ) if keyword.iskeyword( name ): raise TypeError( f'Field name {name!r} is a keyword!' ) annos[ name ] = f namespace['__annotations__'] = annos cls = types.new_class( cls_name, (), {}, lambda ns: ns.update( namespace ) ) return bitstruct( cls, add_init=add_init, add_str=add_str, add_repr=add_repr, add_hash=add_hash )
Example #15
Source File: commondl.py From edgedb with Apache License 2.0 | 6 votes |
def _new_nonterm(self, clsname, clsdict=None, clskwds=None, clsbases=(Nonterm,)): if clsdict is None: clsdict = {} if clskwds is None: clskwds = {} mod = sys.modules[self.name] def clsexec(ns): ns['__module__'] = self.name for k, v in clsdict.items(): ns[k] = v return ns cls = types.new_class(clsname, clsbases, clskwds, clsexec) setattr(mod, clsname, cls) return cls
Example #16
Source File: types.py From pydantic with MIT License | 5 votes |
def conlist(item_type: Type[T], *, min_items: int = None, max_items: int = None) -> Type[List[T]]: # __args__ is needed to conform to typing generics api namespace = {'min_items': min_items, 'max_items': max_items, 'item_type': item_type, '__args__': [item_type]} # We use new_class to be able to deal with Generic types return new_class('ConstrainedListValue', (ConstrainedList,), {}, lambda ns: ns.update(namespace)) # This types superclass should be Set[T], but cython chokes on that...
Example #17
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_exec_body(self): Meta = self.Meta def func(ns): ns["x"] = 0 C = types.new_class("C", (), {"metaclass": Meta, "z": 2}, func) self.assertIsInstance(C, Meta) self.assertEqual(C.x, 0) self.assertEqual(C.y, 1) self.assertEqual(C.z, 2)
Example #18
Source File: test_test.py From asyncpg with Apache License 2.0 | 5 votes |
def test_tests_fail_1(self): SimpleTestCase = types.new_class('SimpleTestCase', (BaseSimpleTestCase, tb.TestCase)) suite = unittest.TestSuite() suite.addTest(SimpleTestCase('test_tests_zero_error')) result = unittest.TestResult() suite.run(result) self.assertIn('ZeroDivisionError', result.errors[0][1])
Example #19
Source File: test_types.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_new_class_metaclass_keywords(self): #Test that keywords are passed to the metaclass: def meta_func(name, bases, ns, **kw): return name, bases, ns, kw res = types.new_class("X", (int, object), dict(metaclass=meta_func, x=0)) self.assertEqual(res, ("X", (int, object), {}, {"x": 0}))
Example #20
Source File: test_types.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_new_class_exec_body(self): Meta = self.Meta def func(ns): ns["x"] = 0 C = types.new_class("C", (), {"metaclass": Meta, "z": 2}, func) self.assertIsInstance(C, Meta) self.assertEqual(C.x, 0) self.assertEqual(C.y, 1) self.assertEqual(C.z, 2)
Example #21
Source File: types.py From pydantic with MIT License | 5 votes |
def conset(item_type: Type[T], *, min_items: int = None, max_items: int = None) -> Type[Set[T]]: # __args__ is needed to conform to typing generics api namespace = {'min_items': min_items, 'max_items': max_items, 'item_type': item_type, '__args__': [item_type]} # We use new_class to be able to deal with Generic types return new_class('ConstrainedSetValue', (ConstrainedSet,), {}, lambda ns: ns.update(namespace))
Example #22
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_basics(self): C = types.new_class("C") self.assertEqual(C.__name__, "C") self.assertEqual(C.__bases__, (object,))
Example #23
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_subclass(self): C = types.new_class("C", (int,)) self.assertTrue(issubclass(C, int))
Example #24
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_meta(self): Meta = self.Meta settings = {"metaclass": Meta, "z": 2} # We do this twice to make sure the passed in dict isn't mutated for i in range(2): C = types.new_class("C" + str(i), (), settings) self.assertIsInstance(C, Meta) self.assertEqual(C.y, 1) self.assertEqual(C.z, 2)
Example #25
Source File: schema.py From quiz with Apache License 2.0 | 5 votes |
def interface_as_type(typ, module): # type: (Interface, str) -> type # we don't add the fields yet -- these types may not exist yet. return new_class( str(typ.name), (types.Namespace,), kwds={"metaclass": types.Interface}, exec_body=methodcaller( "update", {"__doc__": typ.desc, "__raw__": typ, "__module__": module}, ), )
Example #26
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_metaclass_keywords(self): #Test that keywords are passed to the metaclass: def meta_func(name, bases, ns, **kw): return name, bases, ns, kw res = types.new_class("X", (int, object), dict(metaclass=meta_func, x=0)) self.assertEqual(res, ("X", (int, object), {}, {"x": 0}))
Example #27
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_meta_with_base(self): Meta = self.Meta def func(ns): ns["x"] = 0 C = types.new_class(name="C", bases=(int,), kwds=dict(metaclass=Meta, z=2), exec_body=func) self.assertTrue(issubclass(C, int)) self.assertIsInstance(C, Meta) self.assertEqual(C.x, 0) self.assertEqual(C.y, 1) self.assertEqual(C.z, 2)
Example #28
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_with_mro_entry(self): class A: pass class C: def __mro_entries__(self, bases): return (A,) c = C() D = types.new_class('D', (c,), {}) self.assertEqual(D.__bases__, (A,)) self.assertEqual(D.__orig_bases__, (c,)) self.assertEqual(D.__mro__, (D, A, object))
Example #29
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_with_mro_entry_none(self): class A: pass class B: pass class C: def __mro_entries__(self, bases): return () c = C() D = types.new_class('D', (A, c, B), {}) self.assertEqual(D.__bases__, (A, B)) self.assertEqual(D.__orig_bases__, (A, c, B)) self.assertEqual(D.__mro__, (D, A, B, object))
Example #30
Source File: test_types.py From android_universal with MIT License | 5 votes |
def test_new_class_with_mro_entry_error(self): class A: pass class C: def __mro_entries__(self, bases): return A c = C() with self.assertRaises(TypeError): types.new_class('D', (c,), {})