Spaces:
Running
Running
Update 1. Minor - add module versions info
Browse files- README.md +1 -1
- wrdler/gradio_ui.py +13 -1
- wrdler/version_info.py +8 -3
- wrdler/word_loader_ai.py +3 -1
README.md
CHANGED
|
@@ -7,7 +7,7 @@ sdk: gradio
|
|
| 7 |
sdk_version: 5.50.0
|
| 8 |
python_version: 3.12.8
|
| 9 |
app_port: 7860
|
| 10 |
-
app_file:
|
| 11 |
suggested_hardware: cpu-basic
|
| 12 |
pinned: false
|
| 13 |
tags:
|
|
|
|
| 7 |
sdk_version: 5.50.0
|
| 8 |
python_version: 3.12.8
|
| 9 |
app_port: 7860
|
| 10 |
+
app_file: app.py
|
| 11 |
suggested_hardware: cpu-basic
|
| 12 |
pinned: false
|
| 13 |
tags:
|
wrdler/gradio_ui.py
CHANGED
|
@@ -37,6 +37,7 @@ from .game_storage import (
|
|
| 37 |
load_game_from_sid
|
| 38 |
)
|
| 39 |
from .word_loader_ai import generate_ai_words
|
|
|
|
| 40 |
|
| 41 |
# Version info
|
| 42 |
from . import __version__
|
|
@@ -1457,6 +1458,15 @@ def create_app() -> gr.Blocks:
|
|
| 1457 |
label="Music Volume",
|
| 1458 |
key="music-volume-slider"
|
| 1459 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1460 |
|
| 1461 |
# Audio players using HTML components for better compatibility
|
| 1462 |
audio_player = gr.HTML(
|
|
@@ -1872,6 +1882,8 @@ def create_app() -> gr.Blocks:
|
|
| 1872 |
outputs=[*common_outputs, music_player]
|
| 1873 |
)
|
| 1874 |
|
|
|
|
|
|
|
| 1875 |
return demo
|
| 1876 |
|
| 1877 |
def handle_share_challenge(username: str, state: Dict[str, Any]) -> Tuple[str, Optional[str], Dict[str, Any]]:
|
|
@@ -1950,7 +1962,7 @@ def handle_share_challenge(username: str, state: Dict[str, Any]) -> Tuple[str, O
|
|
| 1950 |
exists = any(e.get("username") == name and e.get("score") == score and e.get("time") == time_seconds for e in new_state["challenge_leaderboard"])
|
| 1951 |
if not exists:
|
| 1952 |
new_state["challenge_leaderboard"].append(lb_entry)
|
| 1953 |
-
status = f"Challenge created! Share with friends: {share_url}"
|
| 1954 |
return (status, share_url, new_state)
|
| 1955 |
else:
|
| 1956 |
return ("Challenge saved but short link creation failed.", full_url, state)
|
|
|
|
| 37 |
load_game_from_sid
|
| 38 |
)
|
| 39 |
from .word_loader_ai import generate_ai_words
|
| 40 |
+
from .version_info import versions_html
|
| 41 |
|
| 42 |
# Version info
|
| 43 |
from . import __version__
|
|
|
|
| 1458 |
label="Music Volume",
|
| 1459 |
key="music-volume-slider"
|
| 1460 |
)
|
| 1461 |
+
# Version info footer
|
| 1462 |
+
with gr.Row(
|
| 1463 |
+
elem_classes=["version-info-row"],
|
| 1464 |
+
visible=True
|
| 1465 |
+
):
|
| 1466 |
+
gr.HTML(
|
| 1467 |
+
value=versions_html(),
|
| 1468 |
+
elem_classes=["version-info"]
|
| 1469 |
+
)
|
| 1470 |
|
| 1471 |
# Audio players using HTML components for better compatibility
|
| 1472 |
audio_player = gr.HTML(
|
|
|
|
| 1882 |
outputs=[*common_outputs, music_player]
|
| 1883 |
)
|
| 1884 |
|
| 1885 |
+
|
| 1886 |
+
|
| 1887 |
return demo
|
| 1888 |
|
| 1889 |
def handle_share_challenge(username: str, state: Dict[str, Any]) -> Tuple[str, Optional[str], Dict[str, Any]]:
|
|
|
|
| 1962 |
exists = any(e.get("username") == name and e.get("score") == score and e.get("time") == time_seconds for e in new_state["challenge_leaderboard"])
|
| 1963 |
if not exists:
|
| 1964 |
new_state["challenge_leaderboard"].append(lb_entry)
|
| 1965 |
+
status = f"Challenge created! Share with friends: {share_url}"
|
| 1966 |
return (status, share_url, new_state)
|
| 1967 |
else:
|
| 1968 |
return ("Challenge saved but short link creation failed.", full_url, state)
|
wrdler/version_info.py
CHANGED
|
@@ -6,6 +6,11 @@ try:
|
|
| 6 |
except Exception: # pragma: no cover
|
| 7 |
st = None
|
| 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
def commit_hash() -> str:
|
| 11 |
"""Return current git commit hash or '<none>' if unavailable."""
|
|
@@ -27,12 +32,12 @@ def get_wrdler_version() -> str:
|
|
| 27 |
def versions_html() -> str:
|
| 28 |
"""Return a small HTML snippet with runtime and app environment info.
|
| 29 |
|
| 30 |
-
Includes: git commit, Python version,
|
| 31 |
"""
|
| 32 |
python_version = ".".join(str(x) for x in sys.version_info[:3])
|
| 33 |
full_python = sys.version.replace("\n", " ")
|
| 34 |
commit = commit_hash()
|
| 35 |
-
|
| 36 |
wrdler_version = get_wrdler_version()
|
| 37 |
|
| 38 |
html = f"""
|
|
@@ -43,7 +48,7 @@ def versions_html() -> str:
|
|
| 43 |
|
|
| 44 |
<span>python: <span title="{full_python}">{python_version}</span></span>
|
| 45 |
|
|
| 46 |
-
<span>
|
| 47 |
</div>
|
| 48 |
"""
|
| 49 |
return html
|
|
|
|
| 6 |
except Exception: # pragma: no cover
|
| 7 |
st = None
|
| 8 |
|
| 9 |
+
try:
|
| 10 |
+
import gradio as gr
|
| 11 |
+
except Exception: # pragma: no cover
|
| 12 |
+
gr = None
|
| 13 |
+
|
| 14 |
|
| 15 |
def commit_hash() -> str:
|
| 16 |
"""Return current git commit hash or '<none>' if unavailable."""
|
|
|
|
| 32 |
def versions_html() -> str:
|
| 33 |
"""Return a small HTML snippet with runtime and app environment info.
|
| 34 |
|
| 35 |
+
Includes: git commit, Python version, Gradio version, and Wrdler version.
|
| 36 |
"""
|
| 37 |
python_version = ".".join(str(x) for x in sys.version_info[:3])
|
| 38 |
full_python = sys.version.replace("\n", " ")
|
| 39 |
commit = commit_hash()
|
| 40 |
+
gradio_version = getattr(gr, "__version__", "not installed") if gr else "not installed"
|
| 41 |
wrdler_version = get_wrdler_version()
|
| 42 |
|
| 43 |
html = f"""
|
|
|
|
| 48 |
|
|
| 49 |
<span>python: <span title="{full_python}">{python_version}</span></span>
|
| 50 |
|
|
| 51 |
+
<span>gradio: {gradio_version}</span>
|
| 52 |
</div>
|
| 53 |
"""
|
| 54 |
return html
|
wrdler/word_loader_ai.py
CHANGED
|
@@ -805,7 +805,7 @@ try:
|
|
| 805 |
except Exception:
|
| 806 |
_GRADIO_AVAILABLE = False
|
| 807 |
|
| 808 |
-
if _GRADIO_AVAILABLE and not USE_HF_WORDS:
|
| 809 |
@gr.mcp_server_function(
|
| 810 |
name="generate_ai_words",
|
| 811 |
description="""
|
|
@@ -912,6 +912,8 @@ else:
|
|
| 912 |
logger.debug("ℹ️ Gradio not available; MCP function not registered")
|
| 913 |
elif USE_HF_WORDS:
|
| 914 |
logger.debug("ℹ️ USE_HF_WORDS=true; MCP function not registered (remote mode)")
|
|
|
|
|
|
|
| 915 |
|
| 916 |
hf_root = os.path.join(TMPDIR, "hf-cache")
|
| 917 |
os.makedirs(hf_root, exist_ok=True)
|
|
|
|
| 805 |
except Exception:
|
| 806 |
_GRADIO_AVAILABLE = False
|
| 807 |
|
| 808 |
+
if _GRADIO_AVAILABLE and not USE_HF_WORDS and hasattr(gr, 'mcp_server_function'):
|
| 809 |
@gr.mcp_server_function(
|
| 810 |
name="generate_ai_words",
|
| 811 |
description="""
|
|
|
|
| 912 |
logger.debug("ℹ️ Gradio not available; MCP function not registered")
|
| 913 |
elif USE_HF_WORDS:
|
| 914 |
logger.debug("ℹ️ USE_HF_WORDS=true; MCP function not registered (remote mode)")
|
| 915 |
+
else:
|
| 916 |
+
logger.debug("ℹ️ gr.mcp_server_function not available; MCP function not registered")
|
| 917 |
|
| 918 |
hf_root = os.path.join(TMPDIR, "hf-cache")
|
| 919 |
os.makedirs(hf_root, exist_ok=True)
|