code: def _GetTSKPartitionIdentifiers(self, scan_node):
      
      if not scan_node or not scan_node.path_spec:
        raise errors.ScannerError('Invalid scan node.')
  
      volume_system = tsk_volume_system.TSKVolumeSystem()
      volume_system.Open(scan_node.path_spec)
  
      volume_identifiers = self._source_scanner.GetVolumeIdentifiers(
          volume_system)
      if not volume_identifiers:
        return []
  
      if len(volume_identifiers) == 1:
        return volume_identifiers
  
      if not self._mediator:
        raise errors.ScannerError(
            'Unable to proceed. Partitions found but no mediator to determine '
            'how they should be used.')
  
      try:
        volume_identifiers = self._mediator.GetPartitionIdentifiers(
            volume_system, volume_identifiers)
  
      except KeyboardInterrupt:
        raise errors.UserAbort('File system scan aborted.')
  
      return self._NormalizedVolumeIdentifiers(
          volume_system, volume_identifiers, prefix='p')
docs: Determines the TSK partition identifiers.
  
      Args:
        scan_node (SourceScanNode): scan node.
  
      Returns:
        list[str]: TSK partition identifiers.
  
      Raises:
        ScannerError: if the format of or within the source is not supported or
            the scan node is invalid or if the volume for a specific identifier
            cannot be retrieved.
        UserAbort: if the user requested to abort.