docs: def create_from_binary(cls, binary_view):
          '''Creates a new object DataRuns from a binary stream. The binary
          stream can be represented by a byte string, bytearray or a memoryview of the
          bytearray.
  
          Args:
              binary_view (memoryview of bytearray) - A binary stream with the
                  information of the attribute
  
          Returns:
              DataRuns: New object using hte binary stream as source
          '''
          nw_obj = cls()
          offset = 0
          previous_dr_offset = 0
          header_size = cls._INFO.size #"header" of a data run is always a byte
  
          while binary_view[offset] != 0:   #the runlist ends with an 0 as the "header"
              header = cls._INFO.unpack(binary_view[offset:offset+header_size])[0]
              length_len = header & 0x0F
              length_offset = (header & 0xF0) >> 4
  
              temp_len = offset+header_size+length_len #helper variable just to make things simpler
              dr_length = int.from_bytes(binary_view[offset+header_size:temp_len], "little", signed=False)
              if length_offset: #the offset is relative to the previous data run
                  dr_offset = int.from_bytes(binary_view[temp_len:temp_len+length_offset], "little", signed=True) + previous_dr_offset
                  previous_dr_offset = dr_offset
              else: #if it is sparse, requires a a different approach
                  dr_offset = None
              offset += header_size + length_len + length_offset
              nw_obj.data_runs.append((dr_length, dr_offset))
              #nw_obj.data_runs.append(DataRun(dr_length, dr_offset))
  
          _MOD_LOGGER.debug("DataRuns object created successfully")
  
          return nw_obj