def _from_dict(cls, values, value_filter, dictionary, allow_unset=True):
        """Instantiates new PointDataObject, populated from the given dictionary. With allow_unset=False, a ValueError
        will be raised if any value has not been set. Used by PointDataObjectHandler"""
        if not isinstance(dictionary, Mapping):
            raise TypeError('dictionary should be mapping')
        obj = cls(values, value_filter)
        values = obj.__values
        for name, value in dictionary.items():
            if not isinstance(name, string_types):
                raise TypeError('Key %s is not a string' % str(name))
            setattr(values, name, value)
        if obj.missing and not allow_unset:
            raise ValueError('%d value(s) are unset' % len(obj.missing))
        return obj
Instantiates new PointDataObject, populated from the given dictionary. With allow_unset=False, a ValueError
        will be raised if any value has not been set. Used by PointDataObjectHandler