import json import requests from PIL import Image import streamlit as st from Login import auth_page st.set_page_config( page_title="Welcome", page_icon="👋", layout="wide", initial_sidebar_state="expanded", menu_items={"About": "Built by @HemanthSai7 and @MayureshAgashe2107 with Streamlit"}, ) st.markdown("## :rainbow[Welcome to Techdocs: Where Code Meets Clarity!] 🚀") def logout(): del st.session_state["access_token"] del st.session_state["refresh_token"] del st.session_state["username"] def instructions(): with st.expander("📝Instructions",expanded=True): st.markdown( """ ##### 1. Generate an `API Key` from the sidebar to get started. ##### 2. Paste the `API Key` in the field provided. ##### 3. Paste your code function in the input code box. ##### 4. Click on the `Generate Documentation` 🤖 button to generate the documentation. ##### 5. The generated documentation will be displayed in the section below. """ ) with st.sidebar: if 'username' not in st.session_state: with st.expander("🧑Account Details",expanded=True): st.header("Please Login or Signup to continue") else: with st.expander("🔑 TECHDOCS-API-KEY",expanded=True): st.warning("Generating a new API Key will invalidate the previous one from all your projects. Do you wish to continue?") if st.button("Generate API KEY"): with st.spinner("Generating API Key..."): try: base_url = "http://localhost:8000" headers={"accept":"application/json", "Authorization": f"Bearer {st.session_state.access_token}"} response = requests.put(url=base_url + "/auth/regenerate_api_key", headers=headers, data=json.dumps({"username":st.session_state.username})) if (response.status_code!=200): raise Exception("API Key Generation Failed") st.info("Please save the API KEY as it will be shown only once.") st.code(response.json()["api_key"],"bash") st.success("API Key Generated Successfully") except Exception as e: st.error(e) with st.expander("🧑Account Details",expanded=True): st.info(f"Welcome, {st.session_state.username}! 😄") if st.button("Logout 👋"): logout() st.rerun() def code_page(): base_url = 'http://localhost:8000' def query_post(url, headers, data=None, params=None): response = requests.post(url, data=data, headers=headers, params=params) return response headers={"accept":"application/json"} instructions() st.warning("Hi there! Paste your TECHDOCS-API-KEY in the field below to get started!\n\n", icon="🚨") API_KEY = st.text_input(label="Enter your API key", label_visibility="hidden",placeholder="Enter your API key", type="password") code_input = st.text_area("Code Input", height=300, help="Paste your code here") comment_placeholder = st.empty() if st.button("🤖 Generate Documentation"): if code_input: headers['Authorization'] = f"Bearer {st.session_state.access_token}" response = query_post(base_url + '/api/inference', headers=headers, params={'code_block':code_input, 'api_key':API_KEY}) docstr = response.json()["docstr"] comment_placeholder.subheader("Generated Documentation:") comment_placeholder.markdown(f"
{docstr}
", unsafe_allow_html=True) # Scroll to the comment section comment_placeholder.empty() comment_placeholder.markdown(f"
{docstr}
", unsafe_allow_html=True) else: st.warning("Please enter some code.") if 'access_token' not in st.session_state: st.session_state.runpage = auth_page else: st.session_state.runpage = code_page st.session_state.runpage()