Can't parse top-level lists
Closed this issue · 1 comments
Greg-NetDuma commented
@parse_params
is unable to parse top-level lists, like:
@parse_params(path=List[str])
@parse_params(path=List[Person])
Stacktrace:
Traceback (most recent call last):
File "/home/gr3q/Repos/maintenance-webserver/venv/lib/python3.9/site-packages/sanic/app.py", line 914, in handle_request
response = await response
File "/home/gr3q/Repos/maintenance-webserver/venv/lib/python3.9/site-packages/sanic_dantic/sanic_function_dantic.py", line 35, in decorated_function
model_obj = DanticModelObj(header=header, path=path, query=query, form=form, body=body)
File "/home/gr3q/Repos/maintenance-webserver/venv/lib/python3.9/site-packages/sanic_dantic/basic_definition.py", line 30, in __init__
basemodel_check = [BaseModel in [_ for _ in getmro(model)] for model in self.items.values() if model]
File "/home/gr3q/Repos/maintenance-webserver/venv/lib/python3.9/site-packages/sanic_dantic/basic_definition.py", line 30, in <listcomp>
basemodel_check = [BaseModel in [_ for _ in getmro(model)] for model in self.items.values() if model]
File "/usr/lib/python3.9/inspect.py", line 490, in getmro
return cls.__mro__
File "/usr/lib/python3.9/typing.py", line 688, in __getattr__
raise AttributeError(attr)
AttributeError: __mro__
miss85246 commented
well, you need define a new class which is inheritance from sanic_dantic.BaseModel. like this:
from sanic import Sanic
from sanic.response import json
from sanic_dantic import parse_params, BaseModel
class Person(BaseModel):
name: str
age: int
app = Sanic("SanicDanticExample")
@app.route('/example')
@parse_params(path=Person)
async def path_param_examples(request, params):
print( params.ctx.name, params.ctx.age)
return json({"message": f"hello {params.name} are you {params.age} years old ?"})