Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: RequestSchema(strict=True) raises TypeError #126

Open
ikhlestov opened this issue May 15, 2022 · 0 comments
Open

docs: RequestSchema(strict=True) raises TypeError #126

ikhlestov opened this issue May 15, 2022 · 0 comments

Comments

@ikhlestov
Copy link

If you try to run first example from docs, you'll get an TypeError exception:

Traceback (most recent call last):
  File "app.py", line 19, in <module>
    @request_schema(RequestSchema(strict=True))
TypeError: __init__() got an unexpected keyword argument 'strict'

It looks that after marshmallow version >= 3.0 release Schema always strict.

Should we freeze marshmallow version and update docs? Or there should be some kind of another solution.

Steps to reproduce

Environment

Python 3.8.12

aiohttp==3.8.1
aiohttp-apispec==2.2.3
aiosignal==1.2.0
apispec==3.3.2
async-timeout==4.0.2
attrs==21.4.0
charset-normalizer==2.0.12
frozenlist==1.3.0
idna==3.3
Jinja2==3.1.2
MarkupSafe==2.1.1
marshmallow==3.15.0
multidict==6.0.2
packaging==21.3
pyparsing==3.0.9
webargs==5.5.3
yarl==1.7.2

Code

This is the first snipped from the README

from aiohttp_apispec import (
    docs,
    request_schema,
    setup_aiohttp_apispec,
)
from aiohttp import web
from marshmallow import Schema, fields


class RequestSchema(Schema):
    id = fields.Int()
    name = fields.Str(description="name")

@docs(
    tags=["mytag"],
    summary="Test method summary",
    description="Test method description",
)
@request_schema(RequestSchema(strict=True))
async def index(request):
    return web.json_response({"msg": "done", "data": {}})


app = web.Application()
app.router.add_post("/v1/test", index)

# init docs with all parameters, usual for ApiSpec
setup_aiohttp_apispec(
    app=app, 
    title="My Documentation", 
    version="v1",
    url="/api/docs/swagger.json",
    swagger_path="/api/docs",
)

# Now we can find spec on 'http://localhost:8080/api/docs/swagger.json'
# and docs on 'http://localhost:8080/api/docs'
web.run_app(app)

Save it to app.py file and start with python app.py command

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant