code: def get_app():
      app = dash.Dash(__name__)
  
      app.layout = html.Div(
          [
              DataTable(
                  id="table",
                  data=df[0:250],
                  columns=[
                      {
                          "name": i,
                          "id": i,
                          "hideable": i == "Complaint ID",
                      }
                      for i in rawDf.columns
                  ],
                  editable=True,
                  sort_action="native",
                  include_headers_on_copy_paste=True,
              ),
              DataTable(
                  id="table2",
                  data=df[0:10],
                  columns=[
                      {"name": i, "id": i, "deletable": True}
                      for i in rawDf.columns
                  ],
                  editable=True,
                  sort_action="native",
                  include_headers_on_copy_paste=True,
              ),
              DataTable(
                  id="table3",
                  data=df[0:10],
                  columns=[
                      {"name": i, "id": i, "deletable": True}
                      for i in rawDf.columns
                  ],
                  cell_selectable=False,
                  sort_action="native",
              ),
              DataTable(
                  id="table4",
                  data=[
                      {"string": 'a""b', "int": 10},
                      {"string": 'hello\n""hi', "int": 11},
                  ],
                  columns=[
                      {"name": "string", "id": "string"},
                      {"name": "int", "id": "int"},
                  ],
                  editable=True,
                  sort_action="native",
                  include_headers_on_copy_paste=True,
              ),
          ]
      )
  
      @app.callback(
          Output("table", "data"),
          [Input("table", "data_timestamp")],
          [State("table", "data"), State("table", "data_previous")],
      )
      # pylint: disable=unused-argument
      def update_data(timestamp, current, previous):
          # pylint: enable=unused-argument
          if timestamp is None or current is None or previous is None:
              raise PreventUpdate
  
          modified = False
          if len(current) == len(previous):
              for i, datum in enumerate(current):
                  previous_datum = previous[i]
  
                  if (
                      datum["Unnamed: 0"]
                      != previous_datum["Unnamed: 0"]
                  ):
                      datum["Complaint ID"] = "MODIFIED"
                      modified = True
  
          if modified:
              return current
          else:
              raise PreventUpdate
  
      return app
  
imports: import dash
  import pytest
  from dash.dependencies import Input, Output, State
  from dash.exceptions import PreventUpdate
  from dash import html
  from dash.dash_table import DataTable
  from selenium.webdriver.common.keys import Keys
  from selenium.webdriver.common.action_chains import ActionChains
  import pandas
label_desc: Use image node_id 1 for calling a global function with example usage: get_app() and returns: app, current