def __new__(mcs, name, bases, attrs, **kwargs): slots = [] try: for attr_name, attr in attrs.items(): if isinstance(attr, (Field, Record)): field = attrs[attr_name] = mcs._prepare_field(attr) field.name = field.name or mangle_name(name, attr_name) slots.append(field.name) except NameError: pass for option, value in kwargs.items(): attrs['__{}__'.format(option)] = value attrs['__slots__'] = tuple(slots) return super(MetaRecord, mcs).__new__(mcs, name, bases, attrs)
def test_mangle_name(self): self.assertEqual(mangle_name(TestNameUtils.Dummy, 'x'), '_Dummy__x') self.assertEqual(mangle_name('Dummy', 'x'), '_Dummy__x')