From ac0476d111f4f6d2740fa1c4ea46ca7f2cdc1d56 Mon Sep 17 00:00:00 2001 From: Pol Alvarez Date: Fri, 12 Jun 2026 18:10:17 +0200 Subject: [PATCH] adding suffixes to duplicated sanitized param names --- fastspec/oapi.py | 13 ++++++++++--- nbs/04_oapi.ipynb | 13 ++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/fastspec/oapi.py b/fastspec/oapi.py index 3a60a1e..6d708f1 100644 --- a/fastspec/oapi.py +++ b/fastspec/oapi.py @@ -32,11 +32,18 @@ def _sort_key(o): return 2 def sanitized_params(op): - "Mapping from original param names to valid Python identifiers." - res = {} - for p in op.route_params + op.query_params + op.body_params + op.file_params: + "Mapping from original param names to valid Python identifiers; exact names win collisions." + ps = op.route_params + op.query_params + op.body_params + op.file_params + def _sani(p): name = sanitize_param_name(p) if keyword.iskeyword(name): name += '_' + return name + res,used = {},{p for p in ps if _sani(p)==p} + for p in ps: + name = _sani(p) + if name!=p: + while name in used: name += '_' + used.add(name) res[p] = name return res diff --git a/nbs/04_oapi.ipynb b/nbs/04_oapi.ipynb index 4103d24..5873bf9 100644 --- a/nbs/04_oapi.ipynb +++ b/nbs/04_oapi.ipynb @@ -519,11 +519,18 @@ " return 2\n", "\n", "def sanitized_params(op):\n", - " \"Mapping from original param names to valid Python identifiers.\"\n", - " res = {}\n", - " for p in op.route_params + op.query_params + op.body_params + op.file_params:\n", + " \"Mapping from original param names to valid Python identifiers; exact names win collisions.\"\n", + " ps = op.route_params + op.query_params + op.body_params + op.file_params\n", + " def _sani(p):\n", " name = sanitize_param_name(p)\n", " if keyword.iskeyword(name): name += '_'\n", + " return name\n", + " res,used = {},{p for p in ps if _sani(p)==p}\n", + " for p in ps:\n", + " name = _sani(p)\n", + " if name!=p:\n", + " while name in used: name += '_'\n", + " used.add(name)\n", " res[p] = name\n", " return res\n", "\n",