from dataclasses import dataclass from typing import List, Optional import pandas as pd @dataclass class AppState: audio_paths: List[str] = None possible_values: List[str] = None current_chapter: Optional[str] = None current_page: Optional[str] = None verses_data: Optional[pd.DataFrame] = None @classmethod def initialize(cls, dataset_name: str): from datasets import load_dataset data = load_dataset(dataset_name, split="train").to_pandas() data[["chapter", "page"]] = data["moore_source_url"].apply( lambda x: pd.Series(extract_audio_identifier(x)) ) return cls(verses_data=data)