about summary refs log tree commit diff
path: root/pkgs/development/python-modules/flask-security-too/default.nix
blob: cf5e161f9ae310586ea8b25712b1e962483b8a2c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
{
  lib,
  buildPythonPackage,
  fetchPypi,
  pythonOlder,
  setuptools,

  # extras: babel
  babel,
  flask-babel,

  # extras: common
  bcrypt,
  bleach,
  flask-mailman,

  # extras: fsqla
  flask-sqlalchemy,
  sqlalchemy,
  sqlalchemy-utils,

  # extras: mfa
  cryptography,
  phonenumbers,
  webauthn,
  qrcode,

  # propagates
  email-validator,
  flask,
  flask-login,
  flask-principal,
  flask-wtf,
  passlib,
  importlib-resources,
  wtforms,

  # tests
  argon2-cffi,
  freezegun,
  mongoengine,
  mongomock,
  peewee,
  pony,
  pytestCheckHook,
  zxcvbn,
}:

buildPythonPackage rec {
  pname = "flask-security-too";
  version = "5.4.3";
  pyproject = true;

  disabled = pythonOlder "3.7";

  src = fetchPypi {
    pname = "Flask-Security-Too";
    inherit version;
    hash = "sha256-YrGTl+jXGo1MuNwNRAnMehSXmCVJAwOWlgruUYdV5YM=";
  };

   build-system = [ setuptools ];

  # flask-login>=0.6.2 not satisfied by version 0.7.0.dev0
  pythonRelaxDeps = [ "flask-login" ];

  dependencies = [
    email-validator
    flask
    flask-login
    flask-principal
    flask-wtf
    passlib
    importlib-resources
    wtforms
  ];

  passthru.optional-dependencies = {
    babel = [
      babel
      flask-babel
    ];
    common = [
      bcrypt
      bleach
      flask-mailman
    ];
    fsqla = [
      flask-sqlalchemy
      sqlalchemy
      sqlalchemy-utils
    ];
    mfa = [
      cryptography
      phonenumbers
      webauthn
      qrcode
    ];
  };

  nativeCheckInputs =
    [
      argon2-cffi
      freezegun
      mongoengine
      mongomock
      peewee
      pony
      pytestCheckHook
      zxcvbn
      freezegun
    ]
    ++ passthru.optional-dependencies.babel
    ++ passthru.optional-dependencies.common
    ++ passthru.optional-dependencies.fsqla
    ++ passthru.optional-dependencies.mfa;

  disabledTests = [
    # needs /etc/resolv.conf
    "test_login_email_whatever"
  ];

  pythonImportsCheck = [ "flask_security" ];

  meta = with lib; {
    changelog = "https://github.com/Flask-Middleware/flask-security/blob/${version}/CHANGES.rst";
    homepage = "https://github.com/Flask-Middleware/flask-security";
    description = "Simple security for Flask apps (fork)";
    license = licenses.mit;
    maintainers = with maintainers; [ gador ];
  };
}