{ lib, stdenv, bison, buildPythonPackage, click, fetchFromGitHub, fetchpatch2, flex, gnupg, meson, meson-python, pytestCheckHook, python-dateutil, regex, }: buildPythonPackage rec { version = "3.2.0"; pname = "beancount"; pyproject = true; src = fetchFromGitHub { owner = "beancount"; repo = "beancount"; tag = version; hash = "sha256-XWTgaBvB4/SONL44afvprZwJUVrkoda5XLGNxad0kec="; }; patches = [ (fetchpatch2 { name = "accept-date-range-error-message-from-py3.14"; url = "https://salsa.debian.org/python-team/packages/beancount/-/raw/debian/sid/debian/patches/0003-Accept-date-range-error-message-from-py3.14.patch"; hash = "sha256-wqMTGSi4Gn5VADjV4MjZhFNWB3ThUhxvLYK7sentScQ="; }) (fetchpatch2 { name = "skip-ref-count-test-with-py3.14"; url = "https://salsa.debian.org/python-team/packages/beancount/-/raw/debian/sid/debian/patches/0004-Skip-refcount-test-with-py3.14.patch"; hash = "sha256-6P9xe15WBGaWpVYB2HfGfFHLMMmGkfnDwdjdktlSNxk="; }) ]; build-system = [ meson meson-python ]; dependencies = [ click python-dateutil regex ]; nativeBuildInputs = [ bison flex ]; nativeCheckInputs = [ gnupg pytestCheckHook ]; preCheck = '' # avoid local paths, relative imports wont resolve correctly mv beancount tests ''; disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ # Cannot run the gpg-agent. If needed, implement as passthru tests. "test_read_encrypted_file" "test_include_encrypted" ]; pythonImportsCheck = [ "beancount" ]; meta = { homepage = "https://github.com/beancount/beancount"; changelog = "https://github.com/beancount/beancount/releases/tag/${src.tag}"; description = "Double-entry bookkeeping computer language"; longDescription = '' A double-entry bookkeeping computer language that lets you define financial transaction records in a text file, read them in memory, generate a variety of reports from them, and provides a web interface. ''; license = lib.licenses.gpl2Only; maintainers = with lib.maintainers; [ alapshin ]; }; }