Spaces:
				
			
			
	
			
			
		Sleeping
		
	
	
	
			
			
	
	
	
	
		
		
		Sleeping
		
	Upload app.py with huggingface_hub
Browse files
    	
        app.py
    CHANGED
    
    | @@ -1,44 +1,4 @@ | |
| 1 |  | 
| 2 | 
            -
            import gradio as gr
         | 
| 3 | 
            -
            from app import demo as app
         | 
| 4 | 
            -
            import os
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            _docs = {'WordleBoard': {'description': 'Interactive Wordle board component.', 'members': {'__init__': {'word_length': {'type': 'int', 'default': '5', 'description': None}, 'max_attempts': {'type': 'int', 'default': '6', 'description': None}, 'return': {'type': 'None', 'description': None}}, 'postprocess': {'value': {'type': 'typing.Union[\n    gradio_wordleboard.wordleboard.PublicWordleState,\n    typing.Dict,\n    str,\n    NoneType,\n][PublicWordleState, Dict, str, None]', 'description': None}}, 'preprocess': {'return': {'type': 'typing.Optional[typing.Dict][Dict, None]', 'description': "The preprocessed input data sent to the user's function in the backend."}, 'value': None}}, 'events': {}}, '__meta__': {'additional_interfaces': {'PublicWordleState': {'source': '@dataclass\nclass PublicWordleState:\n    board: List[WordleRow]\n    current_row: int\n    status: str\n    message: str\n    max_rows: int', 'refs': ['WordleRow']}, 'WordleRow': {'source': '@dataclass\nclass WordleRow:\n    letters: List[str] = field(\n        default_factory=lambda: [""] * 5\n    )\n    statuses: List[TileStatus] = field(\n        default_factory=lambda: ["empty"] * 5\n    )'}}, 'user_fn_refs': {'WordleBoard': ['PublicWordleState']}}}
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            abs_path = os.path.join(os.path.dirname(__file__), "css.css")
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            with gr.Blocks(
         | 
| 11 | 
            -
                css=abs_path,
         | 
| 12 | 
            -
                theme=gr.themes.Default(
         | 
| 13 | 
            -
                    font_mono=[
         | 
| 14 | 
            -
                        gr.themes.GoogleFont("Inconsolata"),
         | 
| 15 | 
            -
                        "monospace",
         | 
| 16 | 
            -
                    ],
         | 
| 17 | 
            -
                ),
         | 
| 18 | 
            -
            ) as demo:
         | 
| 19 | 
            -
                gr.Markdown(
         | 
| 20 | 
            -
            """
         | 
| 21 | 
            -
            # `gradio_wordleboard`
         | 
| 22 | 
            -
             | 
| 23 | 
            -
            <div style="display: flex; gap: 7px;">
         | 
| 24 | 
            -
            <img alt="Static Badge" src="https://img.shields.io/badge/version%20-%200.0.1%20-%20orange">  
         | 
| 25 | 
            -
            </div>
         | 
| 26 | 
            -
             | 
| 27 | 
            -
            A custom Gradio component that renders and plays the Wordle word game
         | 
| 28 | 
            -
            """, elem_classes=["md-custom"], header_links=True)
         | 
| 29 | 
            -
                app.render()
         | 
| 30 | 
            -
                gr.Markdown(
         | 
| 31 | 
            -
            """
         | 
| 32 | 
            -
            ## Installation
         | 
| 33 | 
            -
             | 
| 34 | 
            -
            ```bash
         | 
| 35 | 
            -
            pip install gradio_wordleboard
         | 
| 36 | 
            -
            ```
         | 
| 37 | 
            -
             | 
| 38 | 
            -
            ## Usage
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            ```python
         | 
| 41 | 
            -
             | 
| 42 | 
             
            from __future__ import annotations
         | 
| 43 |  | 
| 44 | 
             
            import asyncio
         | 
| @@ -159,14 +119,7 @@ async def inference_handler(api_key: str) -> AsyncIterator[str]: | |
| 159 | 
             
                    raise RuntimeError("HF_TOKEN or API_KEY environment variable must be set.")
         | 
| 160 |  | 
| 161 | 
             
                client = AsyncOpenAI(base_url=API_BASE_URL, api_key=api_key)
         | 
| 162 | 
            -
                env = TextArenaEnv. | 
| 163 | 
            -
                    DOCKER_IMAGE,
         | 
| 164 | 
            -
                    env_vars={
         | 
| 165 | 
            -
                        "TEXTARENA_ENV_ID": "Wordle-v0",
         | 
| 166 | 
            -
                        "TEXTARENA_NUM_PLAYERS": "1",
         | 
| 167 | 
            -
                    },
         | 
| 168 | 
            -
                    ports={8000: 8000},
         | 
| 169 | 
            -
                )
         | 
| 170 |  | 
| 171 | 
             
                try:
         | 
| 172 | 
             
                    async for result in _play_wordle(env, client):
         | 
| @@ -217,113 +170,3 @@ if __name__ == "__main__": | |
| 217 | 
             
                    raise SystemExit("HF_TOKEN (or API_KEY) must be set to query the model.")
         | 
| 218 |  | 
| 219 | 
             
                demo.launch()
         | 
| 220 | 
            -
             | 
| 221 | 
            -
            ```
         | 
| 222 | 
            -
            """, elem_classes=["md-custom"], header_links=True)
         | 
