1{ lib
2, buildPythonPackage
3, fetchPypi
4, apispec
5, colorama
6, click
7, email-validator
8, flask
9, flask-babel
10, flask-limiter
11, flask-login
12, flask-openid
13, flask-sqlalchemy
14, flask-wtf
15, flask-jwt-extended
16, jsonschema
17, marshmallow
18, marshmallow-enum
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.3.1";
31 format = "setuptools";
32
33 disabled = pythonOlder "3.7";
34
35 src = fetchPypi {
36 pname = "Flask-AppBuilder";
37 inherit version;
38 hash = "sha256-FP92HEGOsufHtaIySqDiScD3QUu3iQhWdtvkOecUvuI=";
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-enum
57 marshmallow-sqlalchemy
58 python-dateutil
59 prison
60 pyjwt
61 pyyaml
62 sqlalchemy-utils
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 = [
78 "flask_appbuilder"
79 ];
80
81 meta = with lib; {
82 description = "Application development framework, built on top of Flask";
83 homepage = "https://github.com/dpgaspar/flask-appbuilder/";
84 changelog = "https://github.com/dpgaspar/Flask-AppBuilder/blob/v${version}/CHANGELOG.rst";
85 license = licenses.bsd3;
86 maintainers = with maintainers; [ costrouc ];
87 # Support for flask-sqlalchemy >= 3.0 is missing, https://github.com/dpgaspar/Flask-AppBuilder/pull/1940
88 broken = true;
89 };
90}