code: def _find_volumes(self, volume_system, vstype='detect'):
          
  
          try:
              # noinspection PyUnresolvedReferences
              import pytsk3
          except ImportError:
              logger.error("pytsk3 not installed, could not detect volumes")
              raise ModuleNotFoundError("pytsk3")
  
          baseimage = None
          try:
              # ewf raw image is now available on base mountpoint
              # either as ewf1 file or as .dd file
              raw_path = volume_system.parent.get_raw_path()
              # noinspection PyBroadException
              try:
                  baseimage = pytsk3.Img_Info(raw_path)
              except Exception:
                  logger.error("Failed retrieving image info (possible empty image).", exc_info=True)
                  return []
  
              try:
                  volumes = pytsk3.Volume_Info(baseimage, getattr(pytsk3, 'TSK_VS_TYPE_' + vstype.upper()),
                                               volume_system.parent.offset // volume_system.disk.block_size)
                  volume_system.volume_source = 'multi'
                  return volumes
              except Exception as e:
                  # some bug in sleuthkit makes detection sometimes difficult, so we hack around it:
                  if "(GPT or DOS at 0)" in str(e) and vstype != 'gpt':
                      volume_system.vstype = 'gpt'
                      # noinspection PyBroadException
                      try:
                          logger.warning("Error in retrieving volume info: TSK couldn't decide between GPT and DOS, "
                                         "choosing GPT for you. Use --vstype=dos to force DOS.", exc_info=True)
                          volumes = pytsk3.Volume_Info(baseimage, getattr(pytsk3, 'TSK_VS_TYPE_GPT'))
                          volume_system.volume_source = 'multi'
                          return volumes
                      except Exception as e:
                          logger.exception("Failed retrieving image info (possible empty image).")
                          raise SubsystemError(e)
                  else:
                      logger.exception("Failed retrieving image info (possible empty image).")
                      raise SubsystemError(e)
          finally:
              if baseimage:
                  baseimage.close()
                  del baseimage
docs: Finds all volumes based on the pytsk3 library.