| 223 | 
            -
             | 
| 224 | 
            -
             | 
| 225 | 
            -
                gr.Markdown("""
         | 
| 226 | 
            -
            ## `WordleBoard`
         | 
| 227 | 
            -
             | 
| 228 | 
            -
            ### Initialization
         | 
| 229 | 
            -
            """, elem_classes=["md-custom"], header_links=True)
         | 
| 230 | 
            -
             | 
| 231 | 
            -
                gr.ParamViewer(value=_docs["WordleBoard"]["members"]["__init__"], linkify=['PublicWordleState', 'WordleRow'])
         | 
| 232 | 
            -
             | 
| 233 | 
            -
             | 
| 234 | 
            -
             | 
| 235 | 
            -
             | 
| 236 | 
            -
                gr.Markdown("""
         | 
| 237 | 
            -
             | 
| 238 | 
            -
            ### User function
         | 
| 239 | 
            -
             | 
| 240 | 
            -
            The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both).
         | 
| 241 | 
            -
             | 
| 242 | 
            -
            - When used as an Input, the component only impacts the input signature of the user function.
         | 
| 243 | 
            -
            - When used as an output, the component only impacts the return signature of the user function.
         | 
| 244 | 
            -
             | 
| 245 | 
            -
            The code snippet below is accurate in cases where the component is used as both an input and an output.
         | 
| 246 | 
            -
             | 
| 247 | 
            -
            - **As input:** Is passed, the preprocessed input data sent to the user's function in the backend.
         | 
| 248 | 
            -
             | 
| 249 | 
            -
             | 
| 250 | 
            -
             ```python
         | 
| 251 | 
            -
            def predict(
         | 
| 252 | 
            -
                value: typing.Optional[typing.Dict][Dict, None]
         | 
| 253 | 
            -
            ) -> typing.Union[
         | 
| 254 | 
            -
                gradio_wordleboard.wordleboard.PublicWordleState,
         | 
| 255 | 
            -
                typing.Dict,
         | 
| 256 | 
            -
                str,
         | 
| 257 | 
            -
                NoneType,
         | 
| 258 | 
            -
            ][PublicWordleState, Dict, str, None]:
         | 
| 259 | 
            -
                return value
         | 
| 260 | 
            -
            ```
         | 
| 261 | 
            -
            """, elem_classes=["md-custom", "WordleBoard-user-fn"], header_links=True)
         | 
| 262 | 
            -
             | 
| 263 | 
            -
             | 
| 264 | 
            -
             | 
| 265 | 
            -
             | 
| 266 | 
            -
                code_PublicWordleState = gr.Markdown("""
         | 
| 267 | 
            -
            ## `PublicWordleState`
         | 
| 268 | 
            -
            ```python
         | 
| 269 | 
            -
            @dataclass
         | 
| 270 | 
            -
            class PublicWordleState:
         | 
| 271 | 
            -
                board: List[WordleRow]
         | 
| 272 | 
            -
                current_row: int
         | 
| 273 | 
            -
                status: str
         | 
| 274 | 
            -
                message: str
         | 
| 275 | 
            -
                max_rows: int
         | 
| 276 | 
            -
            ```""", elem_classes=["md-custom", "PublicWordleState"], header_links=True)
         | 
| 277 | 
            -
             | 
