wtforms / flask-wtf

Simple integration of Flask and WTForms, including CSRF, file upload and Recaptcha integration.
https://flask-wtf.readthedocs.io
BSD 3-Clause "New" or "Revised" License
1.46k stars 310 forks source link

validate() got an unexpected keyword argument 'extra_validators' #552

Closed marcdexet-cnrs closed 1 year ago

marcdexet-cnrs commented 1 year ago

Dear all

I get the error validate() got an unexpected keyword argument 'extra_validators' with the 1.1.1 version, but if I downgrade to 1.0.1, it's ok. (version 1.1.0 give me the famous ParametersForm.validate() takes 1 positional argument but 2 were given) It's a production application we're using for 2 years, it's not a fresh one.

Trace is the following :

ERROR:flaskapp.app:Exception on /parameters/ [POST]
Traceback (most recent call last):
  File "C:\Applications\<...>\.venv\lib\site-packages\flask\app.py", line 2525, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Applications\<...>\.venv\lib\site-packages\flask\app.py", line 1822, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Applications\<...>\.venv\lib\site-packages\flask\app.py", line 1820, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Applications\<...>\.venv\lib\site-packages\flask\app.py", line 1796, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "C:\Applications\<...>\flaskapp\app.py", line 127, in parameters
    if form.validate_on_submit():
  File "C:\Applications\<...>\.venv\lib\site-packages\flask_wtf\form.py", line 86, in validate_on_submit
    return self.is_submitted() and self.validate(extra_validators=extra_validators)
TypeError: ParametersForm.validate() got an unexpected keyword argument 'extra_validators'

Environment:

lliendo commented 1 year ago

Hi everyone!

I'm experiencing a similar issue with Flask-WTF==1.1.1:

Traceback (most recent call last):
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask/app.py", line 2548, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask/app.py", line 2528, in wsgi_app
    response = self.handle_exception(e)
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask/app.py", line 2525, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask/app.py", line 1822, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask/app.py", line 1820, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask/app.py", line 1796, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask_security/decorators.py", line 230, in wrapper
    return f(*args, **kwargs)
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask_security/views.py", line 77, in login
    if form.validate_on_submit():
  File "/home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask_wtf/form.py", line 86, in validate_on_submit
    return self.is_submitted() and self.validate(extra_validators=extra_validators)
TypeError: validate() got an unexpected keyword argument 'extra_validators'

Then if I open: /home/lucas/.pyenv/versions/3.8.15/envs/relog3p/lib/python3.8/site-packages/flask_wtf/form.py and at line 86 leave:

return self.is_submitted() and self.validate()

Things work as expected. I'm experiencing this error while trying to access a protected URL with the Flask-Security plugin but as the trace shows is not directly related to it.

Downgrading as recommended by @marcdexet-cnrs seems to fix the issue. These are the flask related packages installed in my virtual environment that produce the above trace:

Flask==2.2.2
Flask-BabelEx==0.9.4
Flask-Bcrypt==1.0.1
Flask-JWT-Extended==4.4.3
Flask-Login==0.6.2
Flask-Mail==0.9.1
Flask-Principal==0.4.0
Flask-Security==3.0.0
flask-shell-ipython==0.4.1
Flask-SQLAlchemy==2.5.1
Flask-WTF==1.1.1

Thanks, Lucas.

davidism commented 1 year ago

Duplicate of #547