code: def load_arff_from_gzip_file(
      gzip_file,
      parser,
      output_type,
      openml_columns_info,
      feature_names_to_select,
      target_names_to_select,
      shape=None,
      read_csv_kwargs=None,
  ):
      """Load a compressed ARFF file using a given parser.
  
      Parameters
      ----------
      gzip_file : GzipFile instance
          The file compressed to be read.
  
      parser : {"pandas", "liac-arff"}
          The parser used to parse the ARFF file. "pandas" is recommended
          but only supports loading dense datasets.
  
      output_type : {"numpy", "sparse", "pandas"}
          The type of the arrays that will be returned. The possibilities ara:
  
          - `"numpy"`: both `X` and `y` will be NumPy arrays;
          - `"sparse"`: `X` will be sparse matrix and `y` will be a NumPy array;
          - `"pandas"`: `X` will be a pandas DataFrame and `y` will be either a
            pandas Series or DataFrame.
  
      openml_columns_info : dict
          The information provided by OpenML regarding the columns of the ARFF
          file.
  
      feature_names_to_select : list of str
          A list of the feature names to be selected.
  
      target_names_to_select : list of str
          A list of the target names to be selected.
  
      read_csv_kwargs : dict, default=None
          Keyword arguments to pass to `pandas.read_csv`. It allows to overwrite
          the default options.
  
      Returns
      -------
      X : {ndarray, sparse matrix, dataframe}
          The data matrix.
  
      y : {ndarray, dataframe, series}
          The target.
  
      frame : dataframe or None
          A dataframe containing both `X` and `y`. `None` if
          `output_array_type != "pandas"`.
  
      categories : list of str or None
          The names of the features that are categorical. `None` if
          `output_array_type == "pandas"`.
      """
      if parser == "liac-arff":
          return _liac_arff_parser(
              gzip_file,
              output_type,
              openml_columns_info,
              feature_names_to_select,
              target_names_to_select,
              shape,
          )
      elif parser == "pandas":
          return _pandas_arff_parser(
              gzip_file,
              output_type,
              openml_columns_info,
              feature_names_to_select,
              target_names_to_select,
              read_csv_kwargs,
          )
      else:
          raise ValueError(
              f"Unknown parser: '{parser}'. Should be 'liac-arff' or 'pandas'."
          )
  
file_path: scikit-learn/sklearn/datasets/_arff_parser.py
imports: import itertools
  import re
  from collections import OrderedDict
  from collections.abc import Generator
  from typing import List
  import numpy
  import scipy
  from ..externals import _arff
  from ..externals._arff import ArffSparseDataType
  from ..utils import _chunk_generator, check_pandas_support, get_chunk_n_rows
  from ..utils.fixes import pd_fillna
label_desc: Use image node_id 6 for calling a global function with example usage: load_arff_from_gzip_file(gzip_file, parser, output_type, openml_columns_info, feature_names_to_select, target_names_to_select, shape, read_csv_kwargs) and returns: _liac_arff_parser, _pandas_arff_parser