final: prev: { # Without this, we may inadvertedly end up with old versions (if we happen to # overlay a dependency for other packages) python3Packages = final.python3.pkgs; python3 = prev.python3.override { packageOverrides = pyFinal: pyPrev: { bench = pyFinal.callPackage ./python/bench.nix {}; erpnext = pyFinal.callPackage ./python/erpnext.nix {}; frappe = pyFinal.callPackage ./python/frappe.nix {}; # bench dependencies honcho = pyFinal.callPackage ./python/honcho.nix {}; # erpnext dependencies barcodenumber = pyFinal.callPackage ./python/barcodenumber.nix {}; # frappe dependencies email-reply-parser = pyFinal.callPackage ./python/email-reply-parser.nix {}; maxminddb-geolite2 = pyFinal.callPackage ./python/maxminddb-geolite2.nix {}; psycopg2-binary = pyFinal.callPackage ./python/psycopg2-binary.nix {}; traceback-with-variables = pyFinal.callPackage ./python/traceback-with-variables.nix {}; fastapi = pyPrev.fastapi.overridePythonAttrs (oldAttrs: (rec { propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [ pyPrev.pydantic-settings pyPrev.pydantic-extra-types ]; })); plaid-python = pyPrev.plaid-python.overridePythonAttrs (oldAttrs: (rec { version = "7.2.1"; src = pyPrev.fetchPypi { inherit version; inherit (oldAttrs) pname; sha256 = "sha256-ryrTJug3fIyG2XGE9gwL5BzXH1B1IB39szMcyF1N5RM="; }; propagatedBuildInputs = [ pyPrev.requests ]; checkInputs = [ pyPrev.pytest ]; # Integration tests require API keys and internet access checkPhase = "pyPrev.test -rxs ./tests/unit"; })); }; }; }