update storage to 0.1.5
Browse files- wrdler/game_storage.py +25 -5
wrdler/game_storage.py
CHANGED
|
@@ -12,7 +12,7 @@ Wrdler Specifications:
|
|
| 12 |
- No word overlaps
|
| 13 |
- 2 free letter guesses at game start
|
| 14 |
"""
|
| 15 |
-
__version__ = "0.1.
|
| 16 |
|
| 17 |
import json
|
| 18 |
import tempfile
|
|
@@ -66,7 +66,10 @@ def serialize_game_settings(
|
|
| 66 |
spacer: int = 0,
|
| 67 |
may_overlap: bool = False,
|
| 68 |
wordlist_source: Optional[str] = None,
|
| 69 |
-
challenge_id: Optional[str] = None
|
|
|
|
|
|
|
|
|
|
| 70 |
) -> Dict[str, Any]:
|
| 71 |
"""
|
| 72 |
Serialize game settings into a JSON-compatible dictionary.
|
|
@@ -90,6 +93,9 @@ def serialize_game_settings(
|
|
| 90 |
may_overlap: Whether words can overlap (always False in Wrdler)
|
| 91 |
wordlist_source: Source file name (e.g., "classic.txt")
|
| 92 |
challenge_id: Optional challenge ID (generated if not provided)
|
|
|
|
|
|
|
|
|
|
| 93 |
|
| 94 |
Returns:
|
| 95 |
dict: Serialized game settings with users array
|
|
@@ -132,12 +138,17 @@ def serialize_game_settings(
|
|
| 132 |
},
|
| 133 |
"users": [user_result],
|
| 134 |
"created_at": datetime.now(timezone.utc).isoformat(),
|
| 135 |
-
"version": __version__
|
|
|
|
|
|
|
| 136 |
}
|
| 137 |
|
| 138 |
if wordlist_source:
|
| 139 |
settings["wordlist_source"] = wordlist_source
|
| 140 |
|
|
|
|
|
|
|
|
|
|
| 141 |
return settings
|
| 142 |
|
| 143 |
|
|
@@ -267,7 +278,10 @@ def save_game_to_hf(
|
|
| 267 |
spacer: int = 0,
|
| 268 |
may_overlap: bool = False,
|
| 269 |
repo_id: Optional[str] = None,
|
| 270 |
-
wordlist_source: Optional[str] = None
|
|
|
|
|
|
|
|
|
|
| 271 |
) -> Tuple[str, Optional[str], Optional[str]]:
|
| 272 |
"""
|
| 273 |
Save game settings to HuggingFace repository and generate shareable URL.
|
|
@@ -297,6 +311,9 @@ def save_game_to_hf(
|
|
| 297 |
may_overlap: Whether words can overlap (always False in Wrdler)
|
| 298 |
repo_id: HF repository ID (uses HF_REPO_ID from env if None)
|
| 299 |
wordlist_source: Source wordlist file name (e.g., "classic.txt")
|
|
|
|
|
|
|
|
|
|
| 300 |
|
| 301 |
Returns:
|
| 302 |
tuple: (challenge_id, full_url, sid) where:
|
|
@@ -335,7 +352,10 @@ def save_game_to_hf(
|
|
| 335 |
spacer=spacer,
|
| 336 |
may_overlap=may_overlap,
|
| 337 |
challenge_id=challenge_id,
|
| 338 |
-
wordlist_source=wordlist_source
|
|
|
|
|
|
|
|
|
|
| 339 |
)
|
| 340 |
|
| 341 |
logger.debug(f"🆔 Generated Challenge ID: {challenge_id}")
|
|
|
|
| 12 |
- No word overlaps
|
| 13 |
- 2 free letter guesses at game start
|
| 14 |
"""
|
| 15 |
+
__version__ = "0.1.5"
|
| 16 |
|
| 17 |
import json
|
| 18 |
import tempfile
|
|
|
|
| 66 |
spacer: int = 0,
|
| 67 |
may_overlap: bool = False,
|
| 68 |
wordlist_source: Optional[str] = None,
|
| 69 |
+
challenge_id: Optional[str] = None,
|
| 70 |
+
game_title: Optional[str] = None,
|
| 71 |
+
show_incorrect_guesses: bool = True,
|
| 72 |
+
enable_free_letters: bool = True
|
| 73 |
) -> Dict[str, Any]:
|
| 74 |
"""
|
| 75 |
Serialize game settings into a JSON-compatible dictionary.
|
|
|
|
| 93 |
may_overlap: Whether words can overlap (always False in Wrdler)
|
| 94 |
wordlist_source: Source file name (e.g., "classic.txt")
|
| 95 |
challenge_id: Optional challenge ID (generated if not provided)
|
| 96 |
+
game_title: Game title (e.g., "Wrdler Gradio AI")
|
| 97 |
+
show_incorrect_guesses: Whether to show incorrect guesses
|
| 98 |
+
enable_free_letters: Whether free letters feature is enabled
|
| 99 |
|
| 100 |
Returns:
|
| 101 |
dict: Serialized game settings with users array
|
|
|
|
| 138 |
},
|
| 139 |
"users": [user_result],
|
| 140 |
"created_at": datetime.now(timezone.utc).isoformat(),
|
| 141 |
+
"version": __version__,
|
| 142 |
+
"show_incorrect_guesses": show_incorrect_guesses,
|
| 143 |
+
"enable_free_letters": enable_free_letters
|
| 144 |
}
|
| 145 |
|
| 146 |
if wordlist_source:
|
| 147 |
settings["wordlist_source"] = wordlist_source
|
| 148 |
|
| 149 |
+
if game_title:
|
| 150 |
+
settings["game_title"] = game_title
|
| 151 |
+
|
| 152 |
return settings
|
| 153 |
|
| 154 |
|
|
|
|
| 278 |
spacer: int = 0,
|
| 279 |
may_overlap: bool = False,
|
| 280 |
repo_id: Optional[str] = None,
|
| 281 |
+
wordlist_source: Optional[str] = None,
|
| 282 |
+
game_title: Optional[str] = None,
|
| 283 |
+
show_incorrect_guesses: bool = True,
|
| 284 |
+
enable_free_letters: bool = True
|
| 285 |
) -> Tuple[str, Optional[str], Optional[str]]:
|
| 286 |
"""
|
| 287 |
Save game settings to HuggingFace repository and generate shareable URL.
|
|
|
|
| 311 |
may_overlap: Whether words can overlap (always False in Wrdler)
|
| 312 |
repo_id: HF repository ID (uses HF_REPO_ID from env if None)
|
| 313 |
wordlist_source: Source wordlist file name (e.g., "classic.txt")
|
| 314 |
+
game_title: Game title (e.g., "Wrdler Gradio AI")
|
| 315 |
+
show_incorrect_guesses: Whether to show incorrect guesses
|
| 316 |
+
enable_free_letters: Whether free letters feature is enabled
|
| 317 |
|
| 318 |
Returns:
|
| 319 |
tuple: (challenge_id, full_url, sid) where:
|
|
|
|
| 352 |
spacer=spacer,
|
| 353 |
may_overlap=may_overlap,
|
| 354 |
challenge_id=challenge_id,
|
| 355 |
+
wordlist_source=wordlist_source,
|
| 356 |
+
game_title=game_title,
|
| 357 |
+
show_incorrect_guesses=show_incorrect_guesses,
|
| 358 |
+
enable_free_letters=enable_free_letters
|
| 359 |
)
|
| 360 |
|
| 361 |
logger.debug(f"🆔 Generated Challenge ID: {challenge_id}")
|