1{ buildPythonPackage 2, lib 3, isPy27 4, nixosTests 5, fetchPypi 6, alembic 7, aniso8601 8, Babel 9, blinker 10, cachetools 11, click 12, dnspython 13, email_validator 14, flask 15, flask-babel 16, flask-cors 17, flask_mail 18, flask_migrate 19, flask-restful 20, flask_sqlalchemy 21, flask-talisman 22, flask_wtf 23, debts 24, idna 25, itsdangerous 26, jinja2 27, Mako 28, markupsafe 29, python-dateutil 30, pytz 31, requests 32, six 33, sqlalchemy 34, sqlalchemy-utils 35, sqlalchemy-continuum 36, sqlalchemy-i18n 37, werkzeug 38, wtforms 39, psycopg2 # optional, for postgresql support 40, flask_testing 41, pytestCheckHook 42}: 43 44# ihatemoney is not really a library. It will only ever be imported 45# by the interpreter of uwsgi. So overrides for its depencies are fine. 46let 47 # sqlalchemy-continuum requires sqlalchemy < 1.4 48 pinned_sqlalchemy = sqlalchemy.overridePythonAttrs ( 49 old: rec { 50 pname = "SQLAlchemy"; 51 version = "1.3.24"; 52 53 src = fetchPypi { 54 inherit pname version; 55 sha256 = "06bmxzssc66cblk1hamskyv5q3xf1nh1py3vi6dka4lkpxy7gfzb"; 56 }; 57 } 58 ); 59in 60 61buildPythonPackage rec { 62 pname = "ihatemoney"; 63 version = "5.1.1"; 64 65 src = fetchPypi { 66 inherit pname version; 67 sha256 = "0gsqba9qbs1dpmfys8qpiahy4pbn4khcc6mgmdnhssmkjsb94sx6"; 68 }; 69 70 disabled = isPy27; 71 72 propagatedBuildInputs = [ 73 aniso8601 74 Babel 75 blinker 76 cachetools 77 click 78 dnspython 79 email_validator 80 flask 81 flask-babel 82 flask-cors 83 flask_mail 84 ( 85 flask_migrate.override { 86 flask_sqlalchemy = flask_sqlalchemy.override { 87 sqlalchemy = pinned_sqlalchemy; 88 }; 89 alembic = alembic.override { 90 sqlalchemy = pinned_sqlalchemy; 91 }; 92 } 93 ) 94 flask-restful 95 flask-talisman 96 flask_wtf 97 idna 98 itsdangerous 99 jinja2 100 Mako 101 markupsafe 102 python-dateutil 103 pytz 104 requests 105 six 106 ( 107 ( 108 sqlalchemy-continuum.override { 109 sqlalchemy = pinned_sqlalchemy; 110 sqlalchemy-utils = sqlalchemy-utils.override { 111 sqlalchemy = pinned_sqlalchemy; 112 }; 113 sqlalchemy-i18n = sqlalchemy-i18n.override { 114 sqlalchemy = pinned_sqlalchemy; 115 sqlalchemy-utils = sqlalchemy-utils.override { 116 sqlalchemy = pinned_sqlalchemy; 117 }; 118 }; 119 flask_sqlalchemy = flask_sqlalchemy.override { 120 sqlalchemy = pinned_sqlalchemy; 121 }; 122 } 123 ).overridePythonAttrs ( 124 old: { 125 doCheck = false; 126 } 127 ) 128 ) 129 werkzeug 130 wtforms 131 psycopg2 132 debts 133 ]; 134 135 # upstream performed the update without needing to patch the code 136 # the original patch does not apply, sadly 137 # https://github.com/spiral-project/ihatemoney/pull/912 138 postPatch = '' 139 substituteInPlace setup.cfg --replace "Flask-WTF>=0.14.3,<1" "Flask-WTF>=0.14.3,<2" 140 ''; 141 142 checkInputs = [ 143 flask_testing 144 pytestCheckHook 145 ]; 146 147 disabledTests = [ 148 "test_notifications" # requires running service. 149 "test_invite" # requires running service. 150 "test_invitation_email_failure" # requires dns resolution 151 ]; 152 153 passthru.tests = { 154 inherit (nixosTests.ihatemoney) ihatemoney-postgresql ihatemoney-sqlite; 155 }; 156 157 meta = with lib; { 158 homepage = "https://ihatemoney.org"; 159 description = "A simple shared budget manager web application"; 160 license = licenses.beerware; 161 maintainers = [ maintainers.symphorien ]; 162 }; 163}