simple-text-analyzer / debug_session_state.py
egumasa's picture
initialize app
a543e33
#!/usr/bin/env python3
import streamlit as st
import pandas as pd
import tempfile
import os
from pathlib import Path
def debug_session_state():
"""Debug function to check session state contents."""
st.write("## Debug Session State")
# Check if reference_lists exists
if 'reference_lists' in st.session_state:
st.write("**reference_lists found in session state**")
for key, value in st.session_state.reference_lists.items():
st.write(f"### {key}")
st.write(f"Type: {type(value)}")
if isinstance(value, dict):
for sub_key, sub_value in value.items():
st.write(f" - {sub_key}: {type(sub_value)}")
if isinstance(sub_value, dict):
if sub_value.get('is_custom_config'):
st.write(f" * Custom config:")
st.write(f" - file_path: {sub_value.get('file_path')}")
st.write(f" - word_column: {sub_value.get('word_column')}")
st.write(f" - freq_column: {sub_value.get('freq_column')}")
st.write(f" - delimiter: {sub_value.get('delimiter')}")
else:
st.write(f" * Regular dict with {len(sub_value)} entries")
else:
st.write(f" * Value: {sub_value}")
else:
st.write(f" Value: {value}")
else:
st.write("**No reference_lists in session state**")
# Check uploaded_file_configs
if 'uploaded_file_configs' in st.session_state:
st.write("**uploaded_file_configs found**")
for key, value in st.session_state.uploaded_file_configs.items():
st.write(f"### {key}")
st.write(f" - columns: {value.get('columns', [])}")
st.write(f" - base_name: {value.get('base_name', 'N/A')}")
st.write(f" - file_path: {value.get('file_path', 'N/A')}")
else:
st.write("**No uploaded_file_configs in session state**")
def clear_session_state():
"""Clear session state for debugging."""
if st.button("Clear Session State"):
for key in list(st.session_state.keys()):
if key in ['reference_lists', 'uploaded_file_configs']:
del st.session_state[key]
st.success("Session state cleared")
st.experimental_rerun()
def test_multi_config():
"""Test multi-configuration setup."""
st.write("## Test Multi-Configuration")
# Create test data
test_data = """Type,POS,Headword,Rank,Freq,Range,NormFreq
the,,,1,60056,500,59001.119
of,,,2,30331,500,29798.237
and,,,3,28973,500,28464.091"""
# Save to temp file
temp_dir = tempfile.mkdtemp()
test_file = os.path.join(temp_dir, "test_multi.csv")
with open(test_file, 'w') as f:
f.write(test_data)
# Create configurations
configs = [
{
'index_name': 'test_freq',
'word_column': 'Type',
'score_column': 'Freq'
},
{
'index_name': 'test_range',
'word_column': 'Type',
'score_column': 'Range'
}
]
if st.button("Create Test Configurations"):
# Initialize reference_lists
if 'reference_lists' not in st.session_state:
st.session_state.reference_lists = {}
# Add configurations
for config in configs:
custom_data = {
'file_path': test_file,
'word_column': config['word_column'],
'freq_column': config['score_column'],
'delimiter': ',',
'is_custom_config': True
}
st.session_state.reference_lists[config['index_name']] = {
'token': custom_data
}
st.success("Test configurations created")
st.experimental_rerun()
# Main app
def main():
st.title("Debug Multi-Index Configuration")
debug_session_state()
clear_session_state()
test_multi_config()
if __name__ == "__main__":
main()