diff --git a/pkgs/applications/science/misc/snakemake/default.nix b/pkgs/applications/science/misc/snakemake/default.nix deleted file mode 100644 index 07cc2ceaedcc..000000000000 --- a/pkgs/applications/science/misc/snakemake/default.nix +++ /dev/null @@ -1,138 +0,0 @@ -{ lib -, fetchPypi -, python3 -, stress -}: - -python3.pkgs.buildPythonApplication rec { - pname = "snakemake"; - version = "8.20.1"; - format = "setuptools"; - - src = fetchPypi { - inherit pname version; - hash = "sha256-adNwIA1z/TwWsa0gQb4hAsUvHInjd30sm1dYKXvvXy8="; - }; - - postPatch = '' - patchShebangs --build tests/ - substituteInPlace tests/common.py \ - --replace-fail 'os.environ["PYTHONPATH"] = os.getcwd()' "pass" \ - --replace-fail 'del os.environ["PYTHONPATH"]' "pass" - substituteInPlace snakemake/unit_tests/__init__.py \ - --replace-fail '"unit_tests/templates"' '"'"$PWD"'/snakemake/unit_tests/templates"' - ''; - - propagatedBuildInputs = with python3.pkgs; [ - appdirs - configargparse - connection-pool - datrie - docutils - gitpython - humanfriendly - immutables - jinja2 - jsonschema - nbformat - psutil - pulp - pygments - pyyaml - requests - reretry - smart-open - snakemake-interface-executor-plugins - snakemake-interface-common - snakemake-interface-storage-plugins - snakemake-interface-report-plugins - stopit - tabulate - throttler - toposort - wrapt - yte - ]; - - # 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 - # setup. - - nativeCheckInputs = with python3.pkgs; [ - numpy - pandas - pytestCheckHook - pytest-mock - requests-mock - snakemake-executor-plugin-cluster-generic - snakemake-storage-plugin-fs - stress - ]; - - pytestFlagsArray = [ - "tests/tests.py" - "tests/test_expand.py" - "tests/test_io.py" - "tests/test_schema.py" - "tests/test_executor_test_suite.py" - "tests/test_api.py" - ]; - - # Some will be disabled via https://github.com/snakemake/snakemake/pull/3074 - disabledTests = [ - # requires graphviz - "test_filegraph" - # requires s3 - "test_storage" - "test_default_storage" - "test_output_file_cache_storage" - # requires peppy and eido - "test_pep" - "test_modules_peppy" - # requires perl - "test_shadow" - # requires snakemake-storage-plugin-http - "test_ancient" - "test_modules_prefix" - # requires snakemake-storage-plugin-s3 - "test_deploy_sources" - # requires modules - "test_env_modules" - # issue with locating template file - "test_generate_unit_tests" - # weird - "test_strict_mode" - "test_issue1256" - "test_issue2574" - "test_github_issue1384" - # future-proofing - "conda" - "singularity" - "apptainer" - "container" - ]; - - pythonImportsCheck = [ - "snakemake" - ]; - - preCheck = '' - export HOME="$(mktemp -d)" - ''; - - meta = with lib; { - homepage = "https://snakemake.github.io"; - license = licenses.mit; - description = "Python-based execution environment for make-like workflows"; - mainProgram = "snakemake"; - longDescription = '' - Snakemake is a workflow management system that aims to reduce the complexity of - creating workflows by providing a fast and comfortable execution environment, - together with a clean and readable specification language in Python style. Snakemake - workflows are essentially Python scripts extended by declarative code to define - rules. Rules describe how to create output files from input files. - ''; - maintainers = with maintainers; [ helkafen renatoGarcia veprbl ]; - }; -} diff --git a/pkgs/by-name/sn/snakemake/package.nix b/pkgs/by-name/sn/snakemake/package.nix new file mode 100644 index 000000000000..5fa93c593006 --- /dev/null +++ b/pkgs/by-name/sn/snakemake/package.nix @@ -0,0 +1,170 @@ +{ + lib, + stdenv, + fetchPypi, + python3Packages, + stress, + versionCheckHook, +}: + +python3Packages.buildPythonApplication rec { + pname = "snakemake"; + version = "8.23.0"; + + pyproject = true; + + src = fetchPypi { + inherit pname version; + hash = "sha256-XENI9VJW62KyrxDGSwQiygggYZOu9yW2QSNyp4BO9Us="; + }; + + postPatch = '' + patchShebangs --build tests/ + substituteInPlace tests/common.py \ + --replace-fail 'os.environ["PYTHONPATH"] = os.getcwd()' "pass" \ + --replace-fail 'del os.environ["PYTHONPATH"]' "pass" + substituteInPlace snakemake/unit_tests/__init__.py \ + --replace-fail '"unit_tests/templates"' '"'"$PWD"'/snakemake/unit_tests/templates"' + ''; + + build-system = with python3Packages; [ + setuptools + ]; + + dependencies = with python3Packages; [ + appdirs + conda-inject + configargparse + connection-pool + datrie + docutils + gitpython + humanfriendly + immutables + jinja2 + jsonschema + nbformat + psutil + pulp + pygments + pyyaml + requests + reretry + smart-open + snakemake-interface-executor-plugins + snakemake-interface-common + snakemake-interface-storage-plugins + snakemake-interface-report-plugins + stopit + tabulate + throttler + toposort + wrapt + yte + ]; + + # 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 + # setup. + + nativeCheckInputs = with python3Packages; [ + numpy + pandas + pytestCheckHook + pytest-mock + requests-mock + snakemake-executor-plugin-cluster-generic + snakemake-storage-plugin-fs + stress + versionCheckHook + ]; + versionCheckProgramArg = [ "--version" ]; + + pytestFlagsArray = [ + "tests/tests.py" + "tests/test_expand.py" + "tests/test_io.py" + "tests/test_schema.py" + "tests/test_executor_test_suite.py" + "tests/test_api.py" + ]; + + disabledTests = + [ + # FAILED tests/tests.py::test_env_modules - AssertionError: expected successful execution + "test_ancient" + "test_conda_create_envs_only" + "test_env_modules" + "test_generate_unit_tests" + "test_modules_prefix" + "test_strict_mode" + # Requires perl + "test_shadow" + # Require peppy and eido + "test_peppy" + "test_modules_peppy" + "test_pep_pathlib" + + # CalledProcessError + "test_filegraph" # requires graphviz + "test_github_issue1384" + + # AssertionError: assert 127 == 1 + "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" + ] + ++ lib.optionals stdenv.isDarwin [ + # Unclear failure: + # AssertionError: expected successful execution + # `__darwinAllowLocalNetworking` doesn't help + "test_excluded_resources_not_submitted_to_cluster" + "test_group_job_resources_with_pipe" + "test_group_jobs_resources" + "test_group_jobs_resources_with_limited_resources" + "test_group_jobs_resources_with_max_threads" + "test_issue850" + "test_issue860" + "test_multicomp_group_jobs" + "test_queue_input" + "test_queue_input_dryrun" + "test_queue_input_forceall" + "test_resources_submitted_to_cluster" + "test_scopes_submitted_to_cluster" + ]; + + pythonImportsCheck = [ + "snakemake" + ]; + + preCheck = '' + export HOME="$(mktemp -d)" + ''; + + meta = { + homepage = "https://snakemake.github.io"; + license = lib.licenses.mit; + description = "Python-based execution environment for make-like workflows"; + changelog = "https://github.com/snakemake/snakemake/blob/v${version}/CHANGELOG.md"; + mainProgram = "snakemake"; + longDescription = '' + Snakemake is a workflow management system that aims to reduce the complexity of + creating workflows by providing a fast and comfortable execution environment, + together with a clean and readable specification language in Python style. Snakemake + workflows are essentially Python scripts extended by declarative code to define + rules. Rules describe how to create output files from input files. + ''; + maintainers = with lib.maintainers; [ + helkafen + renatoGarcia + veprbl + ]; + }; +} diff --git a/pkgs/development/python-modules/conda-inject/default.nix b/pkgs/development/python-modules/conda-inject/default.nix new file mode 100644 index 000000000000..78d57f748bb1 --- /dev/null +++ b/pkgs/development/python-modules/conda-inject/default.nix @@ -0,0 +1,47 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + poetry-core, + + # dependencies + pyyaml, +}: + +buildPythonPackage rec { + pname = "conda-inject"; + version = "1.3.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "koesterlab"; + repo = "conda-inject"; + rev = "refs/tags/v${version}"; + hash = "sha256-M4+bz7ZuHlcF8tF5kSCUjjkIHG75eCCW1IJxcwxNL6o="; + }; + + build-system = [ + poetry-core + ]; + + dependencies = [ + pyyaml + ]; + + pythonImportsCheck = [ + "conda_inject" + ]; + + # no tests + doCheck = false; + + meta = { + description = "Helper functions for injecting a conda environment into the current python environment"; + homepage = "https://github.com/koesterlab/conda-inject"; + changelog = "https://github.com/koesterlab/conda-inject/blob/${src.rev}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +} 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 19365d837ff2..e6411e3abdf2 100644 --- a/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix +++ b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix @@ -10,19 +10,19 @@ buildPythonPackage rec { pname = "snakemake-interface-executor-plugins"; - version = "9.2.0"; - format = "pyproject"; + version = "9.3.2"; + pyproject = true; src = fetchFromGitHub { owner = "snakemake"; - repo = pname; + repo = "snakemake-interface-executor-plugins"; rev = "refs/tags/v${version}"; - hash = "sha256-WMbJP17YnDzFVcr6YepT5Ltw+Jo6PPn7ayIrjx2k+go="; + hash = "sha256-3XdsEnL+kuYhNOeAxkAsjTJ2R6NOtq97zPhQg9kdFkI="; }; - nativeBuildInputs = [ poetry-core ]; + build-system = [ poetry-core ]; - propagatedBuildInputs = [ + dependencies = [ argparse-dataclass throttler snakemake-interface-common @@ -30,10 +30,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "snakemake_interface_executor_plugins" ]; - meta = with lib; { + meta = { 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 ]; + changelog = "https://github.com/snakemake/snakemake-interface-executor-plugins/blob/${src.rev}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ veprbl ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index da091b43dd45..cba7a5502bfa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18387,8 +18387,6 @@ with pkgs; smc = callPackage ../tools/misc/smc { }; - snakemake = callPackage ../applications/science/misc/snakemake { }; - snore = callPackage ../tools/misc/snore { }; snzip = callPackage ../tools/archivers/snzip { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 906b7e0b9213..bf85502d987a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2514,6 +2514,8 @@ self: super: with self; { conda = callPackage ../development/python-modules/conda { }; + conda-inject = callPackage ../development/python-modules/conda-inject { }; + conda-libmamba-solver = callPackage ../development/python-modules/conda-libmamba-solver { }; conda-package-handling = callPackage ../development/python-modules/conda-package-handling { }; @@ -14536,7 +14538,7 @@ self: super: with self; { }); snakemake = toPythonModule (pkgs.snakemake.override { - python3 = python; + python3Packages = self; }); snakemake-executor-plugin-cluster-generic = callPackage ../development/python-modules/snakemake-executor-plugin-cluster-generic { };