Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import reveal_slides as rs | |
| import time | |
| from functions import * | |
| # Initialize session state variables if they don't exist | |
| if 'recap_period' not in st.session_state: | |
| st.session_state['recap_period'] = 'month' | |
| if 'repo_type' not in st.session_state: | |
| st.session_state['repo_type'] = 'public' | |
| if 'private_token' not in st.session_state: | |
| st.session_state['private_token'] = '' | |
| if 'branch_option' not in st.session_state: | |
| st.session_state['branch_option'] = 'all' | |
| if 'selected_branches' not in st.session_state: | |
| st.session_state['selected_branches'] = [] | |
| if 'selected_contributor' not in st.session_state: | |
| st.session_state['selected_contributor'] = '' | |
| if 'commits' not in st.session_state: | |
| st.session_state['commits'] = [] | |
| if 'sync' not in st.session_state: | |
| st.session_state['sync'] = False | |
| if 'Recap' not in st.session_state: | |
| st.session_state['Recap'] = False | |
| if 'Summaries' not in st.session_state: | |
| st.session_state['Summaries'] = [] | |
| if 'Summaries_state' not in st.session_state: | |
| st.session_state['Summaries_state'] = False | |
| markdown = r"""### Achievements | |
| - **Implementation of New Features**: Added dynamic configuration reloading and support for more PostgreSQL versions. | |
| - **Bug Fixes and Stability Improvements**: Resolved critical bugs for better stability and performance. | |
| - **Documentation and Community Engagement**: Enhanced documentation and engaged with the community for support. | |
| --- | |
| ### Skills Demonstrated | |
| **Technical Skills**: | |
| - Proficiency in Python and SQL. | |
| - Deep understanding of PostgreSQL and High Availability. | |
| - Experience with Git for code management. | |
| **Soft Skills**: | |
| - **Problem-Solving**: Effective troubleshooting of complex issues. | |
| - **Collaboration**: Strong teamwork and communication within the team and community. | |
| - **Continuous Learning**: Updated knowledge on PostgreSQL and High Availability. | |
| --- | |
| ### Areas for Improvement | |
| - **Automated Testing**: Greater contribution to automated tests could improve reliability. | |
| - **Performance Optimization**: Focus on optimization for better efficiency in large-scale deployments. | |
| - **Leadership in Design Discussions**: More active participation in discussions could showcase leadership and innovative thinking. | |
| """ | |
| if 'markdown' not in st.session_state: | |
| st.session_state['markdown'] = "False" | |
| # App title | |
| st.title("GitHub Contributors Recap") | |
| # Recap period selection | |
| st.session_state['recap_period'] = st.selectbox("Choose recap period", options=["month", "3 months", "6 months", "year"], index=0) | |
| # Repo type selection | |
| st.session_state['repo_type'] = st.selectbox("Choose repo type", options=["public", "private"], index=0) | |
| # If repo type is private, request for private token | |
| if st.session_state['repo_type'] == "private": | |
| st.session_state['private_token'] = st.text_input("Enter private token") | |
| # Repository selection | |
| st.session_state['reponame'] = st.text_input("reponame") | |
| if st.button("sync"): | |
| st.session_state['sync'] = True | |
| st.session_state['Recap'] = False | |
| st.session_state['contributors_list'] = get_contributors(st.session_state['reponame'], updated_token=st.session_state['private_token']) | |
| st.session_state['branches_list'] = get_repo_branches(st.session_state['reponame'], updated_token=st.session_state['private_token']) | |
| # Load button to fetch repo data (simulated with mock data) | |
| if st.session_state['sync']: | |
| if not st.session_state['Recap']: | |
| st.session_state['Summaries_state'] = False | |
| st.session_state['selected_branches'] = st.session_state['branches_list'] | |
| st.session_state['selected_contributor'] = [] # Reset selected contributor | |
| # Branch selection | |
| branch_option = st.radio("Select branches:", options=["all", "specific"]) | |
| if branch_option == "specific": | |
| st.session_state['selected_branches'] = st.multiselect("Select branches", options=st.session_state['branches_list'], default=st.session_state['branches_list']) | |
| # Contributor selection | |
| st.session_state['selected_contributor'] = st.selectbox("Select contributor name", options=st.session_state['contributors_list']) | |
| # Get recap button | |
| if st.button("Get Recap"): | |
| with st.spinner('fetching commits'): | |
| st.session_state['commits'] = get_contributor_commits(st.session_state['reponame'], st.session_state['selected_contributor'], st.session_state['recap_period'],st.session_state['selected_branches'], updated_token=st.session_state['private_token']) | |
| print(st.session_state['commits']) | |
| with st.spinner('AI summarizing commits'): | |
| st.session_state['summaries'] = process_commits_with_openai_summaries(st.session_state['commits']) | |
| st.session_state['markdown'] = generate_contributor_report_prompt(st.session_state['summaries']) | |
| print(st.session_state['commits']) | |
| print(st.session_state['markdown']) | |
| # st.session_state['markdown'] = get_markdown(st.session_state['commits']) | |
| # st.session_state['sync'] = False | |
| st.session_state['Recap'] = True | |
| # print(len(st.session_state['commits'])) | |
| else: | |
| st.session_state['Summaries_state'] = True | |
| if st.session_state['Recap']: | |
| # rs.slides(markdown, height=500) | |
| rs.slides(str(st.session_state['markdown']).replace("\\", "\\\\"), height=500) | |
| # Chat prompt (future feature) | |
| # st.text_input("Ask any question about the contributor:", on_change=None, key="chat_prompt") | |
| st.session_state["question"] = st.text_input("Ask any question about the contributor:", on_change=None, key="chat_prompt") | |
| if st.button("ask"): | |
| st.session_state["response"] = chat_complete(f"given the following summaries of this contributor's commits {str(st.session_state['summaries'])} answer the following question: {str(st.session_state['question'])}") | |
| st.write(str(st.session_state["response"])) | |
| # if st.session_state['Recap']: | |
| # # get_contributor_commits(repo_name, contributor, period, updated_token=None) | |
| # print(st.session_state['commits']) | |
| # print(len(st.session_state['commits'])) | |
| # if st.session_state['commits']: | |
| # st.text(str(len(st.session_state['commits'])), " commits fetched") | |
| # else: | |
| # with st.spinner('fetching commits'): | |
| # st.session_state['commits'] = get_contributor_commits(st.session_state['reponame'], st.session_state['selected_contributor'], st.session_state['recap_period'],st.session_state['selected_branches'], updated_token=st.session_state['private_token']) | |
| # print(st.session_state['commits']) | |
| # print(len(st.session_state['commits'])) | |
| # # st.text("fetching commits") | |
| # # Placeholder for GitHub markdown content | |
| # rs.slides(markdown, height=500) | |
| # # Chat prompt (future feature) | |
| # st.text_input("Ask any question about the contributor:", on_change=None, key="chat_prompt") | |
| # if st.button("ask"): | |
| # st.write("Feature coming soon!") | |