class_docstr: Read notebook cells from plain Python or Julia files. Cells
  are identified by line breaks, unless they start with an
  explicit marker '# +'
class_docstr_tok: ["Read","notebook","cells","from","plain","Python","or","Julia","files",".","Cells","are","identified","by","line","breaks",",","unless","they","start","with","an","explicit","marker","'","#","+","'"]
code: def metadata_and_language_from_option_line(self, line):
      if self.start_code_re.match(line):
          # Remove the OCAML suffix
          if self.comment_suffix:
              if line.endswith(" " + self.comment_suffix):
                  line = line[: -len(" " + self.comment_suffix)]
              elif line.endswith(self.comment_suffix):
                  line = line[: -len(self.comment_suffix)]
  
          # We want to parse inner most regions as cells.
          # Thus, if we find another region start before the end for this region,
          # we will have ignore the metadata that we found here, and move on to the next cell.
          groups = self.start_code_re.match(line).groups()
          self.language, self.metadata = self.options_to_metadata(
              groups[0]
          )
          self.ignore_end_marker = False
          if self.cell_marker_start:
              self.explicit_end_marker_required = True
      elif (
          self.simple_start_code_re
          and self.simple_start_code_re.match(line)
      ):
          self.metadata = {}
          self.ignore_end_marker = False
      elif self.cell_marker_end and self.end_code_re.match(line):
          self.metadata = None
          self.cell_type = "code"
  
imports: import re
  import warnings
  from copy import copy
  from nbformat.v4.nbbase import new_code_cell, new_markdown_cell, new_raw_cell
  from packaging.version import parse
  from .doxygen import doxygen_to_markdown
  from .languages import _SCRIPT_EXTENSIONS
  from .cell_metadata import is_active, is_json_metadata, rmd_options_to_metadata, text_to_metadata
  from .languages import _JUPYTER_LANGUAGES_LOWER_AND_UPPER
  from .magics import is_magic, need_explicit_marker, uncomment_magic, unescape_code_start
  from .pep8 import pep8_lines_between_cells
  from .stringparser import StringParser
label_desc: Use image node_id 2 for calling the LightScriptCellReader obj's underlying member method code with example usage: obj.metadata_and_language_from_option_line(line) without return types