def __protect__(self, key, value=sentinel):
        """Protected keys add its parents, not sure if useful"""
        if not isinstance(key, list):
            key = key.split('.') if isinstance(key, basestring) else [key]
        key, path = key.pop(0), key
        if len(path) > 0:
            self.get(key).protect(path, value)
        elif value is not sentinel:
            self[key] = value
        if key not in self:
            raise KeyError('key %s has no value to protect' % key)
        self.__PROTECTED__.add(key)

    #Object.key sets
dataset/ETHPy150Open facebook/pyaib/pyaib/util/data.py/Object.__protect__/original