code: def reads(
      text,
      fmt=None,
      as_version=nbformat.NO_CONVERT,
      config=None,
      **kwargs,
  ):
      """
      Read a notebook from a string
  
      :param text: the text representation of the notebook
      :param fmt: (optional) the jupytext format like `md`, `py:percent`, ...
      :param as_version: see nbformat.reads
      :param config: (optional) a Jupytext configuration object
      :param kwargs: (not used) additional parameters for nbformat.reads
      :return: the notebook
      """
      fmt = copy(fmt) if fmt else divine_format(text)
      fmt = long_form_one_format(fmt)
      ext = fmt["extension"]
  
      if ext == ".ipynb":
          nb = nbformat.reads(text, as_version, **kwargs)
          (version, version_minor) = nbformat.reader.get_version(nb)
          if version != 4:
              warnings.warn(
                  f"Notebooks in nbformat version {version}.{version_minor} are not supported by Jupytext. "
                  f"Please consider converting them to nbformat version 4.x with "
                  f"'jupyter nbconvert --to notebook --inplace'"
              )
          return nb
  
      format_name = read_format_from_metadata(text, ext) or fmt.get(
          "format_name"
      )
  
      if format_name:
          format_options = {}
      else:
          format_name, format_options = guess_format(text, ext)
  
      if format_name:
          fmt["format_name"] = format_name
  
      fmt.update(format_options)
      reader = TextNotebookConverter(fmt, config)
      notebook = reader.reads(text, **kwargs)
      rearrange_jupytext_metadata(notebook.metadata)
  
      if format_name and insert_or_test_version_number():
          notebook.metadata.setdefault("jupytext", {}).setdefault(
              "text_representation", {}
          ).update({"extension": ext, "format_name": format_name})
  
      return notebook
  
imports: import logging
  import os
  import sys
  import warnings
  from copy import copy, deepcopy
  import nbformat
  from nbformat.v4.nbbase import NotebookNode, new_code_cell, new_notebook
  from nbformat.v4.rwbase import NotebookReader, NotebookWriter
  from .cell_metadata import _IGNORE_CELL_METADATA
  from .formats import _VALID_FORMAT_OPTIONS, divine_format, format_name_for_ext, get_format_implementation, guess_format, long_form_one_format, read_format_from_metadata, rearrange_jupytext_metadata, update_jupytext_formats_metadata
  from .header import encoding_and_executable, header_to_metadata_and_cell, insert_jupytext_info_and_filter_metadata, insert_or_test_version_number, metadata_and_cell_to_header
  from .languages import default_language_from_metadata_and_ext, set_main_and_cell_language
  from .metadata_filter import filter_metadata, update_metadata_filters
  from .myst import MYST_FORMAT_NAME, myst_extensions, myst_to_notebook, notebook_to_myst
  from .pandoc import md_to_notebook, notebook_to_md
  from .pep8 import pep8_lines_between_cells
  from .quarto import notebook_to_qmd, qmd_to_notebook
  from .version import __version__
label_desc: Use image node_id 1 for calling a global function with example usage: reads(text, fmt, as_version, config) and returns: notebook, nb