"""gr.State() component.""" from __future__ import annotations from copy import deepcopy from typing import Any from gradio_client.documentation import document, set_documentation_group from gradio_client.serializing import SimpleSerializable from gradio.components.base import IOComponent set_documentation_group("component") @document() class State(IOComponent, SimpleSerializable): """ Special hidden component that stores session state across runs of the demo by the same user. The value of the State variable is cleared when the user refreshes the page. Preprocessing: No preprocessing is performed Postprocessing: No postprocessing is performed Demos: blocks_simple_squares Guides: real-time-speech-recognition """ allow_string_shortcut = False def __init__( self, value: Any = None, **kwargs, ): """ Parameters: value: the initial value (of arbitrary type) of the state. The provided argument is deepcopied. If a callable is provided, the function will be called whenever the app loads to set the initial value of the state. """ self.stateful = True IOComponent.__init__(self, value=deepcopy(value), **kwargs) class Variable(State): """Variable was renamed to State. This class is kept for backwards compatibility.""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def get_block_name(self): return "state"