'Returns the value associated with a particular name.
:param namespace: The namespace that the property should be stored in.
:type namespace: string
:param name: The name the value was saved with.
:type name: string
:param default: A default value to return if no state is currently
associated with var.
:type default: object
:returns: A deep copy of the value associated with name. Note that this
explicitly returns a deep copy to avoid problems with mutable
values; mutations are not persisted or shared.
:raises: :class:`KeyError` raised when no state is associated with var
and a default value is not provided.'

@with_backing_file
def get(self, namespace, name, default=NO_DEFAULT):

    if self.has(namespace, name):
        return copy.deepcopy(self._state[namespace][name])
    elif (default is self.NO_DEFAULT):
        raise KeyError(('No    key    %s    in    namespace    %s' % (name, namespace)))
    else:
        return default
