docs: def populate_field_values(self, data):
          """Load resource data and populate field values"""
  
          if not self._meta.case_sensitive_fields:
              data = {k.lower(): v for k, v in six.iteritems(data)}
  
          if self._meta.match_fuzzy_keys:
              # String any non-alphanumeric chars from each key
              data = {''.join(x for x in k if x in ALPHANUMERIC).lower(): v for k, v in six.iteritems(data)}
  
          for field in self._meta.fields:
              name = field.name if self._meta.case_sensitive_fields else field.name.lower()
              value = None
  
              if self._meta.match_fuzzy_keys:
                  name = ''.join(x for x in name if x in ALPHANUMERIC).lower()
  
              if name in data:
                  value = field.to_python(data[name], self)
              elif field.required and field.default is None:
                  message = "Response from {0} is missing required field '{1}'".format(self._url, field.name)
                  if self._strict:
                      raise MissingFieldException(message)
                  else:
                      logger.warn(message)
              elif field.default is not None:
                  value = copy.copy(field.default)
  
              setattr(self, field._attr_name, value)
  
          self._populated_field_values = True