Maharshi Gor
First Working commit
193db9d
raw
history blame
999 Bytes
from typing import Any, Literal
import gradio as gr
DIRECTIONS = Literal["up", "down"]
def make_state(value: Any) -> gr.State:
"""Make a state from a value."""
if isinstance(value, gr.State):
return value
else:
return gr.State(value)
# List utilities
def move_item(items: list, position: int, direction: DIRECTIONS):
"""Move an item up or down in a list."""
if not isinstance(items, list):
raise ValueError("items must be a list")
if not isinstance(position, int) or not (0 <= position < len(items)):
raise ValueError("position must be a valid index in the list")
if direction not in ["up", "down"]:
raise ValueError("direction must be 'up' or 'down'")
if direction == "up" and position > 0:
items[position], items[position - 1] = items[position - 1], items[position]
elif direction == "down" and position < len(items) - 1:
items[position], items[position + 1] = items[position + 1], items[position]