'Assemble a validated and sanitized keyword args dict for instantiating a
SkyCoord and coordinate object from the provided `args`, and `kwargs`.'

def _parse_inputs(self, args, kwargs):

    valid_kwargs = {}
    frame = valid_kwargs[u'frame'] = _get_frame(args, kwargs)
    if (u'representation' in kwargs):
        valid_kwargs[u'representation'] = _get_repr_cls(kwargs.pop(u'representation'))
    for attr in frame_transform_graph.frame_attributes:
        if (attr in kwargs):
            valid_kwargs[attr] = kwargs.pop(attr)
    units = _get_units(args, kwargs)
    valid_kwargs.update(_get_representation_attrs(frame, units, kwargs))
    if kwargs:
        vel_url = u'http://docs.astropy.org/en/stable/coordinates/velocities.html'
        for k in kwargs:
            if (k.startswith(u'pm_') or (k == u'radial_velocity')):
                raise ValueError(u'Velocity    data    is    currently    only    supported    in    the    coordinate    frame    objects,    not    in    SkyCoord.    See    the    velocities    documentation    page    for    more    information:    {0}'.format(vel_url))
        raise ValueError(u'Unrecognized    keyword    argument(s)    {0}'.format(u',    '.join((u"'{0}'".format(key) for key in kwargs))))
    if args:
        if (len(args) == 1):
            coord_kwargs = _parse_coordinate_arg(args[0], frame, units, kwargs)
            if (u'info' in getattr(args[0], u'__dict__', ())):
                self.info = args[0].info
        elif (len(args) <= 3):
            frame_attr_names = frame.representation_component_names.keys()
            repr_attr_names = frame.representation_component_names.values()
            coord_kwargs = {}
            for (arg, frame_attr_name, repr_attr_name, unit) in zip(args, frame_attr_names, repr_attr_names, units):
                attr_class = frame.representation.attr_classes[repr_attr_name]
                coord_kwargs[frame_attr_name] = attr_class(arg, unit=unit)
        else:
            raise ValueError(u'Must    supply    no    more    than    three    positional    arguments,    got    {}'.format(len(args)))
        for (attr, coord_value) in coord_kwargs.items():
            if ((attr in valid_kwargs) and (valid_kwargs[attr] is not None) and np.any((valid_kwargs[attr] != coord_value))):
                raise ValueError(u"Coordinate    attribute    '{0}'={1!r}    conflicts    with    keyword    argument    '{0}'={2!r}".format(attr, coord_value, valid_kwargs[attr]))
            valid_kwargs[attr] = coord_value
    return valid_kwargs
