code: def _check_keys(self, rdict):
          
          if '_meta_data' in rdict:
              error_message = "Response contains key '_meta_data' which is "\
                  "incompatible with this API!!\n Response json: %r" % rdict
              raise DeviceProvidesIncompatibleKey(error_message)
          for x in rdict:
              if not re.match(tokenize.Name, x):
                  error_message = "Device provided %r which is disallowed"\
                      " because it's not a valid Python 2.7 identifier." % x
                  raise DeviceProvidesIncompatibleKey(error_message)
              elif keyword.iskeyword(x):
                  # If attribute is keyword, append underscore to attribute name
                  rdict[x + '_'] = rdict[x]
                  rdict.pop(x)
              elif x.startswith('__'):
                  error_message = "Device provided %r which is disallowed"\
                      ", it mangles into a Python non-public attribute." % x
                  raise DeviceProvidesIncompatibleKey(error_message)
          return rdict
docs: Call this from _local_update to validate response keys
  
          disallowed server-response json keys:
          1. The string-literal '_meta_data'
          2. strings that are not valid Python 2.7 identifiers
          3. strings beginning with '__'.
  
          :param rdict: from response.json()
          :raises: DeviceProvidesIncompatibleKey
          :returns: checked response rdict