Change:
Due to the update in which includes octoprint fails to build in current unstable release. Octoprint needs a version <8, whereas black now demands a version of = 8. Steps to reproduce the behavior: octoprint should build. <!-- Please @ people who are in the list of the offending package or module. If in doubt, check for whoever last touched something. -- Please run and paste the result. One could add an additional overwrite for black at this point. On the other hand, octoprint just released its rc2 which drops python2 support and makes a lot of the overwrites unnecessary.
Please just remove black from the test pipeline. There is no reason to run it.
AFAIK black isn't used in the test pipeline. At least neither click, nor octoprint have black as a build input. Still, some package version of derivation seems to require black. I submitted a PR, which pins the version of black to the last working version.
Black is almost never a runtime dependency. Most of the time it can be safely removed from any requires which safes us the hassle of pinning it or fixing issues.
Hi as I said it is a runtime dependency. In this case . In any case, I would rather see move forward, which would remove most of the overrides.
We should probably wait for a stable release of octoprint first

Discussion:
, packageOverrides ? self: super: { } }: let <del> mkOverride = attrname: version: sha256: self: super: { ${attrname} = super.${attrname}.overridePythonAttrs ( oldAttrs: { inherit version; src = oldAttrs.src.override { inherit version sha256; }; } ); }; </del> py = python3.override { self = py; packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) ( [ <del> # the following dependencies are non trivial to update since later versions introduce backwards incompatible # changes that might affect plugins, or due to other observed problems (mkOverride "click" "7.1.2" "d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a") (mkOverride "flask-babel" "1.0.0" "0gmb165vkwv5v7dxsxa2i3zhafns0fh938m2zdcrv4d8z5l099yn") (mkOverride "itsdangerous" "1.1.0" "321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19") (mkOverride "jinja2" "2.11.3" "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6") (mkOverride "markdown" "3.1.1" "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a") (mkOverride "markupsafe" "1.1.1" "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b") # black uses hash, not sha256 identifier. Newer black version requires newer click version ( self: super: { black = super.black.overridePythonAttrs (oldAttrs: rec { version = "21.12b0"; src = oldAttrs.src.override { inherit version; hash = "sha256-d7gPaTpWni5SeVhFljTxjfmwuiYluk4MLV2lvkLm8rM="; }; doCheck = false; }); } ) # tests need network ( self: super: { curio = super.curio.overridePythonAttrs (oldAttrs: rec { disabledTests = [ "test_timeout" "test_ssl_outgoing" ]; }); } ) # tests need network ( self: super: { trio = super.trio.overridePythonAttrs (oldAttrs: rec { disabledTests = [ "test_local_address_real" ]; disabledTestPaths = [ "trio/tests/test_exports.py" "trio/tests/test_socket.py" ]; }); } ) # Requires flask<2, cannot mkOverride because tests need to be disabled ( self: super: { flask = super.flask.overridePythonAttrs (oldAttrs: rec { version = "1.1.4"; src = oldAttrs.src.override { inherit version; sha256 = "15ni4xlm57a15f5hipp8w0c9zba20179bvfns2392fiq1lcbdghg"; }; doCheck = false; }); } ) # Requires werkezug<2, cannot mkOverride because tests need to be disabled ( self: super: { werkzeug = super.werkzeug.overridePythonAttrs (oldAttrs: rec { version = "1.0.1"; src = oldAttrs.src.override { inherit version; sha256 = "6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"; }; doCheck = false; }); } ) # Requires unidecode>=0.04.14,<0.05. Upstream changed the source naming between releases ( self: super: { unidecode = super.unidecode.overridePythonAttrs (oldAttrs: rec { version = "0.04.21"; src = fetchFromGitHub { owner = "avian2"; repo = "unidecode"; rev = "release-${version}"; sha256 = "0p5bkibv0xm1265dlfrz3zq3k9bbx07gl8zyq8mvvb8hi7p5lifg"; }; }); } ) # Requires websocket-client <1.0, >=0.57. Cannot do mkOverride b/c differing underscore/hyphen in pypi source name ( self: super: { websocket-client = super.websocket-client.overridePythonAttrs ( oldAttrs: rec { version = "0.59.0"; src = oldAttrs.src.override { inherit version; sha256 = "0p0cz2mdissq7iw1n7jrmsfir0jfmgs1dvnpnrx477ffx9hbsxnk"; }; propagatedBuildInputs = with self; [ six pysocks ]; disabledTests = [ "testConnect" # requires network access ]; } ); } ) # Octoprint needs zeroconf >=0.24 <0.25. This can't be done via mkOverride, because in zeroconf 0.32 # the super package was migrated to fetchFromGitHub. ( self: super: { zeroconf = super.zeroconf.overrideAttrs (oldAttrs: rec { version = "0.24.5"; src = super.fetchPypi { inherit (oldAttrs) pname; inherit version; sha256 = "0jpgd0rk91si93857mjrizan5gc42kj1q4fi4160qgk68la88fl9"; }; pythonImportsCheck = [ "zeroconf" ]; buildInputs = with self; [ pytestCheckHook nose ]; pytestFlagsArray = [ "zeroconf/test.py" ]; }); } ) # Octoprint pulls in celery indirectly but has no support for the up-to-date releases ( self: super: { celery = super.celery.overrideAttrs (oldAttrs: rec { version = "5.0.0"; src = oldAttrs.src.override { inherit version; hash = "sha256-MTkw/d3nA9jjcCmjBL+RQpzRGu72PFfebayp2Vjh8lU="; }; disabledTestPaths = [ "t/unit/backends/test_mongodb.py" "t/unit/backends/test_cassandra.py" ]; }); } ) # Octoprint would allow later sentry-sdk releases but not later click releases ( self: super: { sentry-sdk = super.sentry-sdk.overrideAttrs (oldAttrs: rec { pname = "sentry-sdk"; version = "1.4.3"; src = fetchFromGitHub { owner = "getsentry"; repo = "sentry-python"; rev = version; sha256 = "sha256-vdE6eqELMM69CWHaNYhF0HMCTV3tQsJlMHAA96oCy8c="; }; disabledTests = [ "test_apply_simulates_delivery_info" "test_auto_enabling_integrations_catches_import_error" "test_leaks" ]; disabledTestPaths = [ # Don't test integrations "tests/integrations" # test crashes on aarch64 "tests/test_transport.py" ]; }); } ) # Octoprint fails due to a newly added test in pytest-httpbin # see https://github.com/NixOS/nixpkgs/issues/159864 ( self: super: { pytest-httpbin = super.pytest-httpbin.overridePythonAttrs (oldAttrs: rec { disabledTests = [ "test_redirect_location_is_https_for_secure_server" ]; }); } ) # All test fail on aarch64 ( self: super: { azure-core = super.azure-core.overridePythonAttrs (oldAttrs: rec { doCheck = stdenv.buildPlatform == "x86_64-linux"; }); } ) # needs network ( self: super: { falcon = super.falcon.overridePythonAttrs (oldAttrs: rec { #pytestFlagsArray = [ "-W ignore::DeprecationWarning" ]; disabledTestPaths = oldAttrs.disabledTestPaths or [] ++ [ "tests/asgi/test_asgi_servers.py" ]; }); } ) # update broke some tests ( self: super: { sanic = super.sanic.overridePythonAttrs (oldAttrs: rec { disabledTestPaths = oldAttrs.disabledTestPaths or [] ++ [ "test_cli.py" "test_cookies.py" # requires network "test_worker.py" ]; }); } ) ( self: super: { flask-restful = super.flask-restful.overridePythonAttrs (oldAttrs: rec { # remove werkzeug patch patches = []; }); } ) ( self: super: { trytond = super.trytond.overridePythonAttrs (oldAttrs: rec { # remove werkzeug patch patches = []; }); } ) </del> # Built-in dependency ( self: super: {

self: super: { octoprint-pisupport = self.buildPythonPackage rec { pname = "OctoPrint-PiSupport"; <del> version = "2021.10.28"; </del> <ins> version = "2022.3.28"; </ins> format = "setuptools"; src = fetchFromGitHub { owner = "OctoPrint"; repo = "OctoPrint-PiSupport"; rev = version; <del> sha256 = "01bpvv1sn3113fdpw6b90c2rj8lqay118x609yy64z9ccm93khl9"; </del> <ins> sha256 = "yzE/jz604nX/CHcW3aa7goH1ey8qZ7rLw31SMfNKJZM="; </ins> }; # requires octoprint itself during tests

self: super: { octoprint = self.buildPythonPackage rec { pname = "OctoPrint"; <del> version = "1.7.3"; </del> <ins> version = "1.8.0rc5"; </ins> src = fetchFromGitHub { owner = "OctoPrint"; repo = "OctoPrint"; rev = version; <del> sha256 = "sha256-U6g7WysHHOlZ4p5BM4tw3GGAxQmxv6ltYgAp1rO/eCg="; </del> <ins> sha256 = "sha256-FeT45w6VXaFV4BsuOMk58nxxiu9jhCNnA2F7Uh/3sB0="; </ins> }; propagatedBuildInputs = with super; [

werkzeug wrapt zeroconf <del> zipstream-new </del> <ins> zipstream-ng </ins> ] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];

"wrapt" "zeroconf" "Flask-Login" <ins> "werkzeug" </ins> ]; in ''