'Parses  the specified uri, using _id_format as a format string, and sets the parsed format arguments as
attributes on the current id object.
:param uri: The key vault identifier uri to be parsed
:param validation_args: format arguments to be validated
:return: None'

def _parse(self, uri, validation_args):

    def format_error():
        return ValueError('invalid    id:    The    specified    uri    "{}",    does    to    match    the    specified    format    "{}"'.format(uri, self._id_format))
    uri = _validate_string_argument(uri, 'uri')
    parsed_uri = _parse_uri_argument(uri)
    id_segs = list(filter(None, parsed_uri.path.split('/')))
    id_segs.insert(0, '{}://{}'.format(parsed_uri.scheme, parsed_uri.hostname))
    fmt_segs = list(filter(None, self._id_format.split('/')))
    for ix in range(len(fmt_segs)):
        fmt_seg = fmt_segs[ix]
        id_seg = (id_segs.pop(0) if (len(id_segs) > 0) else '')
        if (fmt_seg.startswith('{') and fmt_seg.endswith('}')):
            prop = fmt_seg[1:(-1)]
            prop_strip = prop.rstrip('?')
            if ((not id_seg) and (not prop.endswith('?'))):
                raise format_error()
            if ((prop_strip in validation_args) and validation_args[prop_strip] and (validation_args[prop_strip] != id_seg)):
                if (id_seg and (not prop.endswith('?'))):
                    raise ValueError('invalid    id:    The    {}    "{}"    does    not    match    the    expected    "{}"'.format(prop, id_seg, validation_args[prop_strip]))
            self.__dict__[prop_strip] = id_seg
        elif (not (fmt_seg == id_seg)):
            raise format_error()
    if (len(id_segs) > 0):
        raise format_error()
