diff --git a/gradio/outputs.py b/gradio/outputs.py index aecbdfbb49..9ab153919a 100644 --- a/gradio/outputs.py +++ b/gradio/outputs.py @@ -844,6 +844,8 @@ class State(OutputComponent): Parameters: label (str): component name in interface (not used). """ + warnings.warn("The State output component will be deprecated. Please use the " + "new Stateful component.") super().__init__(label) @classmethod diff --git a/gradio/state.py b/gradio/state.py index 0d8980e163..f2b88dafef 100644 --- a/gradio/state.py +++ b/gradio/state.py @@ -8,18 +8,17 @@ class StateHolder: state_dict: Dict[str, Any] = {} def __init__(self, id): - self.id = id + self.__id = id def __setattr__(self, name, value): - if name == "state": - StateHolder.state_dict[self.id] = value - else: + if name.startswith("_"): self.__dict__[name] = value - + else: + StateHolder.state_dict[(self.__id, name)] = value def __getattr__(self, name): - if name == "state": - return StateHolder.state_dict.get(self.id, None) - else: + if name.startswith("_"): return self.__dict__[name] + else: + return StateHolder.state_dict.get((self.__id, name), None)