1{ 2 lib, 3 buildPythonPackage, 4 fetchPypi, 5 pythonOlder, 6 setuptools, 7 8 # extras: babel 9 babel, 10 flask-babel, 11 12 # extras: common 13 bcrypt, 14 bleach, 15 flask-mailman, 16 17 # extras: fsqla 18 flask-sqlalchemy, 19 sqlalchemy, 20 sqlalchemy-utils, 21 22 # extras: mfa 23 cryptography, 24 phonenumbers, 25 webauthn, 26 qrcode, 27 28 # propagates 29 email-validator, 30 flask, 31 flask-login, 32 flask-principal, 33 flask-wtf, 34 passlib, 35 importlib-resources, 36 wtforms, 37 38 # tests 39 argon2-cffi, 40 freezegun, 41 mongoengine, 42 mongomock, 43 peewee, 44 pony, 45 pytestCheckHook, 46 zxcvbn, 47}: 48 49buildPythonPackage rec { 50 pname = "flask-security-too"; 51 version = "5.4.3"; 52 pyproject = true; 53 54 disabled = pythonOlder "3.7"; 55 56 src = fetchPypi { 57 pname = "Flask-Security-Too"; 58 inherit version; 59 hash = "sha256-YrGTl+jXGo1MuNwNRAnMehSXmCVJAwOWlgruUYdV5YM="; 60 }; 61 62 nativeBuildInputs = [ setuptools ]; 63 64 propagatedBuildInputs = [ 65 email-validator 66 flask 67 flask-login 68 flask-principal 69 flask-wtf 70 passlib 71 importlib-resources 72 wtforms 73 ]; 74 75 passthru.optional-dependencies = { 76 babel = [ 77 babel 78 flask-babel 79 ]; 80 common = [ 81 bcrypt 82 bleach 83 flask-mailman 84 ]; 85 fsqla = [ 86 flask-sqlalchemy 87 sqlalchemy 88 sqlalchemy-utils 89 ]; 90 mfa = [ 91 cryptography 92 phonenumbers 93 webauthn 94 qrcode 95 ]; 96 }; 97 98 nativeCheckInputs = 99 [ 100 argon2-cffi 101 freezegun 102 mongoengine 103 mongomock 104 peewee 105 pony 106 pytestCheckHook 107 zxcvbn 108 freezegun 109 ] 110 ++ passthru.optional-dependencies.babel 111 ++ passthru.optional-dependencies.common 112 ++ passthru.optional-dependencies.fsqla 113 ++ passthru.optional-dependencies.mfa; 114 115 disabledTests = [ 116 # needs /etc/resolv.conf 117 "test_login_email_whatever" 118 ]; 119 120 pythonImportsCheck = [ "flask_security" ]; 121 122 meta = with lib; { 123 changelog = "https://github.com/Flask-Middleware/flask-security/blob/${version}/CHANGES.rst"; 124 homepage = "https://github.com/Flask-Middleware/flask-security"; 125 description = "Simple security for Flask apps (fork)"; 126 license = licenses.mit; 127 maintainers = with maintainers; [ gador ]; 128 }; 129}