code: def melt(
      frame,
      id_vars=None,
      value_vars=None,
      var_name=None,
      value_name="value",
      col_level=None,
  ):
      """
      Unpivots a DataFrame from wide format to long format, optionally leaving identifier variables set.
  
      This function is useful to massage a DataFrame into a format where one or more columns are identifier variables
      (``id_vars``), while all other columns, considered measured variables (``value_vars``), are "unpivoted" to the row
      axis, leaving just two non-identifier columns, 'variable' and 'value'.
  
      Parameters
      ----------
      frame : DataFrame
      id_vars : tuple, list, or ndarray, optional
          Column(s) to use as identifier variables.
      value_vars : tuple, list, or ndarray, optional
          Column(s) to unpivot. If not specified, uses all columns that
          are not set as `id_vars`.
      var_name : scalar
          Name to use for the 'variable' column. If None it uses
          ``frame.columns.name`` or 'variable'.
      value_name : scalar, default 'value'
          Name to use for the 'value' column.
      col_level : int or string, optional
          If columns are a MultiIndex then use this level to melt.
  
      Returns
      -------
      DataFrame
          Unpivoted DataFrame.
  
      See Also
      --------
      pandas.DataFrame.melt
      """
      # let pandas do upcasting as needed during melt
      with dask.config.set({"dataframe.convert-string": False}):
          return frame.map_partitions(
              M.melt,
              meta=no_default,
              id_vars=id_vars,
              value_vars=value_vars,
              var_name=var_name,
              value_name=value_name,
              col_level=col_level,
              token="melt",
          )
  
file_path: dask/dask/dataframe/reshape.py
imports: from __future__ import annotations
  import numpy
  import pandas
  from pandas.api.types import is_list_like, is_scalar
  import dask
  from dask.dataframe import methods
  from dask.dataframe._compat import PANDAS_GE_200
  from dask.dataframe.core import DataFrame, Series, apply_concat_apply, map_partitions
  from dask.dataframe.utils import has_known_categories
  from dask.typing import no_default
  from dask.utils import M, get_meta_library
label_desc: Use image node_id 3 for calling a global function with example usage: melt(frame, id_vars, value_vars, var_name, value_name, col_level) and returns: frame