code: def _unzip_local_file(filename: str, prefix=None):
      """Unzip the file ending with 'bz2'. Initially with pbzip2 if installed or bz2.
  
      Args:
          filename: The file to unzip.
          prefix (str, optional): If file is one of many segments of data, prefix random filename
          for correct sorting. This is normally the segment number.
  
      Returns:
          Temporary filename path for decompressed file or None.
  
      """
      if not os.fspath(filename).endswith("bz2"):
          return None
      fdn, tmpfilepath = tempfile.mkstemp(
          prefix=prefix, dir=config["tmp_dir"]
      )
      LOGGER.info(
          "Using temp file for BZ2 decompression: %s", tmpfilepath
      )
      # check pbzip2 status
      pbzip2 = _unzip_with_pbzip(filename, tmpfilepath, fdn)
      if pbzip2 is not None:
          return pbzip2
      # Otherwise, fall back to the original method bz2
      content = _unzip_with_bz2(filename, tmpfilepath)
      return _write_uncompressed_file(
          content, fdn, filename, tmpfilepath
      )
  
imports: from __future__ import annotations
  import bz2
  import logging
  import os
  import shutil
  import tempfile
  import warnings
  from contextlib import closing, contextmanager
  from io import BytesIO
  from shutil import which
  from subprocess import PIPE, Popen
  import numpy
  import pyproj
  import xarray
  from pyresample.geometry import AreaDefinition
  from satpy import config
  from satpy.readers import FSFile
  from satpy.utils import get_legacy_chunk_size
label_desc: Use image node_id 11 for calling a global function with example usage: _unzip_local_file(filename, prefix) and returns: _write_uncompressed_file, None, pbzip2