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}