1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 apispec,
6 colorama,
7 click,
8 email-validator,
9 flask,
10 flask-babel,
11 flask-limiter,
12 flask-login,
13 flask-openid,
14 flask-sqlalchemy,
15 flask-wtf,
16 flask-jwt-extended,
17 jsonschema,
18 marshmallow,
19 marshmallow-sqlalchemy,
20 python-dateutil,
21 pythonOlder,
22 prison,
23 pyjwt,
24 pyyaml,
25 sqlalchemy-utils,
26}:
27
28buildPythonPackage rec {
29 pname = "flask-appbuilder";
30 version = "4.6.1";
31 format = "setuptools";
32
33 disabled = pythonOlder "3.7";
34
35 src = fetchPypi {
36 pname = "Flask-AppBuilder";
37 inherit version;
38 hash = "sha256-Z1PZbSjiPb97ShMhkk6oyD9/AW/oAhDFZYkTErEZBmA=";
39 };
40
41 propagatedBuildInputs = [
42 apispec
43 colorama
44 click
45 email-validator
46 flask
47 flask-babel
48 flask-limiter
49 flask-login
50 flask-openid
51 flask-sqlalchemy
52 flask-wtf
53 flask-jwt-extended
54 jsonschema
55 marshmallow
56 marshmallow-sqlalchemy
57 python-dateutil
58 prison
59 pyjwt
60 pyyaml
61 sqlalchemy-utils
62 ] ++ apispec.optional-dependencies.yaml;
63
64 postPatch = ''
65 substituteInPlace setup.py \
66 --replace "apispec[yaml]>=3.3, <6" "apispec[yaml]" \
67 --replace "Flask-SQLAlchemy>=2.4, <3" "Flask-SQLAlchemy" \
68 --replace "Flask-Babel>=1, <3" "Flask-Babel" \
69 --replace "marshmallow-sqlalchemy>=0.22.0, <0.27.0" "marshmallow-sqlalchemy" \
70 --replace "prison>=0.2.1, <1.0.0" "prison"
71 '';
72
73 # Majority of tests require network access or mongo
74 doCheck = false;
75
76 pythonImportsCheck = [ "flask_appbuilder" ];
77
78 meta = with lib; {
79 description = "Application development framework, built on top of Flask";
80 homepage = "https://github.com/dpgaspar/flask-appbuilder/";
81 changelog = "https://github.com/dpgaspar/Flask-AppBuilder/blob/v${version}/CHANGELOG.rst";
82 license = licenses.bsd3;
83 maintainers = [ ];
84 # Support for flask-sqlalchemy >= 3.0 is missing, https://github.com/dpgaspar/Flask-AppBuilder/pull/1940
85 broken = true;
86 };
87}