-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Version 3 adds breaking type annotations that do not comply with mypy #3226
Copy link
Copy link
Open
Labels
P2considered for next cycleconsidered for next cyclebugsomething brokensomething brokenregressionthis used to workthis used to work
Description
With the release of dash 3.0 our CI/CD fails for stuff that used to work.
Here's a minimum working example:
from dash import Dash, dcc, html
from dash.dependencies import Input, Output
from typing import Callable
app = Dash(__name__)
def create_layout() -> html.Div:
return html.Div([
dcc.Input(id='input-text', type='text', value='', placeholder='Enter text'),
html.Div(id='output-text')
])
app.layout = create_layout
@app.callback(Output('output-text', 'children'), Input('input-text', 'value'))
def update_output(value: str) -> str:
return f'You entered: {value}'
if __name__ == '__main__':
app.run(debug=True, port=9000)running mypy on this file results in:
$ mypy t.py --strict
t.py:1: error: Skipping analyzing "dash": module is installed, but missing library stubs or py.typed marker [import-untyped]
t.py:2: error: Skipping analyzing "dash.dependencies": module is installed, but missing library stubs or py.typed marker [import-untyped]
t.py:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
t.py:15: error: Untyped decorator makes function "update_output" untyped [misc]
Found 3 errors in 1 file (checked 1 source file)which we used to solve by adding # type: ignore[misc] to every callback call and by adding
[[tool.mypy.overrides]]
module = [
"dash.*",
"dash_ag_grid",
"dash_bootstrap_components.*",
"plotly.*",
]
ignore_missing_imports = trueto our pyproject.toml.
However, when updating to version 3, we get:
$ mypy --strict t.py
t.py:8: error: Returning Any from function declared to return "Div" [no-any-return]
t.py:13: error: Property "layout" defined in "Dash" is read-only [misc]
t.py:15: error: Call to untyped function "Input" in typed context [no-untyped-call]
t.py:15: error: Call to untyped function "Output" in typed context [no-untyped-call]
t.py:15: error: Call to untyped function "callback" in typed context [no-untyped-call]
t.py:15: note: Error code "no-untyped-call" not covered by "type: ignore" comment
Found 5 errors in 1 file (checked 1 source file)without changing anything else.
This can't be intended behavior, right? How to fix that?
community post: https://community.plotly.com/t/dash-3-0-fails-mypy/91308
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P2considered for next cycleconsidered for next cyclebugsomething brokensomething brokenregressionthis used to workthis used to work