| 278 | 
            -
                code_WordleRow = gr.Markdown("""
         | 
| 279 | 
            -
            ## `WordleRow`
         | 
| 280 | 
            -
            ```python
         | 
| 281 | 
            -
            @dataclass
         | 
| 282 | 
            -
            class WordleRow:
         | 
| 283 | 
            -
                letters: List[str] = field(
         | 
| 284 | 
            -
                    default_factory=lambda: [""] * 5
         | 
| 285 | 
            -
                )
         | 
| 286 | 
            -
                statuses: List[TileStatus] = field(
         | 
| 287 | 
            -
                    default_factory=lambda: ["empty"] * 5
         | 
| 288 | 
            -
                )
         | 
| 289 | 
            -
            ```""", elem_classes=["md-custom", "WordleRow"], header_links=True)
         | 
| 290 | 
            -
             | 
| 291 | 
            -
                demo.load(None, js=r"""function() {
         | 
| 292 | 
            -
                const refs = {
         | 
| 293 | 
            -
                        PublicWordleState: ['WordleRow'], 
         | 
| 294 | 
            -
                        WordleRow: [], };
         | 
| 295 | 
            -
                const user_fn_refs = {
         | 
| 296 | 
            -
                      WordleBoard: ['PublicWordleState'], };
         | 
| 297 | 
            -
                requestAnimationFrame(() => {
         | 
| 298 | 
            -
             | 
| 299 | 
            -
                    Object.entries(user_fn_refs).forEach(([key, refs]) => {
         | 
| 300 | 
            -
                        if (refs.length > 0) {
         | 
| 301 | 
            -
                            const el = document.querySelector(`.${key}-user-fn`);
         | 
| 302 | 
            -
                            if (!el) return;
         | 
| 303 | 
            -
                            refs.forEach(ref => {
         | 
| 304 | 
            -
                                el.innerHTML = el.innerHTML.replace(
         | 
| 305 | 
            -
                                    new RegExp("\\b"+ref+"\\b", "g"),
         | 
| 306 | 
            -
                                    `<a href="#h-${ref.toLowerCase()}">${ref}</a>`
         | 
| 307 | 
            -
                                );
         | 
| 308 | 
            -
                            })
         | 
| 309 | 
            -
                        }
         | 
| 310 | 
            -
                    })
         | 
| 311 | 
            -
             | 
| 312 | 
            -
                    Object.entries(refs).forEach(([key, refs]) => {
         | 
| 313 | 
            -
                        if (refs.length > 0) {
         | 
| 314 | 
            -
                            const el = document.querySelector(`.${key}`);
         | 
| 315 | 
            -
                            if (!el) return;
         | 
| 316 | 
            -
                            refs.forEach(ref => {
         | 
| 317 | 
            -
                                el.innerHTML = el.innerHTML.replace(
         | 
| 318 | 
            -
                                    new RegExp("\\b"+ref+"\\b", "g"),
         | 
| 319 | 
            -
                                    `<a href="#h-${ref.toLowerCase()}">${ref}</a>`
         | 
| 320 | 
            -
                                );
         | 
| 321 | 
            -
                            })
         | 
| 322 | 
            -
                        }
         | 
| 323 | 
            -
                    })
         | 
| 324 | 
            -
                })
         | 
| 325 | 
            -
            }
         | 
| 326 | 
            -
             | 
| 327 | 
            -
            """)
         | 
| 328 | 
            -
             | 
| 329 | 
            -
            demo.launch()
         | 
|  | |
| 1 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 2 | 
             
            from __future__ import annotations
         | 
| 3 |  | 
| 4 | 
             
            import asyncio
         | 
|  | |
| 119 | 
             
                    raise RuntimeError("HF_TOKEN or API_KEY environment variable must be set.")
         | 
| 120 |  | 
| 121 | 
             
                client = AsyncOpenAI(base_url=API_BASE_URL, api_key=api_key)
         | 
| 122 | 
            +
                env = TextArenaEnv(base_url="https://burtenshaw-textarena.hf.space")
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 123 |  | 
| 124 | 
             
                try:
         | 
| 125 | 
             
                    async for result in _play_wordle(env, client):
         | 
|  | |
| 170 | 
             
                    raise SystemExit("HF_TOKEN (or API_KEY) must be set to query the model.")
         | 
| 171 |  | 
| 172 | 
             
                demo.launch()
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
