@@ -175,11 +175,13 @@ def _do_skip(error):
175175
176176 # werkzeug<2.1.0
177177 if hasattr (tbtools , "get_current_traceback" ):
178- return tbtools .get_current_traceback (skip = _get_skip (error )).render_full ()
178+ return tbtools .get_current_traceback ( # type: ignore
179+ skip = _get_skip (error )
180+ ).render_full ()
179181
180182 if hasattr (tbtools , "DebugTraceback" ):
181183 # pylint: disable=no-member
182- return tbtools .DebugTraceback (
184+ return tbtools .DebugTraceback ( # type: ignore
183185 error , skip = _get_skip (error )
184186 ).render_debugger_html (True , secret , True )
185187
@@ -378,6 +380,8 @@ class Dash:
378380 _plotlyjs_url : str
379381 STARTUP_ROUTES : list = []
380382
383+ server : flask .Flask
384+
381385 def __init__ ( # pylint: disable=too-many-statements
382386 self ,
383387 name : Optional [str ] = None ,
@@ -404,7 +408,7 @@ def __init__( # pylint: disable=too-many-statements
404408 prevent_initial_callbacks : bool = False ,
405409 show_undo_redo : bool = False ,
406410 extra_hot_reload_paths : Optional [List [str ]] = None ,
407- plugins : Optional [List [ Dict [ str , Any ]] ] = None ,
411+ plugins : Optional [list ] = None ,
408412 title : str = "Dash" ,
409413 update_title : str = "Updating..." ,
410414 long_callback_manager : Optional [
@@ -432,7 +436,7 @@ def __init__( # pylint: disable=too-many-statements
432436 name = getattr (server , "name" , caller_name )
433437 elif isinstance (server , bool ):
434438 name = name if name else caller_name
435- self .server = flask .Flask (name ) if server else None
439+ self .server = flask .Flask (name ) if server else None # type: ignore
436440 else :
437441 raise ValueError ("server must be a Flask app or a boolean" )
438442
@@ -444,7 +448,7 @@ def __init__( # pylint: disable=too-many-statements
444448 name = name ,
445449 assets_folder = os .path .join (
446450 flask .helpers .get_root_path (name ), assets_folder
447- ),
451+ ), # type: ignore
448452 assets_url_path = assets_url_path ,
449453 assets_ignore = assets_ignore ,
450454 assets_external_path = get_combined_config (
@@ -550,7 +554,9 @@ def __init__( # pylint: disable=too-many-statements
550554 if not self .logger .handlers and add_log_handler :
551555 self .logger .addHandler (logging .StreamHandler (stream = sys .stdout ))
552556
553- if isinstance (plugins , patch_collections_abc ("Iterable" )):
557+ if plugins is not None and isinstance (
558+ plugins , patch_collections_abc ("Iterable" )
559+ ):
554560 for plugin in plugins :
555561 plugin .plug (self )
556562
@@ -1965,7 +1971,7 @@ def run(
19651971 port = "8050" ,
19661972 proxy = None ,
19671973 debug = None ,
1968- jupyter_mode : JupyterDisplayMode = None ,
1974+ jupyter_mode : Optional [ JupyterDisplayMode ] = None ,
19691975 jupyter_width = "100%" ,
19701976 jupyter_height = 650 ,
19711977 jupyter_server_url = None ,
@@ -2100,7 +2106,7 @@ def run(
21002106 port = int (port )
21012107 assert port in range (1 , 65536 )
21022108 except Exception as e :
2103- e .args = [ f"Expecting an integer from 1 to 65535, found port={ repr (port )} " ]
2109+ e .args = ( f"Expecting an integer from 1 to 65535, found port={ repr (port )} " ,)
21042110 raise
21052111
21062112 # so we only see the "Running on" message once with hot reloading
0 commit comments