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()