'Delete attribute ``name`` from ``target``, by default raise
AttributeError it the attribute did not previously exist.
If no ``name`` is specified and ``target`` is a string
it will be interpreted as a dotted import path with the
last part being the attribute name.
If ``raising`` is set to False, no exception will be raised if the
attribute is missing.'

def delattr(self, target, name=notset, raising=True):

    __tracebackhide__ = True
    if (name is notset):
        if (not isinstance(target, _basestring)):
            raise TypeError('use    delattr(target,    name)    or    delattr(target)    with    target    being    a    dotted    import    string')
        (name, target) = derive_importpath(target, raising)
    if (not hasattr(target, name)):
        if raising:
            raise AttributeError(name)
    else:
        self._setattr.append((target, name, getattr(target, name, notset)))
        delattr(target, name)
