import dash
from dash.dependencies import Input, Output
from dash.exceptions import PreventUpdate

from dash.dash_table import DataTable
from dash.html import Button, Div


def get_app():
    app = dash.Dash(__name__)

    columns = [{"name": i, "id": i} for i in ["a", "b"]]
    data = [dict(a=1, b=2), dict(a=11, b=22)]

    app.layout = Div(
        [
            Button(id="clear-table", children=["Clear table"]),
            DataTable(id="table", columns=columns, data=data),
        ]
    )

    @app.callback(
        [Output("table", "data"), Output("table", "columns")],
        [Input("clear-table", "n_clicks")],
    )
    def clear_table(n_clicks):
        if n_clicks is None:
            raise PreventUpdate

        nonlocal columns, data

        return (data, columns) if n_clicks % 2 == 0 else (None, None)

    return app


def test_empt001_clear_(test):
    test.start_server(get_app())

    target = test.table("table")

    assert target.is_ready()
    assert len(test.find_elements("tr")) == 3
    test.find_element("#clear-table").click()
    assert target.is_ready()
    assert len(test.find_elements("tr")) == 0
    assert test.get_log_errors() == []

e7d8085759f9d1fc93865c2ff24f4d3bc6635d59
<mask token>

<mask token>


def get_app():
    app = dash.Dash(__name__)
    columns = [{'name': i, 'id': i} for i in ['a', 'b']]
    data = [dict(a=1, b=2), dict(a=11, b=22)]
    app.layout = Div([Button(id='clear-table', children=['Clear table']),
        DataTable(id='table', columns=columns, data=data)])

    @app.callback([Output('table', 'data'), Output('table', 'columns')], [
        Input('clear-table', 'n_clicks')])
    def clear_table(n_clicks):
        if n_clicks is None:
            raise PreventUpdate
        nonlocal columns, data
        return (data, columns) if n_clicks % 2 == 0 else (None, None)
    return app


<mask token>

<mask token>


def get_app():
    app = dash.Dash(__name__)
    columns = [{'name': i, 'id': i} for i in ['a', 'b']]
    data = [dict(a=1, b=2), dict(a=11, b=22)]
    app.layout = Div([Button(id='clear-table', children=['Clear table']),
        DataTable(id='table', columns=columns, data=data)])

    @app.callback([Output('table', 'data'), Output('table', 'columns')], [
        Input('clear-table', 'n_clicks')])
    def clear_table(n_clicks):
        if n_clicks is None:
            raise PreventUpdate
        nonlocal columns, data
        return (data, columns) if n_clicks % 2 == 0 else (None, None)
    return app


def test_empt001_clear_(test):
    test.start_server(get_app())
    target = test.table('table')
    assert target.is_ready()
    assert len(test.find_elements('tr')) == 3
    test.find_element('#clear-table').click()
    assert target.is_ready()
    assert len(test.find_elements('tr')) == 0
    assert test.get_log_errors() == []

import dash
from dash.dependencies import Input, Output
from dash.exceptions import PreventUpdate
from dash.dash_table import DataTable
from dash.html import Button, Div


def get_app():
    app = dash.Dash(__name__)
    columns = [{'name': i, 'id': i} for i in ['a', 'b']]
    data = [dict(a=1, b=2), dict(a=11, b=22)]
    app.layout = Div([Button(id='clear-table', children=['Clear table']),
        DataTable(id='table', columns=columns, data=data)])

    @app.callback([Output('table', 'data'), Output('table', 'columns')], [
        Input('clear-table', 'n_clicks')])
    def clear_table(n_clicks):
        if n_clicks is None:
            raise PreventUpdate
        nonlocal columns, data
        return (data, columns) if n_clicks % 2 == 0 else (None, None)
    return app


def test_empt001_clear_(test):
    test.start_server(get_app())
    target = test.table('table')
    assert target.is_ready()
    assert len(test.find_elements('tr')) == 3
    test.find_element('#clear-table').click()
    assert target.is_ready()
    assert len(test.find_elements('tr')) == 0
    assert test.get_log_errors() == []

import dash
from dash.dependencies import Input, Output
from dash.exceptions import PreventUpdate

from dash.dash_table import DataTable
from dash.html import Button, Div


def get_app():
    app = dash.Dash(__name__)

    columns = [{"name": i, "id": i} for i in ["a", "b"]]
    data = [dict(a=1, b=2), dict(a=11, b=22)]

    app.layout = Div(
        [
            Button(id="clear-table", children=["Clear table"]),
            DataTable(id="table", columns=columns, data=data),
        ]
    )

    @app.callback(
        [Output("table", "data"), Output("table", "columns")],
        [Input("clear-table", "n_clicks")],
    )
    def clear_table(n_clicks):
        if n_clicks is None:
            raise PreventUpdate

        nonlocal columns, data

        return (data, columns) if n_clicks % 2 == 0 else (None, None)

    return app


def test_empt001_clear_(test):
    test.start_server(get_app())

    target = test.table("table")

    assert target.is_ready()
    assert len(test.find_elements("tr")) == 3
    test.find_element("#clear-table").click()
    assert target.is_ready()
    assert len(test.find_elements("tr")) == 0
    assert test.get_log_errors() == []
