def __new__(mcs, name, bases, attrs):
        # Register the class as an item class
        attrs['__item__'] = True
        attrs['__item_name__'] = None
        # Instantiate an empty list to store the config item attribute names
        attributes = []
        for base in reversed(bases):
            try:
                base_attributes = getattr(base, '_attributes', [])
                if base_attributes:
                    attributes.extend(base_attributes)
                # Extend the attributes with the base argspec argument names
                # but skip "self"
                for argname in inspect.getargspec(base.__init__).args:
                    if argname == 'self' or argname in attributes:
                        continue
                    if argname == 'name':
                        continue
                    attributes.append(argname)
            except __HOLE__:
                # On the base object type, __init__ is just a wrapper which
                # triggers a TypeError when we're trying to find out it's
                # argspec
                continue
        attrs['_attributes'] = attributes
        return type.__new__(mcs, name, bases, attrs)
dataset/ETHPy150Open saltstack/salt/salt/utils/schema.py/BaseSchemaItemMeta.__new__