nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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 libpass,
36 markupsafe,
37 passlib,
38 importlib-resources,
39 wtforms,
40
41 # tests
42 authlib,
43 flask-sqlalchemy-lite,
44 freezegun,
45 mongoengine,
46 mongomock,
47 peewee,
48 pony,
49 pytestCheckHook,
50 requests,
51 zxcvbn,
52}:
53
54buildPythonPackage rec {
55 pname = "flask-security";
56 version = "5.6.2";
57 pyproject = true;
58
59 disabled = pythonOlder "3.9";
60
61 src = fetchFromGitHub {
62 owner = "pallets-eco";
63 repo = "flask-security";
64 tag = version;
65 hash = "sha256-mEl98Yp4USKu+z636yAb5p5qPBzcdQraZ/XaPbDoGWU=";
66 };
67
68 build-system = [ flit-core ];
69
70 dependencies = [
71 email-validator
72 flask
73 flask-login
74 flask-principal
75 flask-wtf
76 markupsafe
77 (if pythonOlder "3.12" then passlib else libpass)
78 importlib-resources
79 wtforms
80 ];
81
82 optional-dependencies = {
83 babel = [
84 babel
85 flask-babel
86 ];
87 common = [
88 argon2-cffi
89 bcrypt
90 bleach
91 flask-mailman
92 ];
93 fsqla = [
94 flask-sqlalchemy
95 sqlalchemy
96 sqlalchemy-utils
97 ];
98 mfa = [
99 cryptography
100 phonenumberslite
101 webauthn
102 qrcode
103 ];
104 };
105
106 nativeCheckInputs =
107 [
108 authlib
109 flask-sqlalchemy-lite
110 freezegun
111 mongoengine
112 mongomock
113 peewee
114 pony
115 pytestCheckHook
116 requests
117 zxcvbn
118 ]
119 ++ optional-dependencies.babel
120 ++ optional-dependencies.common
121 ++ optional-dependencies.fsqla
122 ++ optional-dependencies.mfa;
123
124 preCheck = ''
125 pybabel compile --domain flask_security -d flask_security/translations
126 '';
127
128 disabledTests = [
129 # needs /etc/resolv.conf
130 "test_login_email_whatever"
131 ];
132
133 pythonImportsCheck = [ "flask_security" ];
134
135 meta = with lib; {
136 changelog = "https://github.com/pallets-eco/flask-security/blob/${src.tag}/CHANGES.rst";
137 homepage = "https://github.com/pallets-eco/flask-security";
138 description = "Quickly add security features to your Flask application";
139 license = licenses.mit;
140 maintainers = with maintainers; [ gador ];
141 };
142}