'Factory method that parses the serialized safe cookie data,
verifies the version, and returns the safe cookie object.
Raises SafeCookieError if there are any issues parsing the
safe_cookie_string.'

@classmethod
def parse(cls, safe_cookie_string):

    try:
        raw_cookie_components = safe_cookie_string.split(cls.SEPARATOR)
        safe_cookie_data = SafeCookieData(*raw_cookie_components)
    except TypeError:
        raise SafeCookieError('SafeCookieData    BWC    parse    error:    {0!r}.'.format(safe_cookie_string))
    else:
        if (safe_cookie_data.version != cls.CURRENT_VERSION):
            raise SafeCookieError('SafeCookieData    version    {0!r}    is    not    supported.    Current    version    is    {1}.'.format(safe_cookie_data.version, cls.CURRENT_VERSION))
        return safe_cookie_data
