dungmai's picture
Upload folder using huggingface_hub
8a6cf24 verified
"""gr.BrowserState() component."""
from __future__ import annotations
import secrets
import string
from typing import Any
from gradio_client.documentation import document
from gradio.components.base import Component
from gradio.events import Dependency
@document()
class BrowserState(Component):
"""
Special component that stores state in the browser's localStorage in an encrypted format.
"""
def __init__(
self,
default_value: Any = None,
*,
storage_key: str | None = None,
secret: str | None = None,
render: bool = True,
):
"""
Parameters:
default_value: the default value that will be used if no value is found in localStorage. Should be a json-serializable value.
storage_key: the key to use in localStorage. If None, a random key will be generated.
secret: the secret key to use for encryption. If None, a random key will be generated (recommended).
render: should always be True, is included for consistency with other components.
"""
self.default_value = default_value
self.secret = secret or "".join(
secrets.choice(string.ascii_letters + string.digits) for _ in range(16)
)
self.storage_key = storage_key or "".join(
secrets.choice(string.ascii_letters + string.digits) for _ in range(16)
)
super().__init__(render=render)
def preprocess(self, payload: Any) -> Any:
"""
Parameters:
payload: Value from local storage
Returns:
Passes value through unchanged
"""
return payload
def postprocess(self, value: Any) -> Any:
"""
Parameters:
value: Value to store in local storage
Returns:
Passes value through unchanged
"""
return value
def api_info(self) -> dict[str, Any]:
return {"type": {}, "description": "any json-serializable value"}
def example_payload(self) -> Any:
return "test"
def example_value(self) -> Any:
return "test"
from typing import Callable, Literal, Sequence, Any, TYPE_CHECKING
from gradio.blocks import Block
if TYPE_CHECKING:
from gradio.components import Timer