diff --git a/pkgs/applications/science/misc/snakemake/default.nix b/pkgs/applications/science/misc/snakemake/default.nix index 3acd66f79084..d279bd1e2cfd 100644 --- a/pkgs/applications/science/misc/snakemake/default.nix +++ b/pkgs/applications/science/misc/snakemake/default.nix @@ -1,20 +1,28 @@ { lib , fetchFromGitHub , python3 +, runtimeShell }: python3.pkgs.buildPythonApplication rec { pname = "snakemake"; - version = "7.32.4"; + version = "8.0.1"; format = "setuptools"; src = fetchFromGitHub { owner = "snakemake"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-9KuMPqvM8ZCTuomc0R9MBxsK3KIpukDTrlwU6MHysK0="; + hash = "sha256-F4c/lgp7J6LLye+f3FpzaXz3zM7R+jXxTziPlVbxFxA="; }; + postPatch = '' + patchShebangs --build tests/ + patchShebangs --host snakemake/executors/jobscript.sh + substituteInPlace snakemake/shell.py \ + --replace "/bin/sh" "${runtimeShell}" + ''; + propagatedBuildInputs = with python3.pkgs; [ appdirs configargparse @@ -23,6 +31,7 @@ python3.pkgs.buildPythonApplication rec { docutils gitpython humanfriendly + immutables jinja2 jsonschema nbformat @@ -32,6 +41,9 @@ python3.pkgs.buildPythonApplication rec { requests reretry smart-open + snakemake-interface-executor-plugins + snakemake-interface-common + snakemake-interface-storage-plugins stopit tabulate throttler @@ -46,31 +58,29 @@ python3.pkgs.buildPythonApplication rec { # setup. nativeCheckInputs = with python3.pkgs; [ + numpy pandas pytestCheckHook requests-mock - pillow + snakemake-executor-plugin-cluster-generic ]; disabledTestPaths = [ - "tests/test_slurm.py" - "tests/test_tes.py" - "tests/test_tibanna.py" - "tests/test_linting.py" - "tests/test_google_lifesciences.py" - "tests/test_conda_python_script/test_script.py" + "tests/test_conda_python_3_7_script/test_script.py" ]; disabledTests = [ - # Tests require network access - "test_github_issue1396" - "test_github_issue1460" + "test_deploy_sources" ]; pythonImportsCheck = [ "snakemake" ]; + preCheck = '' + export HOME="$(mktemp -d)" + ''; + meta = with lib; { homepage = "https://snakemake.github.io"; license = licenses.mit; 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 new file mode 100644 index 000000000000..17b0aeed0bae --- /dev/null +++ b/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix @@ -0,0 +1,38 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, poetry-core +, snakemake-interface-executor-plugins +, snakemake-interface-common +}: + +buildPythonPackage rec { + pname = "snakemake-executor-plugin-cluster-generic"; + version = "1.0.7"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "snakemake"; + repo = pname; + rev = "refs/tags/v${version}"; + hash = "sha256-1W/8jf+R1798cu3sWI0LTSyVawtmFfwlAqRHwfmIAzU="; + }; + + nativeBuildInputs = [ + poetry-core + ]; + + propagatedBuildInputs = [ + snakemake-interface-executor-plugins + snakemake-interface-common + ]; + + pythonImportsCheck = [ "snakemake_executor_plugin_cluster_generic" ]; + + meta = with lib; { + description = "Generic cluster executor for Snakemake"; + homepage = "https://github.com/snakemake/snakemake-executor-plugin-cluster-generic/tags"; + license = licenses.mit; + maintainers = with maintainers; [ veprbl ]; + }; +} diff --git a/pkgs/development/python-modules/snakemake-interface-common/default.nix b/pkgs/development/python-modules/snakemake-interface-common/default.nix new file mode 100644 index 000000000000..d8a326112c33 --- /dev/null +++ b/pkgs/development/python-modules/snakemake-interface-common/default.nix @@ -0,0 +1,38 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, poetry-core +, argparse-dataclass +, ConfigArgParse +}: + +buildPythonPackage rec { + pname = "snakemake-interface-common"; + version = "1.15.0"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "snakemake"; + repo = pname; + rev = "refs/tags/v${version}"; + hash = "sha256-Rf2eMkRvkTCR2swB53ekjv8U8DzTPgjhIkBVrn6gTTI="; + }; + + nativeBuildInputs = [ + poetry-core + ]; + + propagatedBuildInputs = [ + argparse-dataclass + ConfigArgParse + ]; + + pythonImportsCheck = [ "snakemake_interface_common" ]; + + meta = with lib; { + description = "Common functions and classes for Snakemake and its plugins"; + homepage = "https://github.com/snakemake/snakemake-interface-common"; + license = licenses.mit; + maintainers = with maintainers; [ veprbl ]; + }; +} diff --git a/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix new file mode 100644 index 000000000000..358fdd614163 --- /dev/null +++ b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix @@ -0,0 +1,40 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, poetry-core +, argparse-dataclass +, throttler +, snakemake-interface-common +}: + +buildPythonPackage rec { + pname = "snakemake-interface-executor-plugins"; + version = "8.1.3"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "snakemake"; + repo = pname; + rev = "refs/tags/v${version}"; + hash = "sha256-QBLdqhR6WrO/zT0Ux5xcUtr5HbrDy91qiWuSjAA5c3E="; + }; + + nativeBuildInputs = [ + poetry-core + ]; + + propagatedBuildInputs = [ + argparse-dataclass + throttler + snakemake-interface-common + ]; + + pythonImportsCheck = [ "snakemake_interface_executor_plugins" ]; + + meta = with lib; { + description = "This package provides a stable interface for interactions between Snakemake and its executor plugins"; + homepage = "https://github.com/snakemake/snakemake-interface-executor-plugins"; + license = licenses.mit; + maintainers = with maintainers; [ veprbl ]; + }; +} diff --git a/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix new file mode 100644 index 000000000000..3d37ec8471ec --- /dev/null +++ b/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix @@ -0,0 +1,43 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, poetry-core +, reretry +, snakemake-interface-common +, throttler +, wrapt +, snakemake +}: + +buildPythonPackage rec { + pname = "snakemake-interface-storage-plugins"; + version = "3.0.0"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "snakemake"; + repo = pname; + rev = "refs/tags/v${version}"; + hash = "sha256-MinqSMpBlp3pCgQxorkMdrJuO0GExJsO02kg2/mGsFw="; + }; + + nativeBuildInputs = [ + poetry-core + ]; + + propagatedBuildInputs = [ + reretry + snakemake-interface-common + throttler + wrapt + ]; + + pythonImportsCheck = [ "snakemake_interface_storage_plugins" ]; + + meta = with lib; { + description = "This package provides a stable interface for interactions between Snakemake and its storage plugins"; + homepage = "https://github.com/snakemake/snakemake-interface-storage-plugins"; + license = licenses.mit; + maintainers = with maintainers; [ veprbl ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9cb85e6ad622..32ac368e983b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13306,6 +13306,14 @@ self: super: with self; { inherit (self) python; }); + snakemake-executor-plugin-cluster-generic = callPackage ../development/python-modules/snakemake-executor-plugin-cluster-generic { }; + + snakemake-interface-common = callPackage ../development/python-modules/snakemake-interface-common { }; + + snakemake-interface-executor-plugins = callPackage ../development/python-modules/snakemake-interface-executor-plugins { }; + + snakemake-interface-storage-plugins = callPackage ../development/python-modules/snakemake-interface-storage-plugins { }; + snakebite = callPackage ../development/python-modules/snakebite { }; snakeviz = callPackage ../development/python-modules/snakeviz { };