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.8.0";
31 format = "setuptools";
32
33 disabled = pythonOlder "3.7";
34
35 src = fetchPypi {
36 pname = "Flask-AppBuilder";
37 inherit version;
38 hash = "sha256-MrkDcUCNgHzHnTM3DJenPXOP7HLTTthD/YBtupNprhM=";
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 ]
63 ++ apispec.optional-dependencies.yaml;
64
65 postPatch = ''
66 substituteInPlace setup.py \
67 --replace "apispec[yaml]>=3.3, <6" "apispec[yaml]" \
68 --replace "Flask-SQLAlchemy>=2.4, <3" "Flask-SQLAlchemy" \
69 --replace "Flask-Babel>=1, <3" "Flask-Babel" \
70 --replace "marshmallow-sqlalchemy>=0.22.0, <0.27.0" "marshmallow-sqlalchemy" \
71 --replace "prison>=0.2.1, <1.0.0" "prison"
72 '';
73
74 # Majority of tests require network access or mongo
75 doCheck = false;
76
77 pythonImportsCheck = [ "flask_appbuilder" ];
78
79 meta = with lib; {
80 description = "Application development framework, built on top of Flask";
81 homepage = "https://github.com/dpgaspar/flask-appbuilder/";
82 changelog = "https://github.com/dpgaspar/Flask-AppBuilder/blob/v${version}/CHANGELOG.rst";
83 license = licenses.bsd3;
84 maintainers = [ ];
85 # Support for flask-sqlalchemy >= 3.0 is missing, https://github.com/dpgaspar/Flask-AppBuilder/pull/1940
86 broken = true;
87 };
88}