'Yield all packages, modules, and extension names in distribution'

def iter_distribution_names(self):

    for pkg in (self.packages or ()):
        (yield pkg)
    for module in (self.py_modules or ()):
        (yield module)
    for ext in (self.ext_modules or ()):
        if isinstance(ext, tuple):
            (name, buildinfo) = ext
        else:
            name = ext.name
        if name.endswith('module'):
            name = name[:(-6)]
        (yield name)
