Spaces:
Running
Running
import datetime | |
import enum | |
import streamlit as st | |
from core.names import find_unique_name | |
from core.state import Metadata | |
import mlcroissant as mlc | |
class RaiEvent(enum.Enum): | |
"""Event that triggers a Rai change.""" | |
RAI_DATA_COLLECTION = "RAI_DATA_COLLECTION" | |
RAI_DATA_COLLECTION_TYPE = "RAI_DATA_COLLECTION_TYPE" | |
RAI_DATA_COLLECTION_MISSING_DATA = "RAI_DATA_COLLECTION_MISSING_DATA" | |
RAI_DATA_COLLECTION_RAW = "RAI_DATA_COLLECTION_RAW" | |
RAI_DATA_COLLECTION_TIMEFRAME = "RAI_DATA_COLLECTION_TIMEFRAME" | |
RAI_DATA_IMPUTATION_PROTOCOL = "RAI_DATA_IMPUTATION_PROTOCOL" | |
RAI_DATA_PREPROCESSING_PROTOCOL = " RAI_DATA_PREPROCESSING_PROTOCOL" | |
RAI_DATA_MANIPULATION_PROTOCOL = "RAI_DATA_MANIPULATION_PROTOCOL" | |
RAI_DATA_ANNOTATION_PROTOCOL = "RAI_DATA_ANNOTATION_PROTOCOL" | |
RAI_DATA_ANNOTATION_PLATFORM = "RAI_DATA_ANNOTATION_PLATFORM" | |
RAI_DATA_ANNOTATION_ANALYSIS = "RAI_DATA_ANNOTATION_ANALYSIS" | |
RAI_DATA_ANNOTATION_PER_ITEM = "RAI_DATA_ANNOTATION_PERI_TEM" | |
RAI_DATA_ANNOTATION_DEMOGRAPHICS = "RAI_DATA_ANNOTATION_DEMOGRAPHICS" | |
RAI_DATA_ANNOTATION_TOOLS = "RAI_DATA_ANNOTATION_TOOLS" | |
RAI_DATA_USE_CASES = "RAI_DATA_USECASES" | |
RAI_DATA_BIAS = "RAI_DATA_BIAS" | |
RAI_DATA_LIMITATION = "RAI_DATA_LIMITATION" | |
RAI_DATA_SOCIAL_IMPACT = "RAI_DATA_SOCIAL_IMPACT" | |
RAI_SENSITIVE = "RAI_SENSITIVE" | |
RAI_MAINTENANCE = "RAI_MAINTENANCE" | |
def handle_rai_change(event: RaiEvent, metadata: Metadata, key: str, index: int = 0): | |
## If widget is 1-to-many we first get the index to proper update them | |
if event == RaiEvent.RAI_DATA_COLLECTION: | |
metadata.data_collection = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_COLLECTION_TYPE: | |
metadata.data_collection_type = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_COLLECTION_MISSING_DATA: | |
metadata.data_collection_missing_data = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_COLLECTION_RAW: | |
metadata.data_collection_raw_data = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_COLLECTION_TIMEFRAME: | |
# To do | |
raise NotImplementedError( | |
"Data collectiom timeframe range still not implemented" | |
) | |
pass | |
if event == RaiEvent.RAI_DATA_IMPUTATION_PROTOCOL: | |
metadata.data_imputation_protocol = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_PREPROCESSING_PROTOCOL: | |
if metadata.data_preprocessing_protocol: | |
metadata.data_preprocessing_protocol[index] = st.session_state[key] | |
else: | |
metadata.data_preprocessing_protocol = [] | |
metadata.data_preprocessing_protocol.append(st.session_state[key]) | |
if event == RaiEvent.RAI_DATA_MANIPULATION_PROTOCOL: | |
metadata.data_manipulation_protocol = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_ANNOTATION_PROTOCOL: | |
metadata.data_annotation_protocol = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_ANNOTATION_PLATFORM: | |
metadata.data_annotation_platform = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_ANNOTATION_ANALYSIS: | |
metadata.data_annotation_analysis = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_ANNOTATION_PER_ITEM: | |
metadata.annotation_per_item = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_ANNOTATION_DEMOGRAPHICS: | |
metadata.annotator_demographics = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_ANNOTATION_TOOLS: | |
metadata.machine_annotation_tools = st.session_state[key] | |
if event == RaiEvent.RAI_DATA_USE_CASES: | |
if metadata.data_use_cases: | |
metadata.data_use_cases[int(index)] = st.session_state[key] | |
else: | |
metadata.data_use_cases = [] | |
metadata.data_use_cases.append(st.session_state[key]) | |
if event == RaiEvent.RAI_DATA_BIAS: | |
if metadata.data_biases: | |
metadata.data_biases[int(index)] = st.session_state[key] | |
else: | |
metadata.data_biases = [] | |
metadata.data_biases.append(st.session_state[key]) | |
if event == RaiEvent.RAI_DATA_LIMITATION: | |
if metadata.data_limitations: | |
metadata.data_limitations[int(index)] = st.session_state[key] | |
else: | |
metadata.data_limitations = [] | |
metadata.data_limitations.append(st.session_state[key]) | |
if event == RaiEvent.RAI_DATA_SOCIAL_IMPACT: | |
metadata.data_social_impact = st.session_state[key] | |
if event == RaiEvent.RAI_SENSITIVE: | |
if metadata.personal_sensitive_information: | |
metadata.personal_sensitive_information[int(index)] = st.session_state[key] | |
else: | |
metadata.personal_sensitive_information = [] | |
metadata.personal_sensitive_information.append(st.session_state[key]) | |
if event == RaiEvent.RAI_MAINTENANCE: | |
metadata.data_release_maintenance_plan = st.session_state[key] | |
def get_widget_cadinality(key: str): | |
return key.split("_")[-1] | |