<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _by_version_descending(names):
 """ Given a list of filenames, return them in descending order by version number. ['Python-2.7.10.egg', 'Python-2.7.2.egg', 'foo', 'bar'] ['Setuptools-1.2.3.egg', 'Setuptools-1.2.3b1.egg'] ['Setuptools-1.2.3.post1.egg', 'Setuptools-1.2.3b1.egg'] """

    def _by_version(name):
        """
        Parse each component of the filename
        """
        name, ext = os.path.splitext(name)
        parts = itertools.chain(name.split('-'), [ext])
        return [packaging.version.parse(part) for part in parts]

    return sorted(names, key=_by_version, reverse=True)