Spaces:
Build error
Build error
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
from src.Surveyor import Surveyor | |
import contextlib | |
from functools import wraps | |
from io import StringIO | |
def capture_output(func): | |
"""Capture output from running a function and write using streamlit.""" | |
def wrapper(*args, **kwargs): | |
# Redirect output to string buffers | |
stdout, stderr = StringIO(), StringIO() | |
try: | |
with contextlib.redirect_stdout(stdout), contextlib.redirect_stderr(stderr): | |
return func(*args, **kwargs) | |
except Exception as err: | |
st.write(f"Failure while executing: {err}") | |
finally: | |
if _stdout := stdout.getvalue(): | |
st.write("Execution stdout:") | |
st.code(_stdout) | |
if _stderr := stderr.getvalue(): | |
st.write("Execution stderr:") | |
st.code(_stderr) | |
return wrapper | |
def run_survey(surveyor, research_keywords, max_search, num_papers): | |
survey_fn = capture_output(surveyor.survey) | |
zip_file_name, survey_file_name = survey_fn(research_keywords, | |
max_search=max_search, | |
num_papers=num_papers | |
) | |
with open(str(zip_file_name), "rb") as file: | |
btn = st.download_button( | |
label="Download extracted topic-clustered-highlights, images and tables as zip", | |
data=file, | |
file_name=str(zip_file_name) | |
) | |
with open(str(survey_file_name), "rb") as file: | |
btn = st.download_button( | |
label="Download detailed generated survey file", | |
data=file, | |
file_name=str(survey_file_name) | |
) | |
for line in file.readlines(): | |
st.write(line) | |
def survey_space(surveyor): | |
st.sidebar.title('Auto-Research V0.1 - Automated Survey generation from research keywords') | |
form = st.sidebar.form(key='survey_form') | |
research_keywords = form.text_input("What would you like to research in today?") | |
max_search = form.number_input("num_papers_to_search", help="maximium number of papers to glance through - defaults to 20", | |
min_value=1, max_value=60, value=10, step=1, key='max_search') | |
num_papers = form.number_input("num_papers_to_select", help="maximium number of papers to select and analyse - defaults to 8", | |
min_value=1, max_value=25, value=2, step=1, key='num_papers') | |
submit = form.form_submit_button('Submit') | |
if submit: | |
st.write("hello") | |
run_survey(surveyor, research_keywords, max_search, num_papers) | |
if __name__ == '__main__': | |
global surveyor | |
surveyor_obj = Surveyor() | |
survey_space(surveyor_obj) | |