'Remove items from distribution that are named in keyword arguments
For example, \'dist.exclude(py_modules=["x"])\' would remove \'x\' from
the distribution\'s \'py_modules\' attribute.  Excluding packages uses
the \'exclude_package()\' method, so all of the package\'s contained
packages, modules, and extensions are also excluded.
Currently, this method only supports exclusion from attributes that are
lists or tuples.  If you need to add support for excluding from other
attributes in this or a subclass, you can add an \'_exclude_X\' method,
where \'X\' is the name of the attribute.  The method will be called with
the value passed to \'exclude()\'.  So, \'dist.exclude(foo={"bar":"baz"})\'
will try to call \'dist._exclude_foo({"bar":"baz"})\', which can then
handle whatever special exclusion logic is needed.'

def exclude(self, **attrs):

    for (k, v) in attrs.items():
        exclude = getattr(self, ('_exclude_' + k), None)
        if exclude:
            exclude(v)
        else:
            self._exclude_misc(k, v)
