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, pythonOlder
21, prison
22, pyjwt
23, pyyaml
24, sqlalchemy-utils
25}:
26
27buildPythonPackage rec {
28 pname = "flask-appbuilder";
29 version = "4.2.1";
30 format = "setuptools";
31
32 disabled = pythonOlder "3.7";
33
34 src = fetchPypi {
35 pname = "Flask-AppBuilder";
36 inherit version;
37 hash = "sha256-rZbu0Bif5pOa/zu6MCrbGJpkqUdYzWyVgp6tqRzGyIc=";
38 };
39
40 propagatedBuildInputs = [
41 apispec
42 colorama
43 click
44 email-validator
45 flask
46 flask-babel
47 flask-login
48 flask-openid
49 flask-sqlalchemy
50 flask-wtf
51 flask-jwt-extended
52 jsonschema
53 marshmallow
54 marshmallow-enum
55 marshmallow-sqlalchemy
56 python-dateutil
57 prison
58 pyjwt
59 pyyaml
60 sqlalchemy-utils
61 ] ++ apispec.optional-dependencies.yaml;
62
63 postPatch = ''
64 substituteInPlace setup.py \
65 --replace "apispec[yaml]>=3.3, <6" "apispec[yaml]" \
66 --replace "Flask-SQLAlchemy>=2.4, <3" "Flask-SQLAlchemy" \
67 --replace "Flask-Babel>=1, <3" "Flask-Babel" \
68 --replace "marshmallow-sqlalchemy>=0.22.0, <0.27.0" "marshmallow-sqlalchemy" \
69 --replace "prison>=0.2.1, <1.0.0" "prison"
70 '';
71
72 # Majority of tests require network access or mongo
73 doCheck = false;
74
75 pythonImportsCheck = [
76 "flask_appbuilder"
77 ];
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 = with maintainers; [ costrouc ];
85 # Support for flask-sqlalchemy >= 3.0 is missing, https://github.com/dpgaspar/Flask-AppBuilder/pull/1940
86 broken = true;
87 };
88}