From b272f723954d06372ec856b6941c129cc38a0569 Mon Sep 17 00:00:00 2001 From: "ajaysi (aider)" Date: Sun, 6 Oct 2024 12:32:03 +0530 Subject: [PATCH] fix: Move widget commands outside cached function to avoid unexpected behavior --- alwrity.py | 14 +++++++++++++- lib/utils/api_key_manager.py | 21 +++++---------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/alwrity.py b/alwrity.py index ffe8dae2..30c5c8e1 100644 --- a/alwrity.py +++ b/alwrity.py @@ -218,7 +218,19 @@ def main(): setup_environment_paths() sidebar_configuration() - if check_api_keys(): + missing_keys = check_api_keys() + if missing_keys: + st.warning(f"API keys not found: {', '.join(missing_keys)}. Please provide them below. Restart the app after saving the keys.") + with st.form(key='api_keys_form'): + for key in missing_keys: + st.text_input(f"{key}:", type="password", key=key) + if st.form_submit_button("Save Keys"): + with open(".env", "a") as env_file: + for key in missing_keys: + key_value = st.session_state[key] + env_file.write(f"{key}={key_value}\n") + st.success("API keys saved successfully! Please restart the application.") + else: setup_tabs() modify_prompts_sidebar() diff --git a/lib/utils/api_key_manager.py b/lib/utils/api_key_manager.py index fac74521..5bd4acd2 100644 --- a/lib/utils/api_key_manager.py +++ b/lib/utils/api_key_manager.py @@ -5,28 +5,17 @@ from dotenv import load_dotenv import os import streamlit as st -@st.cache_data +import os +import streamlit as st + def check_api_keys(): - """Checks for API keys and prompts for input if not found.""" + """Checks for API keys and returns a list of missing keys.""" required_keys = ["GOOGLE_API_KEY", "OPENAI_API_KEY", "ANTHROPIC_API_KEY"] missing_keys = [] for key in required_keys: if not os.getenv(key): missing_keys.append(key) - - if missing_keys: - st.warning(f"API keys not found: {', '.join(missing_keys)}. Please provide them below. Restart the app after saving the keys.") - with st.form(key='api_keys_form'): - for key in missing_keys: - st.text_input(f"{key}:", type="password", key=key) - if st.form_submit_button("Save Keys"): - with open(".env", "a") as env_file: - for key in missing_keys: - key_value = st.session_state[key] - env_file.write(f"{key}={key_value}\n") - st.success("API keys saved successfully! Please restart the application.") - return False - return True + return missing_keys