import pandas as pd import streamlit as st import csv import io import matplotlib.pyplot as plt import numpy as np from pre import preprocess_csv, load_data, fill_missing_data def double_main(uploaded_file1,uploaded_file2): # st.title('Single CSV Analyzer') if uploaded_file1 is not None and uploaded_file2 is not None: # Process the csv files with header filet_1 = uploaded_file1.read() processed_output_1 = preprocess_csv(filet_1) processed_file_1 = io.StringIO(processed_output_1.getvalue()) data_1 = load_data(processed_file_1) filet_2 = uploaded_file2.read() processed_output_2 = preprocess_csv(filet_2) processed_file_2 = io.StringIO(processed_output_2.getvalue()) data_2 = load_data(processed_file_2) data_1 = fill_missing_data(data_1, 4, 0) data_1['Start datetime'] = pd.to_datetime(data_1['Start datetime'], errors='coerce') data_1['End datetime'] = pd.to_datetime(data_1['End datetime'], errors='coerce') data_1['Time spent'] = (data_1['End datetime'] - data_1['Start datetime']).dt.total_seconds() data_2 = fill_missing_data(data_2, 4, 0) data_2['Start datetime'] = pd.to_datetime(data_2['Start datetime'], errors='coerce') data_2['End datetime'] = pd.to_datetime(data_2['End datetime'], errors='coerce') data_2['Time spent'] = (data_2['End datetime'] - data_2['Start datetime']).dt.total_seconds() # Determine which DataFrame is older if data_1['Start datetime'].min() < data_2['Start datetime'].min(): older_df = data_1 newer_df = data_2 else: older_df = data_2 newer_df = data_1 older_df['Time spent'] = pd.to_datetime(older_df['Time spent'], unit='s').dt.strftime('%M:%S') newer_df['Time spent'] = pd.to_datetime(newer_df['Time spent'], unit='s').dt.strftime('%M:%S') older_datetime = older_df['Start datetime'].min() newer_datetime = newer_df['Start datetime'].min() st.write(f"The older csv started on {older_datetime}") st.write(f"The newer csv started on {newer_datetime}") # Merge dataframes on 'scenario name' merged_df = pd.merge(older_df, newer_df, on=['Functional area', 'Scenario name'], suffixes=('_old', '_new')) # Filter scenarios that were failing and are still failing fail_to_fail_scenarios = merged_df[(merged_df['Status_old'] == 'FAILED') & (merged_df['Status_new'] == 'FAILED')] st.markdown("### Consistent Failures(previously failing, now failing)") fail_count = len(fail_to_fail_scenarios) st.write(f"Failing scenarios Count: {fail_count}") # Select columns for display columns_to_display = ['Functional area', 'Scenario name', 'Error message_old', 'Error message_new'] # Display the selected columns using st.write st.write(fail_to_fail_scenarios[columns_to_display]) # Filter scenarios that were passing and now failing pass_to_fail_scenarios = merged_df[(merged_df['Status_old'] == 'PASSED') & (merged_df['Status_new'] == 'FAILED')] st.markdown("### New Failures(previously passing, now failing)") pass_fail_count = len(pass_to_fail_scenarios) st.write(f"Failing scenarios Count: {pass_fail_count}") # Select columns for display columns_to_display = ['Functional area', 'Scenario name', 'Error message_new', 'Time spent_old','Time spent_new',] # Display the selected columns using st.write st.write(pass_to_fail_scenarios[columns_to_display]) # Filter scenarios that were failing and now passing fail_to_pass_scenarios = merged_df[(merged_df['Status_old'] == 'FAILED') & (merged_df['Status_new'] == 'PASSED')] # Display filtered dataframe in Streamlit app st.markdown("### New Passes(previously failing, now passing)") pass_count = len(fail_to_pass_scenarios) st.write(f"Passing scenarios Count: {pass_count}") # Select columns for display columns_to_display = ['Functional area', 'Scenario name', 'Error message_old', 'Time spent_old','Time spent_new',] # Display the selected columns using st.write st.write(fail_to_pass_scenarios[columns_to_display]) pass