File size: 921 Bytes
19b1388 e3818e9 19b1388 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import streamlit as st
# A hack to "clear" the previous result when submitting a new prompt. This avoids
# the "previous run's text is grayed-out but visible during rerun" Streamlit behavior.
class DirtyState:
NOT_DIRTY = "NOT_DIRTY"
DIRTY = "DIRTY"
UNHANDLED_SUBMIT = "UNHANDLED_SUBMIT"
def get_dirty_state() -> str:
return st.session_state.get("dirty_state", DirtyState.NOT_DIRTY)
def set_dirty_state(state: str) -> None:
st.session_state["dirty_state"] = state
def with_clear_container(submit_clicked: bool) -> bool:
if get_dirty_state() == DirtyState.DIRTY:
if submit_clicked:
set_dirty_state(DirtyState.UNHANDLED_SUBMIT)
st.rerun()
else:
set_dirty_state(DirtyState.NOT_DIRTY)
if submit_clicked or get_dirty_state() == DirtyState.UNHANDLED_SUBMIT:
set_dirty_state(DirtyState.DIRTY)
return True
return False
|