'Parse a single entry point from string `src`
Entry point syntax follows the form::
name = some.module:some.attr [extra1, extra2]
The entry name and module name are required, but the ``:attrs`` and
``[extras]`` parts are optional'

@classmethod
def parse(cls, src, dist=None):

    m = cls.pattern.match(src)
    if (not m):
        msg = "EntryPoint    must    be    in    'name=module:attrs    [extras]'    format"
        raise ValueError(msg, src)
    res = m.groupdict()
    extras = cls._parse_extras(res['extras'])
    attrs = (res['attr'].split('.') if res['attr'] else ())
    return cls(res['name'], res['module'], attrs, extras, dist)
