Spaces:
Runtime error
Runtime error
Download utils.py from bingoweb/quick-bot-680: direct link, hf CLI and curl.
- Browser
- Download file 2.43 kB
-
https://huggingface.co/spaces/bingoweb/quick-bot-680/resolve/main/utils.py
- Command line
-
hf download hf://spaces/bingoweb/quick-bot-680/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/bingoweb/quick-bot-680/resolve/main/utils.py
2.43 kB
| import numpy as np | |
| import gradio as gr | |
| from gradio.events import SelectData | |
| # --- Data Handling Functions --- | |
| def initial_state(): | |
| """Returns the initial list of todo tasks.""" | |
| # Structure: List of tuples [(description: str, completed: bool)] | |
| return [ | |
| ("Buy groceries (milk, eggs)", False), | |
| ("Read Gradio documentation", True), | |
| ("Plan weekend trip", False), | |
| ] | |
| def format_todos(todos: list[tuple[str, bool]]) -> list[list[str]]: | |
| """Converts the internal todo list structure into a format suitable for gr.Dataframe.""" | |
| if not todos: | |
| return [["No tasks yet.", ""]] | |
| formatted = [] | |
| for desc, completed in todos: | |
| status = "✅ Done" if completed else "⬜ Pending" | |
| formatted.append([desc, status]) | |
| return formatted | |
| def add_task(todos: list[tuple[str, bool]], new_task: str): | |
| """Adds a new task to the todo list.""" | |
| if new_task and new_task.strip(): | |
| todos.append((new_task.strip(), False)) | |
| # Return updated state, updated dataframe display, and cleared input box | |
| return todos, format_todos(todos), gr.Textbox(value="") | |
| def _get_selected_index(todos: list[tuple[str, bool]], evt: SelectData) -> int | None: | |
| """Helper to safely retrieve the selected index from event data.""" | |
| if not todos or evt.value[0] == "No tasks yet.": | |
| return None | |
| # Assuming the selection is always a single row (index[0] gives row index) | |
| if evt.index is None or len(evt.index) < 1: | |
| return None | |
| index = evt.index[0] | |
| return index if 0 <= index < len(todos) else None | |
| def toggle_complete(todos: list[tuple[str, bool]], evt: SelectData): | |
| """Toggles the completion status of the selected task.""" | |
| index = _get_selected_index(todos, evt) | |
| if index is not None: | |
| desc, completed = todos[index] | |
| todos[index] = (desc, not completed) | |
| # Return updated state and updated dataframe display (with selection cleared) | |
| return todos, gr.Dataframe(value=format_todos(todos), selected_index=None) | |
| def delete_task(todos: list[tuple[str, bool]], evt: SelectData): | |
| """Deletes the selected task.""" | |
| index = _get_selected_index(todos, evt) | |
| if index is not None: | |
| del todos[index] | |
| # Return updated state and updated dataframe display (with selection cleared) | |
| return todos, gr.Dataframe(value=format_todos(todos), selected_index=None) |