1{ 2 lib, 3 buildPythonPackage, 4 fetchFromGitHub, 5 pythonOlder, 6 flit-core, 7 8 # extras: babel 9 babel, 10 flask-babel, 11 12 # extras: common 13 argon2-cffi, 14 bcrypt, 15 bleach, 16 flask-mailman, 17 18 # extras: fsqla 19 flask-sqlalchemy, 20 sqlalchemy, 21 sqlalchemy-utils, 22 23 # extras: mfa 24 cryptography, 25 phonenumberslite, 26 webauthn, 27 qrcode, 28 29 # propagates 30 email-validator, 31 flask, 32 flask-login, 33 flask-principal, 34 flask-wtf, 35 markupsafe, 36 passlib, 37 importlib-resources, 38 wtforms, 39 40 # tests 41 authlib, 42 flask-sqlalchemy-lite, 43 freezegun, 44 mongoengine, 45 mongomock, 46 peewee, 47 pony, 48 pytestCheckHook, 49 requests, 50 zxcvbn, 51}: 52 53buildPythonPackage rec { 54 pname = "flask-security"; 55 version = "5.6.1"; 56 pyproject = true; 57 58 disabled = pythonOlder "3.9"; 59 60 src = fetchFromGitHub { 61 owner = "pallets-eco"; 62 repo = "flask-security"; 63 tag = version; 64 hash = "sha256-sAO8wQd/YgPbi5+nQmkmmcTg7DJPYdUoT/EOMUpzr/M="; 65 }; 66 67 build-system = [ flit-core ]; 68 69 dependencies = [ 70 email-validator 71 flask 72 flask-login 73 flask-principal 74 flask-wtf 75 markupsafe 76 passlib 77 importlib-resources 78 wtforms 79 ]; 80 81 optional-dependencies = { 82 babel = [ 83 babel 84 flask-babel 85 ]; 86 common = [ 87 argon2-cffi 88 bcrypt 89 bleach 90 flask-mailman 91 ]; 92 fsqla = [ 93 flask-sqlalchemy 94 sqlalchemy 95 sqlalchemy-utils 96 ]; 97 mfa = [ 98 cryptography 99 phonenumberslite 100 webauthn 101 qrcode 102 ]; 103 }; 104 105 nativeCheckInputs = 106 [ 107 authlib 108 flask-sqlalchemy-lite 109 freezegun 110 mongoengine 111 mongomock 112 peewee 113 pony 114 pytestCheckHook 115 requests 116 zxcvbn 117 ] 118 ++ optional-dependencies.babel 119 ++ optional-dependencies.common 120 ++ optional-dependencies.fsqla 121 ++ optional-dependencies.mfa; 122 123 preCheck = '' 124 pybabel compile --domain flask_security -d flask_security/translations 125 ''; 126 127 disabledTests = [ 128 # needs /etc/resolv.conf 129 "test_login_email_whatever" 130 ]; 131 132 pythonImportsCheck = [ "flask_security" ]; 133 134 meta = with lib; { 135 changelog = "https://github.com/pallets-eco/flask-security/blob/${version}/CHANGES.rst"; 136 homepage = "https://github.com/pallets-eco/flask-security"; 137 description = "Quickly add security features to your Flask application"; 138 license = licenses.mit; 139 maintainers = with maintainers; [ gador ]; 140 }; 141}