1{ lib
2, buildPythonPackage
3, fetchPypi
4, apispec
5, colorama
6, click
7, email_validator
8, flask
9, flask-babel
10, flask_login
11, flask-openid
12, flask_sqlalchemy
13, flask_wtf
14, flask-jwt-extended
15, jsonschema
16, marshmallow
17, marshmallow-enum
18, marshmallow-sqlalchemy
19, python-dateutil
20, prison
21, pyjwt
22, pyyaml
23, sqlalchemy-utils
24}:
25
26buildPythonPackage rec {
27 pname = "flask-appbuilder";
28 version = "3.3.3";
29
30 src = fetchPypi {
31 pname = "Flask-AppBuilder";
32 inherit version;
33 sha256 = "sha256-yjb4dpcQt2se5GT+wodh4UC9LAF4JmYrdX89VIdkk0U=";
34 };
35
36 # See here: https://github.com/dpgaspar/Flask-AppBuilder/commit/7097a7b133f27c78d2b54d2a46e4a4c24478a066.patch
37 # https://github.com/dpgaspar/Flask-AppBuilder/pull/1610
38 # The patch from the PR doesn't apply cleanly so I edited it manually.
39 patches = [ ./upgrade-to-flask_jwt_extended-4.patch ];
40
41 propagatedBuildInputs = [
42 apispec
43 colorama
44 click
45 email_validator
46 flask
47 flask-babel
48 flask_login
49 flask-openid
50 flask_sqlalchemy
51 flask_wtf
52 flask-jwt-extended
53 jsonschema
54 marshmallow
55 marshmallow-enum
56 marshmallow-sqlalchemy
57 python-dateutil
58 prison
59 pyjwt
60 pyyaml
61 sqlalchemy-utils
62 ];
63
64 postPatch = ''
65 substituteInPlace setup.py \
66 --replace "apispec[yaml]>=3.3, <4" "apispec[yaml] >=3.3" \
67 --replace "Flask>=0.12, <2" "Flask" \
68 --replace "Flask-Login>=0.3, <0.5" "Flask-Login >=0.3, <0.6" \
69 --replace "Flask-Babel>=1, <2" "Flask-Babel >=1, <3" \
70 --replace "Flask-WTF>=0.14.2, <0.15.0" "Flask-WTF" \
71 --replace "marshmallow-sqlalchemy>=0.22.0, <0.24.0" "marshmallow-sqlalchemy" \
72 --replace "Flask-JWT-Extended>=3.18, <4" "Flask-JWT-Extended>=4.1.0" \
73 --replace "PyJWT>=1.7.1, <2.0.0" "PyJWT>=2.0.1" \
74 --replace "prison>=0.2.1, <1.0.0" "prison" \
75 --replace "SQLAlchemy<1.4.0" "SQLAlchemy"
76 '';
77
78 # Majority of tests require network access or mongo
79 doCheck = false;
80
81 pythonImportsCheck = [ "flask_appbuilder" ];
82
83 meta = with lib; {
84 description = "Simple and rapid application development framework, built on top of Flask";
85 homepage = "https://github.com/dpgaspar/flask-appbuilder/";
86 license = licenses.bsd3;
87 maintainers = with maintainers; [ costrouc ];
88 };
89}