import streamlit as st from persist import persist, load_widget_state #from pages.viewCardProgress import get_card from modelcards import CardData, ModelCard from markdownTagExtract import tag_checker,listToString,to_markdown #from specific_extraction import extract_it from modelcards import CardData, ModelCard from jinja2 import Environment, FileSystemLoader def is_float(value): try: float(value) return True except: return False ## Handles parsing jinja variable templates def parse_into_jinja_markdown(): env = Environment(loader=FileSystemLoader('.'), autoescape=True) temp = env.get_template(st.session_state.markdown_upload) return (temp.render(model_id = st.session_state["model_name"], the_model_description = st.session_state["model_description"],developers=st.session_state["Model_developers"],shared_by = st.session_state["shared_by"],license = st.session_state['license'], direct_use = st.session_state["Direct_Use"], downstream_use = st.session_state["Downstream_Use"],out_of_scope_use = st.session_state["Out-of-Scope_Use"], bias_risks_limitations = st.session_state["Model_Limits_n_Risks"], bias_recommendations = st.session_state['Recommendations'], model_examination = st.session_state['Model_examin'], hardware= st.session_state['Model_hardware'], hours_used = st.session_state['hours_used'], cloud_provider = st.session_state['Model_cloud_provider'], cloud_region = st.session_state['Model_cloud_region'], co2_emitted = st.session_state['Model_c02_emitted'], citation_bibtex= st.session_state["APA_citation"], citation_apa = st.session_state['bibtex_citation'], training_data = st.session_state['training_data'], preprocessing =st.session_state['preprocessing'], speeds_sizes_times = st.session_state['Speeds_Sizes_Times'], model_specs = st.session_state['Model_specs'], compute_infrastructure = st.session_state['compute_infrastructure'],software = st.session_state['technical_specs_software'], glossary = st.session_state['Glossary'], more_information = st.session_state['More_info'], model_card_authors = st.session_state['the_authors'], model_card_contact = st.session_state['Model_card_contact'], get_started_code =st.session_state["Model_how_to"] )) ################################################################ ################################################################ ################################################################ ################## Below CURRENTLY Deprecated ################## ################################################################ ################################################################ ################################################################ def get_card(): languages=st.session_state.languages or None license=st.session_state.license or None library_name = st.session_state.library_name or None tags= [x.strip() for x in st.session_state.tags.split(',') if x.strip()] tags.append("autogenerated-modelcard") datasets= [x.strip() for x in st.session_state.datasets.split(',') if x.strip()] or None metrics=st.session_state.metrics or None model_name = st.session_state.model_name or None model_description = st.session_state.model_description or None authors = st.session_state.Model_card_authors or None paper_url = st.session_state.paper_url or None github_url = st.session_state.github_url or None bibtex_citations = st.session_state.bibtex_citations or None emissions = float(st.session_state.Model_c02_emitted) if is_float(st.session_state.Model_c02_emitted) else None # BUG # Handle any warnings... do_warn = False warning_msg = "Warning: The following fields are required but have not been filled in: " if not languages: warning_msg += "\n- Languages" do_warn = True if not license: warning_msg += "\n- License" do_warn = True if do_warn: st.error(warning_msg) st.stop() # Generate and display card card_data = CardData( language=languages, license=license, library_name=library_name, tags=tags, datasets=datasets, metrics=metrics, ) if emissions: card_data.co2_eq_emissions = {'emissions': emissions} card = ModelCard.from_template( card_data, template_path='template.md', model_id=model_name, # Template kwargs: model_description=model_description, license=license, authors=authors, paper_url=paper_url, github_url=github_url, bibtex_citations=bibtex_citations, emissions=emissions ) return card def apply_view(page_state, not_code_pull,text_passed): not_important_section = True if st.session_state.legal_view == True: #user_view = 'legal_view' user_view_collapse={'Model_details_text','Model_uses','Model_Eval','Model_carbon','Model_cite', 'Glossary','Model_card_authors'} elif st.session_state.researcher_view == True: #user_view = 'researcher_view' user_view_collapse={'Model_details_text','Model_how_to','Model_training','Model_Limits_n_Risks', 'Glossary', 'Model_card_contact', 'Citation'} else: #user_view = 'beginner_technical_view' user_view_collapse={'Model_details_text','Model_how_to','Model_Eval','Model_uses', 'Glossary'} # Add Techical Spec for value in user_view_collapse: if value == page_state: not_important_section = False if not_important_section == True: #and st.session_state[user_view]: #st.markdown("here") text_return = out_text_out(not_code_pull,page_state,text_passed) out_text = "
Click to expand " +text_return + "
" return (out_text) #out_text = "
" + out_text + "
" else: text_return = out_text_out(not_code_pull,page_state,text_passed) out_text = text_return return (out_text) def out_text_out(not_code_pull,page_state,out_text): if not_code_pull == True: out_text = extract_it(page_state) return(out_text) else: out_text = out_text return(out_text) def writingPrompt(page_state, help_text, out_text): #st.session_state.check_box = False #extracted_how_to= tag_checker(markdown,start_tag,end_tag) #see_suggestion = column.checkbox("See Writing Prompt") st.session_state.check_box = True variable_output_prompt = st.text_area("Enter some text",height = 500, value =out_text, key=persist(out_text), help=help_text) st.session_state.page_state = persist(variable_output_prompt) #out_text = extract_it(page_state) #else: #st.session_state.check_box = True ##st.session_state.check_box = False #variable_output_prompt = st.text_area("Enter Text",value = ' ',key=persist(page_state),height = 500,help =help_text) return variable_output_prompt def extract_section(current_template, start_tag, end_tag): current_Card_markdown= current_template extracted_how_to= tag_checker(current_Card_markdown,start_tag,end_tag) out_text = ' '.join(extracted_how_to) return out_text def main(): #card.save('current_card.md') return