code: def _state(self):
          
          state = {}
          required_keys = ('deviceStatusInfo',
                           'gasUsage',
                           'powerUsage',
                           'thermostatInfo',
                           'thermostatStates')
          try:
              for _ in range(self._state_retries):
                  state.update(self._get_data('/client/auth/retrieveToonState'))
          except TypeError:
              self._logger.exception('Could not get answer from service.')
          message = ('Updating internal state with retrieved '
                     'state:{state}').format(state=state)
          self._logger.debug(message)
          self._state_.update(state)
          if not all([key in self._state_.keys() for key in required_keys]):
              raise IncompleteResponse(state)
          return self._state_
docs: The internal state of the object.
  
          The api responses are not consistent so a retry is performed on every
          call with information updating the internally saved state refreshing
          the data. The info is cached for STATE_CACHING_SECONDS.
  
          :return: The current state of the toons' information state.