pallets-eco / flask-security

Quick and simple security for Flask applications
MIT License
1.63k stars 513 forks source link

Please add explicit depedency on wtforms[email] #867

Closed mjpieters closed 3 years ago

mjpieters commented 3 years ago

Flask-Security makes use of the WTForms Email validator:

https://github.com/mattupstate/flask-security/blob/30594155fe59edf514b9c513206cad51ad5b9240/flask_security/forms.py#L60-L61

This is not actually available unless you install the email-validator package. If you don't you get a traceback:

$ flask users
Traceback (most recent call last):
  File "/.../bin/flask", line 8, in <module>
    sys.exit(main())
  File "/.../site-packages/flask/cli.py", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  File "/.../site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/.../site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/.../site-packages/click/core.py", line 1254, in invoke
    cmd_name, cmd, args = self.resolve_command(ctx, args)
  File "/.../site-packages/click/core.py", line 1297, in resolve_command
    cmd = self.get_command(ctx, cmd_name)
  File "/.../site-packages/flask/cli.py", line 542, in get_command
    rv = info.load_app().cli.get_command(ctx, name)
  File "/.../site-packages/flask/cli.py", line 388, in load_app
    app = locate_app(self, import_name, name)
  File "/.../site-packages/flask/cli.py", line 240, in locate_app
    __import__(module_name)
  File "/Users/mj/Development/Projects/Decca/web_app_w_flask/src/decca_lightning_dashboard/__init__.py", line 2, in <module>
    from .app import create_app
  File "/Users/mj/Development/Projects/Decca/web_app_w_flask/src/decca_lightning_dashboard/app.py", line 5, in <module>
    from flask_security import Security, SQLAlchemyUserDatastore
  File "/.../site-packages/flask_security/__init__.py", line 13, in <module>
    from .core import Security, RoleMixin, UserMixin, AnonymousUser, current_user
  File "/.../site-packages/flask_security/core.py", line 28, in <module>
    from .forms import ChangePasswordForm, ConfirmRegisterForm, \
  File "/.../site-packages/flask_security/forms.py", line 69, in <module>
    email_validator = Email(message='INVALID_EMAIL_ADDRESS')
  File "/.../site-packages/wtforms/validators.py", line 332, in __init__
    raise Exception("Install 'email_validator' for email validation support.")
Exception: Install 'email_validator' for email validation support.

This dependency is automatically installed if you use the wtforms[email] extra; please add this to the Flask-Security install_requires dependencies.

mjpieters commented 3 years ago

Sorry, missed the 'no longer maintained' banner. Please consider archiving the project.