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}