1{ lib 2, buildPythonPackage 3, pythonOlder 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-talisman 21, flask-wtf 22, debts 23, idna 24, itsdangerous 25, jinja2 26, Mako 27, markupsafe 28, python-dateutil 29, pytz 30, requests 31, sqlalchemy 32, sqlalchemy-utils 33, sqlalchemy-continuum 34, sqlalchemy-i18n 35, werkzeug 36, wtforms 37, psycopg2 # optional, for postgresql support 38, flask-testing 39, pytestCheckHook 40}: 41 42buildPythonPackage rec { 43 pname = "ihatemoney"; 44 version = "5.2.0"; 45 format = "setuptools"; 46 47 disabled = pythonOlder "3.7"; 48 49 src = fetchPypi { 50 inherit pname version; 51 sha256 = "sha256-uQgZBbpqqbZYHpR+GwHWX0c7di2rVvEz0jPRY6+BkkQ="; 52 }; 53 54 propagatedBuildInputs = [ 55 aniso8601 56 babel 57 blinker 58 cachetools 59 click 60 debts 61 dnspython 62 email-validator 63 flask 64 flask_mail 65 flask_migrate 66 flask-wtf 67 flask-babel 68 flask-cors 69 flask-restful 70 flask-talisman 71 idna 72 itsdangerous 73 jinja2 74 Mako 75 markupsafe 76 psycopg2 77 python-dateutil 78 pytz 79 requests 80 sqlalchemy 81 sqlalchemy-continuum 82 werkzeug 83 wtforms 84 ]; 85 86 postPatch = '' 87 substituteInPlace setup.cfg \ 88 --replace "cachetools>=4.1,<5" "cachetools>=4.1" \ 89 --replace "SQLAlchemy>=1.3.0,<1.4" "SQLAlchemy>=1.3.0,<1.5" \ 90 --replace "WTForms>=2.3.1,<3.1" "WTForms" 91 ''; 92 93 checkInputs = [ 94 flask-testing 95 pytestCheckHook 96 ]; 97 98 pythonImportsCheck = [ 99 "ihatemoney" 100 ]; 101 102 disabledTests = [ 103 # Requires running service 104 "test_notifications" 105 "test_invite" 106 "test_access_other_projects" 107 "test_authentication" 108 "test_manage_bills" 109 "test_member_delete_method" 110 "test_membership" 111 "test_bill_add_remove_add" 112 "test_clear_ip_records" 113 "test_disable_clear_no_new_records" 114 "test_logs_for_common_actions" 115 # Requires DNS resolution 116 "test_invitation_email_failure" 117 ]; 118 119 passthru.tests = { 120 inherit (nixosTests.ihatemoney) ihatemoney-postgresql ihatemoney-sqlite; 121 }; 122 123 meta = with lib; { 124 description = "Shared budget manager web application"; 125 homepage = "https://ihatemoney.org"; 126 license = licenses.beerware; 127 maintainers = with maintainers; [ symphorien ]; 128 }; 129}