Spaces:
Runtime error
Runtime error
| """Fetch upload and convert to list1/list2.""" | |
| # pylint: disable=too-many-locals, too-many-branches, too-many-statements | |
| import streamlit as st | |
| from logzero import logger | |
| from streamlit import session_state as state | |
| def fetch_upload(): | |
| """Fetch upload and convert to list1/list2.""" | |
| src_fileio = b"" | |
| tgt_fileio = b"" | |
| with st.form(key="upload_in_form"): | |
| _ = st.expander(f"{state.ns.beetype}: Pick two files", expanded=True) | |
| with _: | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| src_fileio = st.file_uploader( | |
| "Choose source file (utf8 txt)", | |
| type=[ | |
| "txt", | |
| ], | |
| key="src_text", | |
| # accept_multiple_files=True, | |
| # accept_multiple_files=False, | |
| ) | |
| with col2: | |
| tgt_fileio = st.file_uploader( | |
| "Choose target file (utf8 txt)", | |
| type=[ | |
| "txt", | |
| ], | |
| key="tgt_text", | |
| # accept_multiple_files=True, | |
| ) | |
| submitted = st.form_submit_button("Submit") | |
| # logger.debug(" len(src_fileio): %s", len(src_fileio)) | |
| # logger.debug(" len(tgt_fileio): %s", len(tgt_fileio)) | |
| filename1 = "" | |
| if src_fileio: | |
| logger.debug(" type(src_fileio): %s", type(src_fileio)) | |
| # for st.file_uploade accept_multiple_files=True | |
| if isinstance(src_fileio, list): | |
| logger.debug(" len(src_fileio): %s", len(src_fileio)) | |
| filenames = [] | |
| try: | |
| filenames = [elm.name for elm in src_fileio] # type: ignore | |
| except Exception as exc: | |
| logger.error(exc) | |
| logger.debug("src_fileio names: *%s*", filenames) | |
| # state.ns.src_fileio = src_fileio | |
| state.ns.src_file = src_fileio[-1].getvalue().decode() | |
| state.ns.src_filename = src_fileio[-1].name | |
| else: | |
| logger.debug("src_fileio.name: [%s]", src_fileio.name) | |
| filenames = [src_fileio.name] | |
| logger.debug("src_fileio names: %s", filenames) | |
| # state.ns.src_fileio = src_fileio | |
| state.ns.src_file = src_fileio.getvalue().decode() | |
| state.ns.src_filename = src_fileio.name | |
| filename1 = state.ns.src_filename | |
| filename2 = "" | |
| if tgt_fileio: | |
| if isinstance(tgt_fileio, list): | |
| logger.warning("not set to handle multiple files") | |
| logger.warning("set accept_multiple_files=False in the meantime") | |
| else: | |
| state.ns.tgt_file = tgt_fileio.getvalue().decode() | |
| state.ns.tgt_filename = tgt_fileio.name | |
| filename2 = tgt_fileio.name | |
| # proceed when Submit is clicked | |
| msg1 = "" | |
| if filename1: | |
| msg1 += f" file1 {filename1}" | |
| msg2 = "" | |
| if filename2: | |
| msg2 += f" file2 {filename2}" | |
| glue = "" | |
| if filename1 and filename2: | |
| glue = ", " | |
| upload_placeholder = st.empty() | |
| prefix = f" Upload submitted: {msg1}{glue}{msg2}" | |
| upload_placeholder.write(prefix) | |
| # st.write(f" Submitted upload: {msg1}{glue}{msg2}") | |
| if not submitted: | |
| return None | |
| if not (filename1 or filename2): | |
| # st.write("| no file uploaded") | |
| upload_placeholder.write(f"{prefix} no file uploaded") | |
| return None | |
| if not filename1: | |
| # st.write("| file1 not ready") | |
| upload_placeholder.write(f"{prefix}, file1 not ready") | |
| return None | |
| if not filename2: | |
| # st.write("| file2 not ready") | |
| upload_placeholder.write(f"{prefix}, file2 not ready") | |
| return None | |
| try: | |
| _ = state.ns.src_file.splitlines() | |
| list1 = [elm.strip() for elm in _ if elm.strip()] | |
| _ = state.ns.tgt_file.splitlines() | |
| list2 = [elm.strip() for elm in _ if elm.strip()] | |
| except Exception as exc: | |
| logger.error(exc) | |
| list1 = [""] | |
| list2 = [""] | |
| logger.debug("len(list1): %s, len(list2): %s", len(list1), len(list2)) | |
| state.ns.list1 = list1[:] | |
| state.ns.list2 = list2[:] | |
| state.ns.updated = True | |
| logger.debug("state.ns.updated: %s", state.ns.updated) | |
| return None | |