@classmethod<EOL><INDENT>def parse(cls, src, dist=None):<DEDENT>
m = cls.pattern.match(src)<EOL>if not m:<EOL><INDENT>msg = "<STR_LIT>"<EOL>raise ValueError(msg, src)<EOL><DEDENT>res = m.groupdict()<EOL>extras = cls._parse_extras(res['<STR_LIT>'])<EOL>attrs = res['<STR_LIT>'].split('<STR_LIT:.>') if res['<STR_LIT>'] else ()<EOL>return cls(res['<STR_LIT:name>'], res['<STR_LIT>'], attrs, extras, dist)<EOL>
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