code: def read(self, required=False):
          
          self._pristine_cache = {}
          self._cache = {}
          try:
              data, stat = yield self._client.get(self._path)
              data = yaml.load(data)
              if data:
                  self._pristine_cache = data
                  self._cache = data.copy()
          except NoNodeException:
              if required:
                  raise StateNotFound(self._path)
docs: 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.