Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: Adding supporti from passing the base compression manager as kw…
…arg in the callback method and function
  • Loading branch information
caue-paiva committed Sep 27, 2025
commit 2327c3240c1717eb503d09e5e0f67d76f58b8a11
4 changes: 4 additions & 0 deletions dash/_callback.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
from .background_callback.managers import BaseBackgroundCallbackManager
from ._callback_context import context_value
from ._no_update import NoUpdate
from ._compression import get_compression_manager_from_kwargs


async def _async_invoke_callback(
Expand Down Expand Up @@ -279,6 +280,7 @@ def insert_callback(
no_output=False,
optional=False,
hidden=False,
compression_manager=None,
):
if prevent_initial_call is None:
prevent_initial_call = config_prevent_initial_callbacks
Expand Down Expand Up @@ -319,6 +321,7 @@ def insert_callback(
"manager": manager,
"allow_dynamic_callbacks": dynamic_creator,
"no_output": no_output,
"compression_manager": compression_manager,
}
callback_list.append(callback_spec)

Expand Down Expand Up @@ -653,6 +656,7 @@ def register_callback(
no_output=not has_output,
optional=_kwargs.get("optional", False),
hidden=_kwargs.get("hidden", False),
compression_manager=get_compression_manager_from_kwargs(_kwargs),
)

# pylint: disable=too-many-locals
Expand Down
16 changes: 15 additions & 1 deletion dash/_compression.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import gzip
import zlib
import logging
from typing import Any, Dict, List, Union, Tuple
from typing import Any, Dict, List, Union, Tuple, Optional

try:
import brotli
Expand Down Expand Up @@ -312,5 +312,19 @@ def _decompress_bytes(self, data: bytes) -> bytes:
return brotli.decompress(data)


def get_compression_manager_from_kwargs(
kwargs: dict,
) -> Optional[BaseStoreCompressionManager]:
"""Extract compression manager from kwargs dict.

Args:
kwargs: Dictionary that may contain 'compression_manager' key

Returns:
BaseStoreCompressionManager instance or None if not found
"""
return kwargs.get("compression_manager", None)


# Convenience alias
StoreCompressionManager = GzipCompressionManager