From dc2886ac01ba6461342b77162472a3945f2398de Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Thu, 21 May 2026 22:19:28 +0000 Subject: [PATCH 01/17] python3Packages.snakemake-interface-storage-plugins: 4.3.2 -> 4.4.1 Diff: https://github.com/snakemake/snakemake-interface-storage-plugins/compare/v4.3.2...v4.4.1 --- .../default.nix | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix index c9d157ba6c70..ef946e17490f 100644 --- a/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix @@ -2,42 +2,53 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system poetry-core, + + # dependencies humanfriendly, reretry, snakemake-interface-common, + tenacity, throttler, wrapt, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-interface-storage-plugins"; - version = "4.3.2"; + version = "4.4.1"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-interface-storage-plugins"; - tag = "v${version}"; - hash = "sha256-W2cUwc+9jng4IvBuN+m4WqpehA8qElTRb43w3QOIeN0="; + tag = "v${finalAttrs.version}"; + hash = "sha256-tqSIJnU1+DPx/GI5/wzMkoxpLyM/k/SO8FtejRv9Zls="; }; - nativeBuildInputs = [ poetry-core ]; + build-system = [ poetry-core ]; - propagatedBuildInputs = [ + dependencies = [ humanfriendly reretry snakemake-interface-common + tenacity throttler wrapt ]; pythonImportsCheck = [ "snakemake_interface_storage_plugins" ]; + # No tests + doCheck = false; + meta = { - description = "This package provides a stable interface for interactions between Snakemake and its storage plugins"; + description = "Stable interface for interactions between Snakemake and its storage plugins"; + changelog = "https://github.com/snakemake/snakemake-interface-storage-plugins/releases/tag/${finalAttrs.src.tag}"; homepage = "https://github.com/snakemake/snakemake-interface-storage-plugins"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From e57b8ad67ad400977d787b715eb392871b184f66 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Thu, 21 May 2026 22:40:54 +0000 Subject: [PATCH 02/17] python3Packages.snakemake-storage-plugin-http: init at 0.3.1 --- .../snakemake-storage-plugin-http/default.nix | 68 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 ++ 2 files changed, 72 insertions(+) create mode 100644 pkgs/development/python-modules/snakemake-storage-plugin-http/default.nix diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-http/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-http/default.nix new file mode 100644 index 000000000000..8b36587e5dfb --- /dev/null +++ b/pkgs/development/python-modules/snakemake-storage-plugin-http/default.nix @@ -0,0 +1,68 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + poetry-core, + + # dependencies + requests, + requests-oauthlib, + snakemake-interface-common, + snakemake-interface-storage-plugins, + + # tests + pytestCheckHook, + snakemake, +}: + +buildPythonPackage (finalAttrs: { + pname = "snakemake-storage-plugin-http"; + version = "0.3.1"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "snakemake"; + repo = "snakemake-storage-plugin-http"; + tag = "v${finalAttrs.version}"; + hash = "sha256-ad4IOjU761CaZ+o0//I8/xW+e+4UJG0+VAbQ9KcNjFY="; + }; + + build-system = [ + poetry-core + ]; + + pythonRelaxDeps = [ + "requests-oauthlib" + ]; + dependencies = [ + requests + requests-oauthlib + snakemake-interface-common + snakemake-interface-storage-plugins + ]; + + pythonImportsCheck = [ "snakemake_storage_plugin_http" ]; + + nativeCheckInputs = [ + pytestCheckHook + snakemake + ]; + + enabledTestPaths = [ "tests/tests.py" ]; + + disabledTests = [ + # Requires internet access + "test_storage" + ]; + + meta = { + description = "Snakemake storage plugin for donwloading input files from HTTP(s)"; + homepage = "https://github.com/snakemake/snakemake-storage-plugin-http"; + changelog = "https://github.com/snakemake/snakemake-storage-plugin-http/blob/${finalAttrs.src.tag}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 73ea6e0ad256..151c910895d2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18196,6 +18196,10 @@ self: super: with self; { callPackage ../development/python-modules/snakemake-storage-plugin-fs { }; + snakemake-storage-plugin-http = + callPackage ../development/python-modules/snakemake-storage-plugin-http + { }; + snakemake-storage-plugin-s3 = callPackage ../development/python-modules/snakemake-storage-plugin-s3 { }; From 53998a58291b90e282cadcfc495dbee3574c193a Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 07:51:24 +0000 Subject: [PATCH 03/17] python3Packages.snakemake-executor-plugin-cluster-generic: cleanup --- .../default.nix | 47 ++++++++++++++++--- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix b/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix index 4dab4726cc1b..660b4db7bfac 100644 --- a/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix +++ b/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix @@ -2,36 +2,69 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system poetry-core, - snakemake-interface-executor-plugins, + + # dependencies snakemake-interface-common, + snakemake-interface-executor-plugins, + + # tests + pytestCheckHook, + snakemake, + writableTmpDirAsHomeHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-executor-plugin-cluster-generic"; version = "1.0.9"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-executor-plugin-cluster-generic"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-RHMefoJOZb6TjRsFCORLFdHtI5ZpTsV6CHrjHKMat9o="; }; - nativeBuildInputs = [ poetry-core ]; + build-system = [ + poetry-core + ]; - propagatedBuildInputs = [ - snakemake-interface-executor-plugins + dependencies = [ snakemake-interface-common + snakemake-interface-executor-plugins ]; pythonImportsCheck = [ "snakemake_executor_plugin_cluster_generic" ]; + nativeCheckInputs = [ + pytestCheckHook + snakemake + writableTmpDirAsHomeHook + ]; + + enabledTestPaths = [ "tests/tests.py" ]; + + disabledTestPaths = [ + # Failed to setup log file: [Errno 13] Permission denied: '/build/pytest-of-nixbld/pytest-0/test_group_workflow5/groups/.snakemake' + "tests/tests.py::TestWorkflowsCancelCmd::test_group_workflow" + "tests/tests.py::TestWorkflowsCancelCmd::test_simple_workflow" + "tests/tests.py::TestWorkflowsSidecar::test_group_workflow" + "tests/tests.py::TestWorkflowsSidecar::test_simple_workflow" + "tests/tests.py::TestWorkflowsStatusCmd::test_group_workflow" + "tests/tests.py::TestWorkflowsStatusCmd::test_simple_workflow" + "tests/tests.py::TestWorkflowsSubmitCmdOnly::test_group_workflow" + "tests/tests.py::TestWorkflowsSubmitCmdOnly::test_simple_workflow" + ]; + meta = { description = "Generic cluster executor for Snakemake"; homepage = "https://github.com/snakemake/snakemake-executor-plugin-cluster-generic"; + changelog = "https://github.com/snakemake/snakemake-executor-plugin-cluster-generic/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From 2a78a9a10c6e4b51711eec274484eaff9bd59883 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 07:51:40 +0000 Subject: [PATCH 04/17] python3Packages.snakemake-interface-scheduler-plugins: cleanup --- .../default.nix | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-interface-scheduler-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-scheduler-plugins/default.nix index bbceb3a22c30..6ccfe7862249 100644 --- a/pkgs/development/python-modules/snakemake-interface-scheduler-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-scheduler-plugins/default.nix @@ -2,41 +2,62 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system hatchling, + + # dependencies snakemake-interface-common, + + # tests + pytestCheckHook, + snakemake, + + # passthru + snakemake-interface-scheduler-plugins, }: -let +buildPythonPackage (finalAttrs: { + pname = "snakemake-interface-scheduler-plugins"; version = "2.0.2"; + pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-interface-scheduler-plugins"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-BowMwZllFR9IKYUMhISAbf606awTxfmS/nQxkGgb4y8="; }; -in -buildPythonPackage { - pname = "snakemake-interface-scheduler-plugins"; - inherit version src; - pyproject = true; - build-system = [ hatchling ]; + build-system = [ + hatchling + ]; - dependencies = [ snakemake-interface-common ]; + dependencies = [ + snakemake-interface-common + ]; pythonImportsCheck = [ "snakemake_interface_scheduler_plugins" ]; - # test_scheduler: No module named 'snakemake' - # nativeCheckInputs = [ pytestCheckHook ]; + nativeCheckInputs = [ + pytestCheckHook + snakemake + ]; - # enabledTestPaths = [ "tests/tests.py" ]; + enabledTestPaths = [ "tests/tests.py" ]; + + # Circular dependency with snakemake + doCheck = false; + passthru.tests.pytest = snakemake-interface-scheduler-plugins.overridePythonAttrs { + doCheck = true; + }; meta = { description = "Provides a stable interface for interactions between Snakemake and its scheduler plugins"; homepage = "https://github.com/snakemake/snakemake-interface-scheduler-plugins"; - changelog = "https://github.com/snakemake/snakemake-interface-scheduler-plugins/blob/${src.rev}/CHANGELOG.md"; + changelog = "https://github.com/snakemake/snakemake-interface-scheduler-plugins/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ kyehn ]; }; -} +}) From 5e8d069fe355164e3e4e3c205845f724d012e21b Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:04:24 +0000 Subject: [PATCH 05/17] python3Packages.snakemake-interface-storage-plugins: cleanup --- .../default.nix | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix index ef946e17490f..8b3f8c5f94ea 100644 --- a/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix @@ -13,6 +13,14 @@ tenacity, throttler, wrapt, + + # tests + pytestCheckHook, + snakemake, + snakemake-storage-plugin-http, + + # passthru + snakemake-interface-storage-plugins, }: buildPythonPackage (finalAttrs: { @@ -41,8 +49,24 @@ buildPythonPackage (finalAttrs: { pythonImportsCheck = [ "snakemake_interface_storage_plugins" ]; - # No tests + nativeCheckInputs = [ + pytestCheckHook + snakemake + snakemake-storage-plugin-http + ]; + + enabledTestPaths = [ "tests/tests.py" ]; + + disabledTests = [ + # Requires internet access + "test_storage" + ]; + + # Circular dependency with snakemake doCheck = false; + passthru.tests.pytest = snakemake-interface-storage-plugins.overridePythonAttrs { + doCheck = true; + }; meta = { description = "Stable interface for interactions between Snakemake and its storage plugins"; From 3bf8cf64d5b80ab4c229e4ee3abab362b0579db1 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:13:47 +0000 Subject: [PATCH 06/17] python3Packages.snakemake-storage-plugin-s3: cleanup --- .../snakemake-storage-plugin-s3/default.nix | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix index 3b8529714ed8..d757a619609a 100644 --- a/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix +++ b/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix @@ -2,24 +2,33 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system + poetry-core, + + # dependencies boto3, botocore, - poetry-core, - snakemake, - snakemake-interface-storage-plugins, snakemake-interface-common, + snakemake-interface-storage-plugins, urllib3, + + # tests + pytestCheckHook, + snakemake, + writableTmpDirAsHomeHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-storage-plugin-s3"; version = "0.3.6"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-storage-plugin-s3"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-hvyQ6V6POUBWTCWt9moQlH0RgSM4J36kjbXK4TtO8Bo="; }; @@ -33,15 +42,31 @@ buildPythonPackage rec { urllib3 ]; - nativeCheckInputs = [ snakemake ]; - pythonImportsCheck = [ "snakemake_storage_plugin_s3" ]; + nativeCheckInputs = [ + pytestCheckHook + snakemake + writableTmpDirAsHomeHook + ]; + + enabledTestPaths = [ "tests/tests.py" ]; + + disabledTests = [ + # Requires internet access + "test_storage" + + # snakemake_interface_common.exceptions.WorkflowError: Failed to create local storage prefix .snakemake/storage/s3 + # PermissionError: [Errno 13] Permission denied: '.snakemake' + "test_group_workflow" + "test_simple_workflow" + ]; + meta = { description = "Snakemake storage plugin for S3 API storage (AWS S3, MinIO, etc.)"; homepage = "https://github.com/snakemake/snakemake-storage-plugin-s3"; - changelog = "https://github.com/snakemake/snakemake-storage-plugin-s3/releases/tag/${src.tag}"; + changelog = "https://github.com/snakemake/snakemake-storage-plugin-s3/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From 4a217fdce1b45588c79304f0f93d73f449e8a84a Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:21:39 +0000 Subject: [PATCH 07/17] xrootd: add meta.mainProgram --- pkgs/by-name/xr/xrootd/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/xr/xrootd/package.nix b/pkgs/by-name/xr/xrootd/package.nix index 4ad8f2d7951e..626f6f5edc77 100644 --- a/pkgs/by-name/xr/xrootd/package.nix +++ b/pkgs/by-name/xr/xrootd/package.nix @@ -158,5 +158,6 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.lgpl3Plus; platforms = lib.platforms.all; maintainers = with lib.maintainers; [ ShamrockLee ]; + mainProgram = "xrootd"; }; }) From e7dbc2e41d6ad5903a52042a698a470865cc504c Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:15:51 +0000 Subject: [PATCH 08/17] python3Packages.snakemake-storage-plugin-xrootd: 1.0.0 -> 1.1.0 Diff: https://github.com/snakemake/snakemake-storage-plugin-xrootd/compare/v1.0.0...v1.1.0 Changelog: https://github.com/snakemake/snakemake-storage-plugin-xrootd/releases/tag/v1.1.0 --- .../default.nix | 43 ++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix index de5a3cbdf62d..fc67fd23a9ad 100644 --- a/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix +++ b/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix @@ -1,29 +1,43 @@ { lib, + pkgs, buildPythonPackage, fetchFromGitHub, + + # build-system hatch-vcs, hatchling, - snakemake, - snakemake-interface-storage-plugins, + + # dependencies + reretry, snakemake-interface-common, + snakemake-interface-storage-plugins, xrootd, + + # tests + pytestCheckHook, + snakemake, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-storage-plugin-xrootd"; - version = "1.0.0"; + version = "1.1.0"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-storage-plugin-xrootd"; - tag = "v${version}"; - hash = "sha256-QYG/BE7y3h/Mz1PrVVxmfBBLBLoirrEx9unSEaflUds="; + tag = "v${finalAttrs.version}"; + hash = "sha256-vL9JD9h0ywsKpUPoXhgg6b+vwi7kxK8CF3L6HnAEidE="; }; - # xrootd<6.0.0,>=5.6.4 not satisfied by version 5.7rc20240303 - pythonRelaxDeps = [ "xrootd" ]; + postPatch = '' + substituteInPlace tests/tests.py \ + --replace-fail \ + 'subprocess.Popen(["xrootd",' \ + 'subprocess.Popen(["${lib.getExe pkgs.xrootd}",' + ''; build-system = [ hatch-vcs @@ -33,17 +47,24 @@ buildPythonPackage rec { dependencies = [ snakemake-interface-storage-plugins snakemake-interface-common + reretry xrootd ]; - nativeCheckInputs = [ snakemake ]; - pythonImportsCheck = [ "snakemake_storage_plugin_xrootd" ]; + nativeCheckInputs = [ + pytestCheckHook + snakemake + ]; + + enabledTestPaths = [ "tests/tests.py" ]; + meta = { description = "Snakemake storage plugin for handling input and output via XRootD"; homepage = "https://github.com/snakemake/snakemake-storage-plugin-xrootd"; + changelog = "https://github.com/snakemake/snakemake-storage-plugin-xrootd/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From 90d358c2c5d718a94aca5b90da520e898fd34776 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:33:53 +0000 Subject: [PATCH 09/17] python3Packages.snakemake-interface-common: cleanup Co-Authored-By: Claude Opus 4.7 (1M context) --- .../snakemake-interface-common/default.nix | 42 ++++++++++++++----- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-interface-common/default.nix b/pkgs/development/python-modules/snakemake-interface-common/default.nix index 4ff7030078fb..11eafb41897a 100644 --- a/pkgs/development/python-modules/snakemake-interface-common/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-common/default.nix @@ -1,22 +1,34 @@ { lib, - argparse-dataclass, buildPythonPackage, - configargparse, fetchFromGitHub, fetchpatch, + + # build-system setuptools, + + # dependencies + argparse-dataclass, + configargparse, + + # tests + pytestCheckHook, + snakemake, + + # passthru + snakemake-interface-common, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-interface-common"; version = "1.23.0"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-interface-common"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-D3vktJmn1CifdiEg5UPGpBuuigEIb+ja4yklHZA6ytQ="; }; @@ -29,7 +41,9 @@ buildPythonPackage rec { }) ]; - build-system = [ setuptools ]; + build-system = [ + setuptools + ]; dependencies = [ argparse-dataclass @@ -38,16 +52,24 @@ buildPythonPackage rec { pythonImportsCheck = [ "snakemake_interface_common" ]; - # test_snakemake_version: No module named 'snakemake' - # nativeCheckInputs = [ pytestCheckHook ]; + nativeCheckInputs = [ + pytestCheckHook + snakemake + ]; - # enabledTestPaths = [ "tests/tests.py" ]; + enabledTestPaths = [ "tests/tests.py" ]; + + # Circular dependency with snakemake + doCheck = false; + passthru.tests.pytest = snakemake-interface-common.overridePythonAttrs { + doCheck = true; + }; meta = { description = "Common functions and classes for Snakemake and its plugins"; homepage = "https://github.com/snakemake/snakemake-interface-common"; - changelog = "https://github.com/snakemake/snakemake-interface-common/releases/tag/v${version}"; + changelog = "https://github.com/snakemake/snakemake-interface-common/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From 0b4982f44a58838f6af4f6b3462513c74fa9f983 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:33:53 +0000 Subject: [PATCH 10/17] python3Packages.snakemake-interface-executor-plugins: cleanup Co-Authored-By: Claude Opus 4.7 (1M context) --- .../default.nix | 43 +++++++++++++++---- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix index 6200948df93a..57d6ab72f582 100644 --- a/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix @@ -2,39 +2,66 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system poetry-core, + + # dependencies argparse-dataclass, - throttler, snakemake-interface-common, + throttler, + + # tests + pytestCheckHook, + snakemake-executor-plugin-cluster-generic, + + # passthru + snakemake-interface-executor-plugins, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-interface-executor-plugins"; version = "9.4.0"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-interface-executor-plugins"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-ePbdHMYB2LfCOglz87ZnsUkJH7B97hhSmNBGzwtl5OM="; }; - build-system = [ poetry-core ]; + build-system = [ + poetry-core + ]; dependencies = [ argparse-dataclass - throttler snakemake-interface-common + throttler ]; pythonImportsCheck = [ "snakemake_interface_executor_plugins" ]; + nativeCheckInputs = [ + pytestCheckHook + snakemake-executor-plugin-cluster-generic + ]; + + enabledTestPaths = [ "tests/tests.py" ]; + + # Circular dependency with snakemake + doCheck = false; + passthru.tests.pytest = snakemake-interface-executor-plugins.overridePythonAttrs { + doCheck = true; + }; + meta = { - description = "This package provides a stable interface for interactions between Snakemake and its executor plugins"; + description = "Stable interface for interactions between Snakemake and its executor plugins"; homepage = "https://github.com/snakemake/snakemake-interface-executor-plugins"; - changelog = "https://github.com/snakemake/snakemake-interface-executor-plugins/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/snakemake/snakemake-interface-executor-plugins/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From f92b3f5b26b47cef096ce81d8149eb935461a2dd Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:33:54 +0000 Subject: [PATCH 11/17] python3Packages.snakemake-interface-logger-plugins: cleanup Co-Authored-By: Claude Opus 4.7 (1M context) --- .../default.nix | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix index 70854d4d851a..a5d7a0f4d7a0 100644 --- a/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix @@ -2,34 +2,45 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system hatchling, + + # dependencies snakemake-interface-common, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-interface-logger-plugins"; version = "2.0.1"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-interface-logger-plugins"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-yvEjd4xBjjCocGK/HD1j5jcuy+syyXcEJGdsEFA0H40="; }; - nativeBuildInputs = [ hatchling ]; + build-system = [ + hatchling + ]; - propagatedBuildInputs = [ + dependencies = [ snakemake-interface-common ]; pythonImportsCheck = [ "snakemake_interface_logger_plugins" ]; + # Tests require snakemake-logger-plugin-rich, which is not packaged in nixpkgs + doCheck = false; + meta = { description = "Stable interface for interactions between Snakemake and its logger plugins"; homepage = "https://github.com/snakemake/snakemake-interface-logger-plugins"; + changelog = "https://github.com/snakemake/snakemake-interface-logger-plugins/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From 1276849637da8a938d6d389f6cd628a85bec11fc Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:33:55 +0000 Subject: [PATCH 12/17] python3Packages.snakemake-interface-report-plugins: cleanup Co-Authored-By: Claude Opus 4.7 (1M context) --- .../default.nix | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix index 942da8601a29..d4400ce99643 100644 --- a/pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix @@ -2,32 +2,62 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system poetry-core, + + # dependencies snakemake-interface-common, + + # tests + pytestCheckHook, + snakemake, + + # passthru + snakemake-interface-report-plugins, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-interface-report-plugins"; version = "1.3.0"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-interface-report-plugins"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-3ugEmdO1dcusKXXBZBRszlZXX5fhJyYSSF5Uj5CKJkQ="; }; - nativeBuildInputs = [ poetry-core ]; + build-system = [ + poetry-core + ]; - propagatedBuildInputs = [ snakemake-interface-common ]; + dependencies = [ + snakemake-interface-common + ]; pythonImportsCheck = [ "snakemake_interface_report_plugins" ]; + nativeCheckInputs = [ + pytestCheckHook + snakemake + ]; + + enabledTestPaths = [ "tests/tests.py" ]; + + # Circular dependency with snakemake + doCheck = false; + passthru.tests.pytest = snakemake-interface-report-plugins.overridePythonAttrs { + doCheck = true; + }; + meta = { description = "Interface for Snakemake report plugins"; homepage = "https://github.com/snakemake/snakemake-interface-report-plugins"; + changelog = "https://github.com/snakemake/snakemake-interface-report-plugins/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From d4eedeb694b5ba8a11244e07a6594a81f76ee6d8 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:33:56 +0000 Subject: [PATCH 13/17] python3Packages.snakemake-storage-plugin-fs: cleanup Co-Authored-By: Claude Opus 4.7 (1M context) --- .../snakemake-storage-plugin-fs/default.nix | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix index 41c0f43edf22..96bcb3fc30fc 100644 --- a/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix +++ b/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix @@ -2,42 +2,59 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system poetry-core, - snakemake-interface-storage-plugins, + + # dependencies snakemake-interface-common, + snakemake-interface-storage-plugins, sysrsync, + + # tests + pytestCheckHook, + snakemake, + writableTmpDirAsHomeHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "snakemake-storage-plugin-fs"; version = "1.1.3"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake-storage-plugin-fs"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-UdK0yhl7ljLh57CXAvH/OYiVyw+BjhPwGjSBXX8sbZk="; }; - build-system = [ poetry-core ]; + build-system = [ + poetry-core + ]; dependencies = [ - snakemake-interface-storage-plugins snakemake-interface-common + snakemake-interface-storage-plugins sysrsync ]; - # The current tests are not worth dealing with cyclic dependency on snakemake - doCheck = false; + pythonImportsCheck = [ "snakemake_storage_plugin_fs" ]; - # Use nothing due to a cyclic dependency on snakemake - pythonImportsCheck = [ ]; + nativeCheckInputs = [ + pytestCheckHook + snakemake + writableTmpDirAsHomeHook + ]; + + enabledTestPaths = [ "tests/tests.py" ]; meta = { description = "Snakemake storage plugin that reads and writes from a locally mounted filesystem using rsync"; homepage = "https://github.com/snakemake/snakemake-storage-plugin-fs"; + changelog = "https://github.com/snakemake/snakemake-storage-plugin-fs/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ veprbl ]; }; -} +}) From 2e7ebe3578cc9fdc24e7b6377ebb081c56724653 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:38:59 +0000 Subject: [PATCH 14/17] python3Packages.snakemake-logger-plugin-rich: init at 0.4.1 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../snakemake-logger-plugin-rich/default.nix | 60 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 ++ 2 files changed, 64 insertions(+) create mode 100644 pkgs/development/python-modules/snakemake-logger-plugin-rich/default.nix diff --git a/pkgs/development/python-modules/snakemake-logger-plugin-rich/default.nix b/pkgs/development/python-modules/snakemake-logger-plugin-rich/default.nix new file mode 100644 index 000000000000..ea76afe73264 --- /dev/null +++ b/pkgs/development/python-modules/snakemake-logger-plugin-rich/default.nix @@ -0,0 +1,60 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + hatchling, + + # dependencies + pydantic, + rich, + snakemake-interface-executor-plugins, + snakemake-interface-logger-plugins, + + # tests + pytestCheckHook, + snakemake, + writableTmpDirAsHomeHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "snakemake-logger-plugin-rich"; + version = "0.4.1"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "cademirch"; + repo = "snakemake-logger-plugin-rich"; + tag = "v${finalAttrs.version}"; + hash = "sha256-kMjzagM95Td529JU+qIxGStgJGctS08glrFo3CF+Ih8="; + }; + + build-system = [ + hatchling + ]; + + dependencies = [ + pydantic + rich + snakemake-interface-executor-plugins + snakemake-interface-logger-plugins + ]; + + pythonImportsCheck = [ "snakemake_logger_plugin_rich" ]; + + nativeCheckInputs = [ + pytestCheckHook + snakemake + writableTmpDirAsHomeHook + ]; + + meta = { + description = "Snakemake logger plugin using Rich"; + homepage = "https://github.com/cademirch/snakemake-logger-plugin-rich"; + changelog = "https://github.com/cademirch/snakemake-logger-plugin-rich/blob/${finalAttrs.src.tag}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 151c910895d2..7cc03e56b4f2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18192,6 +18192,10 @@ self: super: with self; { callPackage ../development/python-modules/snakemake-interface-storage-plugins { }; + snakemake-logger-plugin-rich = + callPackage ../development/python-modules/snakemake-logger-plugin-rich + { }; + snakemake-storage-plugin-fs = callPackage ../development/python-modules/snakemake-storage-plugin-fs { }; From 669f01f035e675f02530080d98f95606b32a418f Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 08:39:00 +0000 Subject: [PATCH 15/17] python3Packages.snakemake-interface-logger-plugins: enable tests Tests are now possible since snakemake-logger-plugin-rich is packaged. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../default.nix | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix index a5d7a0f4d7a0..9ca3fda0ca1d 100644 --- a/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix @@ -8,6 +8,13 @@ # dependencies snakemake-interface-common, + + # tests + pytestCheckHook, + snakemake-logger-plugin-rich, + + # passthru + snakemake-interface-logger-plugins, }: buildPythonPackage (finalAttrs: { @@ -33,8 +40,18 @@ buildPythonPackage (finalAttrs: { pythonImportsCheck = [ "snakemake_interface_logger_plugins" ]; - # Tests require snakemake-logger-plugin-rich, which is not packaged in nixpkgs + nativeCheckInputs = [ + pytestCheckHook + snakemake-logger-plugin-rich + ]; + + enabledTestPaths = [ "tests/tests.py" ]; + + # Circular dependency with snakemake doCheck = false; + passthru.tests.pytest = snakemake-interface-logger-plugins.overridePythonAttrs { + doCheck = true; + }; meta = { description = "Stable interface for interactions between Snakemake and its logger plugins"; From 8fdd30ac73e195ac1013d83a0c823ef209c86217 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Thu, 21 May 2026 22:16:36 +0000 Subject: [PATCH 16/17] snakemake: 9.16.3 -> 9.21.0 Diff: https://github.com/snakemake/snakemake/compare/v9.16.3...v9.21.0 Changelog: https://github.com/snakemake/snakemake/blob/v9.21.0/CHANGELOG.md --- pkgs/by-name/sn/snakemake/package.nix | 46 ++++++++++++++++----------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/pkgs/by-name/sn/snakemake/package.nix b/pkgs/by-name/sn/snakemake/package.nix index 3182e82095b8..dedcaab6cfbd 100644 --- a/pkgs/by-name/sn/snakemake/package.nix +++ b/pkgs/by-name/sn/snakemake/package.nix @@ -6,18 +6,20 @@ stress, versionCheckHook, writableTmpDirAsHomeHook, + snakemake, }: python3Packages.buildPythonApplication (finalAttrs: { pname = "snakemake"; - version = "9.16.3"; + version = "9.21.0"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "snakemake"; repo = "snakemake"; tag = "v${finalAttrs.version}"; - hash = "sha256-+eEzpRY6ZEKB3v1/AkHDg4bOcM2Y6pt4UMrdKF6soac="; + hash = "sha256-+EO+BTMkui0mJvEf0TOaCRBH8MzLsit8xK+71gujHt0="; }; postPatch = '' @@ -33,6 +35,10 @@ python3Packages.buildPythonApplication (finalAttrs: { build-system = with python3Packages; [ setuptools-scm ]; + pythonRelaxDeps = [ + "packaging" + "sqlmodel" + ]; dependencies = with python3Packages; [ appdirs conda-inject @@ -53,20 +59,24 @@ python3Packages.buildPythonApplication (finalAttrs: { requests reretry smart-open - snakemake-interface-executor-plugins snakemake-interface-common + snakemake-interface-executor-plugins snakemake-interface-logger-plugins - snakemake-interface-storage-plugins snakemake-interface-report-plugins snakemake-interface-scheduler-plugins + snakemake-interface-storage-plugins + sqlmodel stopit tabulate + tenacity throttler toposort wrapt yte ]; + pythonImportsCheck = [ "snakemake" ]; + # See # https://github.com/snakemake/snakemake/blob/main/.github/workflows/main.yml#L99 # for the current basic test suite. Slurm, Tibanna and Tes require extra @@ -81,11 +91,15 @@ python3Packages.buildPythonApplication (finalAttrs: { requests-mock snakemake-executor-plugin-cluster-generic snakemake-storage-plugin-fs + snakemake-storage-plugin-http + snakemake-storage-plugin-s3 stress - versionCheckHook polars ]) - ++ [ writableTmpDirAsHomeHook ]; + ++ [ + versionCheckHook + writableTmpDirAsHomeHook + ]; enabledTestPaths = [ "tests/tests.py" @@ -97,6 +111,9 @@ python3Packages.buildPythonApplication (finalAttrs: { ]; disabledTests = [ + # AssertionError: expected file "onerror_module2.log" not produced + "test_module_onerror" + # FAILED tests/tests.py::test_env_modules - AssertionError: expected successful execution "test_ancient" "test_conda_create_envs_only" @@ -119,13 +136,6 @@ python3Packages.buildPythonApplication (finalAttrs: { "test_issue1256" "test_issue2574" - # Require `snakemake-storage-plugin-fs` (circular dependency) - "test_default_storage" - "test_default_storage_local_job" - "test_deploy_sources" - "test_output_file_cache_storage" - "test_storage" - # Tries to access internet "test_report_after_run" @@ -136,10 +146,6 @@ python3Packages.buildPythonApplication (finalAttrs: { # Needs unshare "test_nodelocal" - # Requires snakemake-storage-plugin-http - "test_keep_local" - "test_retrieve" - # Requires conda "test_jupyter_notebook" "test_jupyter_notebook_nbconvert" @@ -179,7 +185,11 @@ python3Packages.buildPythonApplication (finalAttrs: { "test_issue1331" ]; - pythonImportsCheck = [ "snakemake" ]; + # Circular dependencies + doCheck = false; + passthru.tests.pytest = snakemake.overridePythonAttrs { + doCheck = true; + }; meta = { homepage = "https://snakemake.github.io"; From 5d6beea86ec1d9969ddb2408ffa7919a2d3fa7c9 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 22 May 2026 10:11:51 +0000 Subject: [PATCH 17/17] python3Packages.snakemake-interface-logger-plugins: 2.0.1 -> 2.1.0 Diff: https://github.com/snakemake/snakemake-interface-logger-plugins/compare/v2.0.1...v2.1.0 Changelog: https://github.com/snakemake/snakemake-interface-logger-plugins/blob/v2.1.0/CHANGELOG.md Co-Authored-By: Claude Opus 4.7 (1M context) --- .../snakemake-interface-logger-plugins/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix index 9ca3fda0ca1d..e4a115ea5c19 100644 --- a/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-logger-plugins/default.nix @@ -19,7 +19,7 @@ buildPythonPackage (finalAttrs: { pname = "snakemake-interface-logger-plugins"; - version = "2.0.1"; + version = "2.1.0"; pyproject = true; __structuredAttrs = true; @@ -27,7 +27,7 @@ buildPythonPackage (finalAttrs: { owner = "snakemake"; repo = "snakemake-interface-logger-plugins"; tag = "v${finalAttrs.version}"; - hash = "sha256-yvEjd4xBjjCocGK/HD1j5jcuy+syyXcEJGdsEFA0H40="; + hash = "sha256-UBdzJtKukR4Y9KPpu8qJv4HmN9ghncvEqGsTQnHk36k="; }; build-system = [