'Copy this distribution, substituting in any changed keyword args'

def clone(self, **kw):

    for attr in ('project_name', 'version', 'py_version', 'platform', 'location', 'precedence'):
        kw.setdefault(attr, getattr(self, attr, None))
    kw.setdefault('metadata', self._provider)
    return self.__class__(**kw)
