docs: def make_data_packet(raw_data) -> 'DataPacket':
          """
          Converts raw byte data to a sACN DataPacket. Note that the raw bytes have to come from a 2016 sACN Message.
          This does not support Sync Addresses, Force_Sync option and DMX Start code!
          :param raw_data: raw bytes as tuple or list
          :return: a DataPacket with the properties set like the raw bytes
          """
          # Check if the length is sufficient
          if len(raw_data) < 126:
              raise TypeError('The length of the provided data is not long enough! Min length is 126!')
          # Check if the three Vectors are correct
          if tuple(raw_data[18:22]) != tuple(VECTOR_ROOT_E131_DATA) or \
             tuple(raw_data[40:44]) != tuple(VECTOR_E131_DATA_PACKET) or \
             raw_data[117] != VECTOR_DMP_SET_PROPERTY:  # REMEMBER: when slicing: [inclusive:exclusive]
              raise TypeError('Some of the vectors in the given raw data are not compatible to the E131 Standard!')
  
          tmpPacket = DataPacket(cid=raw_data[22:38], sourceName=str(raw_data[44:108]),
                                 universe=(0xFF * raw_data[113]) + raw_data[114])  # high byte first
          tmpPacket.priority = raw_data[108]
          # SyncAddress in the future?!
          tmpPacket.sequence = raw_data[111]
          tmpPacket.option_PreviewData = bool(raw_data[112] & 0b10000000)  # use the 7th bit as preview_data
          tmpPacket.option_StreamTerminated = bool(raw_data[112] & 0b01000000)
          tmpPacket.dmxData = raw_data[126:638]
          return tmpPacket