diff --git a/fasthtml/core.py b/fasthtml/core.py index ebf03fd2..c1b7a798 100644 --- a/fasthtml/core.py +++ b/fasthtml/core.py @@ -276,8 +276,8 @@ def __init__(self, f, skip=None): self.f,self.skip = f,skip or [] def __repr__(self): return f'Beforeware({self.f}, skip={self.skip})' # %% ../nbs/api/00_core.ipynb #78c3c357 -async def _handle(f, *args, **kwargs): - return (await f(*args, **kwargs)) if is_async_callable(f) else await run_in_threadpool(f, *args, **kwargs) +async def _handle(_f, *args, **kwargs): + return (await _f(*args, **kwargs)) if is_async_callable(_f) else await run_in_threadpool(_f, *args, **kwargs) # %% ../nbs/api/00_core.ipynb #ad0f0e87 async def _wrap_ws(ws, data, params): diff --git a/nbs/api/00_core.ipynb b/nbs/api/00_core.ipynb index 33df5c20..c451aa7b 100644 --- a/nbs/api/00_core.ipynb +++ b/nbs/api/00_core.ipynb @@ -1132,8 +1132,8 @@ "outputs": [], "source": [ "#| export\n", - "async def _handle(f, *args, **kwargs):\n", - " return (await f(*args, **kwargs)) if is_async_callable(f) else await run_in_threadpool(f, *args, **kwargs)" + "async def _handle(_f, *args, **kwargs):\n", + " return (await _f(*args, **kwargs)) if is_async_callable(_f) else await run_in_threadpool(_f, *args, **kwargs)" ] }, { @@ -4865,4 +4865,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/tests/test_core.py b/tests/test_core.py new file mode 100644 index 00000000..14a16eb7 --- /dev/null +++ b/tests/test_core.py @@ -0,0 +1,16 @@ +from fasthtml.common import * +from starlette.testclient import TestClient + +app, rt = fast_app() +cli = TestClient(app) + +@rt("/test-f") +def post(f: str): + return Titled("Success", P(f"Value: {f}")) + +def test_argument_f_collision(): + res = cli.post('/test-f', data={'f': 'hello'}) + assert res.status_code == 200 + assert 'Value: hello' in res.text + +test_argument_f_collision()