|
131 | 131 | { |
132 | 132 | "data": { |
133 | 133 | "text/plain": [ |
134 | | - "datetime.datetime(2025, 8, 4, 14, 0)" |
| 134 | + "datetime.datetime(2025, 8, 22, 14, 0)" |
135 | 135 | ] |
136 | 136 | }, |
137 | 137 | "execution_count": null, |
|
774 | 774 | " except ValueError: raise HTTPException(404, req.url.path) from None\n", |
775 | 775 | "\n", |
776 | 776 | "async def _wrap_req(req, params):\n", |
777 | | - " return [await _find_p(req, arg, p) for arg,p in params.items()]" |
| 777 | + " return {arg:await _find_p(req, arg, p) for arg,p in params.items()}" |
778 | 778 | ] |
779 | 779 | }, |
780 | 780 | { |
|
787 | 787 | "name": "stdout", |
788 | 788 | "output_type": "stream", |
789 | 789 | "text": [ |
790 | | - "[<starlette.requests.Request object>, <starlette.applications.Starlette object>, '1', HttpHeader(k='value1', v='value3')]\n" |
| 790 | + "{'req': <starlette.requests.Request object>, 'this': <starlette.applications.Starlette object>, 'a': '1', 'b': HttpHeader(k='value1', v='value3')}\n" |
791 | 791 | ] |
792 | 792 | } |
793 | 793 | ], |
|
813 | 813 | "name": "stdout", |
814 | 814 | "output_type": "stream", |
815 | 815 | "text": [ |
816 | | - "[<starlette.requests.Request object>, <starlette.applications.Starlette object>, '1', HttpHeader(k='value1', v='value3')]\n" |
| 816 | + "{'req': <starlette.requests.Request object>, 'this': <starlette.applications.Starlette object>, 'a': '1', 'b': HttpHeader(k='value1', v='value3')}\n" |
817 | 817 | ] |
818 | 818 | } |
819 | 819 | ], |
|
855 | 855 | "name": "stdout", |
856 | 856 | "output_type": "stream", |
857 | 857 | "text": [ |
858 | | - "[<starlette.requests.Request object>, <starlette.applications.Starlette object>, '']\n" |
| 858 | + "{'req': <starlette.requests.Request object>, 'this': <starlette.applications.Starlette object>, 'a': ''}\n" |
859 | 859 | ] |
860 | 860 | } |
861 | 861 | ], |
|
955 | 955 | "outputs": [], |
956 | 956 | "source": [ |
957 | 957 | "#| export\n", |
958 | | - "async def _handle(f, args, **kwargs):\n", |
| 958 | + "async def _handle(f, *args, **kwargs):\n", |
959 | 959 | " return (await f(*args, **kwargs)) if is_async_callable(f) else await run_in_threadpool(f, *args, **kwargs)" |
960 | 960 | ] |
961 | 961 | }, |
|
1001 | 1001 | "\n", |
1002 | 1002 | "def _wrap_ws(ws, data, params):\n", |
1003 | 1003 | " hdrs = {k.lower().replace('-','_'):v for k,v in data.pop('HEADERS', {}).items()}\n", |
1004 | | - " return [_find_wsp(ws, data, hdrs, arg, p) for arg,p in params.items()]" |
| 1004 | + " return {arg:_find_wsp(ws, data, hdrs, arg, p) for arg,p in params.items()}" |
1005 | 1005 | ] |
1006 | 1006 | }, |
1007 | 1007 | { |
|
1014 | 1014 | "#| export\n", |
1015 | 1015 | "async def _send_ws(ws, resp):\n", |
1016 | 1016 | " if not resp: return\n", |
1017 | | - "# res = to_xml(resp, indent=fh_cfg.indent) if isinstance(resp, (list,tuple,FT)) or hasattr(resp, '__ft__') else resp\n", |
1018 | 1017 | " res = to_xml(resp, indent=fh_cfg.indent)\n", |
1019 | 1018 | " await ws.send_text(res)\n", |
1020 | 1019 | "\n", |
|
1023 | 1022 | "\n", |
1024 | 1023 | " async def _generic_handler(handler, ws, data=None):\n", |
1025 | 1024 | " wd = _wrap_ws(ws, loads(data) if data else {}, _params(handler))\n", |
1026 | | - " resp = await _handle(handler, wd)\n", |
| 1025 | + " resp = await _handle(handler, **wd)\n", |
1027 | 1026 | " if resp: await _send_ws(ws, resp)\n", |
1028 | 1027 | "\n", |
1029 | 1028 | " async def _connect(self, ws):\n", |
|
1403 | 1402 | "async def _wrap_call(f, req, params):\n", |
1404 | 1403 | " \"Wrap function call with request parameter injection\"\n", |
1405 | 1404 | " wreq = await _wrap_req(req, params)\n", |
1406 | | - " return await _handle(f, wreq)" |
| 1405 | + " return await _handle(f, **wreq)" |
1407 | 1406 | ] |
1408 | 1407 | }, |
1409 | 1408 | { |
|
1514 | 1513 | " async def _f(req, exc):\n", |
1515 | 1514 | " req.hdrs,req.ftrs,req.htmlkw,req.bodykw = map(deepcopy, (hdrs, ftrs, htmlkw, bodykw))\n", |
1516 | 1515 | " req.body_wrap = body_wrap\n", |
1517 | | - " res = await _handle(f, (req, exc))\n", |
| 1516 | + " res = await _handle(f, req, exc)\n", |
1518 | 1517 | " return _resp(req, res, status_code=status_code)\n", |
1519 | 1518 | " return _f" |
1520 | 1519 | ] |
|
2879 | 2878 | "name": "stdout", |
2880 | 2879 | "output_type": "stream", |
2881 | 2880 | "text": [ |
2882 | | - "Set to 2025-05-29 08:31:48.235262\n" |
| 2881 | + "Set to 2025-08-22 01:21:53.772537\n" |
2883 | 2882 | ] |
2884 | 2883 | }, |
2885 | 2884 | { |
2886 | 2885 | "data": { |
2887 | 2886 | "text/plain": [ |
2888 | | - "'Session time: 2025-05-29 08:31:48.235262'" |
| 2887 | + "'Session time: 2025-08-22 01:21:53.772537'" |
2889 | 2888 | ] |
2890 | 2889 | }, |
2891 | 2890 | "execution_count": null, |
|
3407 | 3406 | " <link rel=\"canonical\" href=\"http://testserver/setcookie\">\n", |
3408 | 3407 | " <meta charset=\"utf-8\">\n", |
3409 | 3408 | " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">\n", |
3410 | | - "<script src=\"https://cdn.jsdelivr.net/npm/[email protected].4/dist/htmx.min.js\"></script><script src=\"https://cdn.jsdelivr.net/gh/answerdotai/[email protected]/fasthtml.js\"></script><script src=\"https://cdn.jsdelivr.net/gh/answerdotai/surreal@main/surreal.js\"></script><script src=\"https://cdn.jsdelivr.net/gh/gnat/css-scope-inline@main/script.js\"></script><script>\n", |
| 3409 | + "<script src=\"https://cdn.jsdelivr.net/npm/[email protected].6/dist/htmx.min.js\"></script><script src=\"https://cdn.jsdelivr.net/gh/answerdotai/[email protected]/fasthtml.js\"></script><script src=\"https://cdn.jsdelivr.net/gh/answerdotai/surreal@main/surreal.js\"></script><script src=\"https://cdn.jsdelivr.net/gh/gnat/css-scope-inline@main/script.js\"></script><script>\n", |
3411 | 3410 | " function sendmsg() {\n", |
3412 | 3411 | " window.parent.postMessage({height: document.documentElement.offsetHeight}, '*');\n", |
3413 | 3412 | " }\n", |
|
3424 | 3423 | { |
3425 | 3424 | "data": { |
3426 | 3425 | "text/plain": [ |
3427 | | - "'Cookie was set at time 08:31:49.013668'" |
| 3426 | + "'Cookie was set at time 01:21:59.994611'" |
3428 | 3427 | ] |
3429 | 3428 | }, |
3430 | 3429 | "execution_count": null, |
|
0 commit comments