@inlineCallbacks<EOL><INDENT>def read(self, required=False):<DEDENT>
self._pristine_cache = {}<EOL>self._cache = {}<EOL>try:<EOL><INDENT>data, stat = yield self._client.get(self._path)<EOL>data = yaml.load(data)<EOL>if data:<EOL><INDENT>self._pristine_cache = data<EOL>self._cache = data.copy()<EOL><DEDENT><DEDENT>except NoNodeException:<EOL><INDENT>if required:<EOL><INDENT>raise StateNotFound(self._path)<EOL><DEDENT><DEDENT>
Read Zookeeper state.

        Read in the current Zookeeper state for this node. This
        operation should be called prior to other interactions with
        this object.

        `required`: boolean indicating if the node existence should be
        required at read time. Normally write will create the node if
        the path is possible. This allows for simplified catching of
        errors.