Skip to content

Commit 45f71ce

Browse files
committed
refactor: Updating the strategy to control the hidden parameter of each callback function through the hide_all_callbacks parameter
1 parent b2daa1f commit 45f71ce

2 files changed

Lines changed: 20 additions & 22 deletions

File tree

dash/_callback.py

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
from . import _validate
4242
from .background_callback.managers import BaseBackgroundCallbackManager
4343
from ._callback_context import context_value
44-
from ._get_app import get_app
4544
from ._no_update import NoUpdate
4645

4746

@@ -179,13 +178,9 @@ def callback(
179178

180179
background_spec: Any = None
181180

182-
# Get prevent_initial_callbacks and hide_all_callbacks from get_app().config
183-
current_app_config = get_app().config
184-
185-
config_prevent_initial_callbacks = current_app_config.get(
186-
"prevent_initial_callbacks", False
181+
config_prevent_initial_callbacks = _kwargs.pop(
182+
"config_prevent_initial_callbacks", False
187183
)
188-
config_hide_all_callbacks = current_app_config.get("hide_all_callbacks", False)
189184
callback_map = _kwargs.pop("callback_map", GLOBAL_CALLBACK_MAP)
190185
callback_list = _kwargs.pop("callback_list", GLOBAL_CALLBACK_LIST)
191186

@@ -227,7 +222,6 @@ def callback(
227222
callback_list,
228223
callback_map,
229224
config_prevent_initial_callbacks,
230-
config_hide_all_callbacks,
231225
*_args,
232226
**_kwargs,
233227
background=background_spec,
@@ -259,7 +253,6 @@ def clientside_callback(clientside_function: ClientsideFuncType, *args, **kwargs
259253
GLOBAL_CALLBACK_LIST,
260254
GLOBAL_CALLBACK_MAP,
261255
False,
262-
False,
263256
GLOBAL_INLINE_SCRIPTS,
264257
clientside_function,
265258
*args,
@@ -272,7 +265,6 @@ def insert_callback(
272265
callback_list,
273266
callback_map,
274267
config_prevent_initial_callbacks,
275-
config_hide_all_callbacks,
276268
output,
277269
outputs_indices,
278270
inputs,
@@ -290,9 +282,6 @@ def insert_callback(
290282
if prevent_initial_call is None:
291283
prevent_initial_call = config_prevent_initial_callbacks
292284

293-
if hidden is None:
294-
hidden = config_hide_all_callbacks
295-
296285
_validate.validate_duplicate_output(
297286
output, prevent_initial_call, config_prevent_initial_callbacks
298287
)
@@ -611,7 +600,6 @@ def register_callback(
611600
callback_list,
612601
callback_map,
613602
config_prevent_initial_callbacks,
614-
config_hide_all_callbacks,
615603
*_args,
616604
**_kwargs,
617605
):
@@ -651,7 +639,6 @@ def register_callback(
651639
callback_list,
652640
callback_map,
653641
config_prevent_initial_callbacks,
654-
config_hide_all_callbacks,
655642
insert_output,
656643
output_indices,
657644
flat_inputs,
@@ -664,7 +651,7 @@ def register_callback(
664651
running=running,
665652
no_output=not has_output,
666653
optional=_kwargs.get("optional", False),
667-
hidden=_kwargs.get("hidden"),
654+
hidden=_kwargs.get("hidden", None),
668655
)
669656

670657
# pylint: disable=too-many-locals
@@ -849,7 +836,6 @@ def register_clientside_callback(
849836
callback_list,
850837
callback_map,
851838
config_prevent_initial_callbacks,
852-
config_hide_all_callbacks,
853839
inline_scripts,
854840
clientside_function: ClientsideFuncType,
855841
*args,
@@ -861,7 +847,6 @@ def register_clientside_callback(
861847
callback_list,
862848
callback_map,
863849
config_prevent_initial_callbacks,
864-
config_hide_all_callbacks,
865850
output,
866851
None,
867852
inputs,

dash/dash.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
from . import _watch
7070
from . import _get_app
7171

72-
from ._get_app import with_app_context, with_app_context_async, with_app_context_factory
72+
from ._get_app import get_app, with_app_context, with_app_context_async, with_app_context_factory
7373
from ._grouping import map_grouping, grouping_len, update_args_group
7474
from ._obsolete import ObsoleteChecker
7575

@@ -366,7 +366,7 @@ class Dash(ObsoleteChecker):
366366
``True`` here in which case you must explicitly set it ``False`` for
367367
those callbacks you wish to have an initial call. This setting has no
368368
effect on triggering callbacks when their inputs change later on.
369-
369+
370370
:param hide_all_callbacks: Default ``False``: Sets the default value of
371371
``hidden`` for all callbacks added to the app. Normally all callbacks
372372
are visible in the devtools callbacks tab. You can set this for
@@ -680,7 +680,6 @@ def _setup_hooks(self):
680680
self._callback_list,
681681
self.callback_map,
682682
self.config.prevent_initial_callbacks,
683-
self.config.hide_all_callbacks,
684683
self._inline_scripts,
685684
clientside_function,
686685
*args,
@@ -1443,7 +1442,6 @@ def clientside_callback(self, clientside_function, *args, **kwargs):
14431442
self._callback_list,
14441443
self.callback_map,
14451444
self.config.prevent_initial_callbacks,
1446-
self.config.hide_all_callbacks,
14471445
self._inline_scripts,
14481446
clientside_function,
14491447
*args,
@@ -1466,6 +1464,7 @@ def callback(self, *_args, **_kwargs) -> Callable[..., Any]:
14661464
"""
14671465
return _callback.callback(
14681466
*_args,
1467+
config_prevent_initial_callbacks=self.config.prevent_initial_callbacks,
14691468
callback_list=self._callback_list,
14701469
callback_map=self.callback_map,
14711470
callback_api_paths=self.callback_api_paths,
@@ -1655,7 +1654,21 @@ def _setup_server(self):
16551654

16561655
self.callback_map[k] = _callback.GLOBAL_CALLBACK_MAP.pop(k)
16571656

1657+
# Get config of current app instance
1658+
current_app_config = get_app().config
1659+
16581660
self._callback_list.extend(_callback.GLOBAL_CALLBACK_LIST)
1661+
# For each callback function, if the hidden parameter uses the default value None,
1662+
# replace it with the actual value of the hide_all_callbacks property of the current application instance.
1663+
self._callback_list = [
1664+
{
1665+
**_callback,
1666+
"hidden": current_app_config.get("hide_all_callbacks", False)
1667+
}
1668+
if _callback.get("hidden") is None
1669+
else _callback
1670+
for _callback in self._callback_list
1671+
]
16591672
_callback.GLOBAL_CALLBACK_LIST.clear()
16601673

16611674
_validate.validate_background_callbacks(self.callback_map)

0 commit comments

Comments
 (0)