docs: def _load_attributes(self, mft_config, attrs_view):
          '''Loads all the attributes of an entry.
  
          Once executed, all the attributes should have been loaded in the
          attribute *attrs* instance attribute.
  
          Args:
              mft_config (:obj:`MFTConfig`) - An instance of MFTConfig, as this tells
                  how the library will interpret data.
              attrs_view (memoryview(bytearray)) - A binary stream that starts at
                  the first attribute until the end of the entry
          '''
          offset = 0
          load_attrs = mft_config.attribute_load_list
  
          while (attrs_view[offset:offset+4] != b'\xff\xff\xff\xff'):
              attr_type, attr_len, non_resident = _get_attr_info(attrs_view[offset:])
              if attr_type in load_attrs:
                  # pass all the information to the attr, as we don't know how
                  # much content the attribute has
                  attr = Attribute.create_from_binary(non_resident, mft_config.load_dataruns, attrs_view[offset:])
                  if not attr.header.attr_type_id is AttrTypes.DATA:
                      self.attrs[attr.header.attr_type_id].append(attr) #add an attribute
                  else:
                      self._add_data_attribute(attr)
              offset += attr_len