diff --git a/reana_commons/config.py b/reana_commons/config.py index 57f413c7..1a031f1f 100644 --- a/reana_commons/config.py +++ b/reana_commons/config.py @@ -440,7 +440,7 @@ def default_workspace(): REANA_WORKFLOW_ENGINES = ["yadage", "cwl", "serial", "snakemake"] """Available workflow engines.""" -REANA_DEFAULT_SNAKEMAKE_ENV_IMAGE = "docker.io/snakemake/snakemake:v6.8.0" +REANA_DEFAULT_SNAKEMAKE_ENV_IMAGE = "docker.io/snakemake/snakemake:v7.32.4" """Snakemake default job environment image.""" REANA_JOB_CONTROLLER_CONNECTION_CHECK_SLEEP = float( diff --git a/reana_commons/snakemake.py b/reana_commons/snakemake.py index f942853b..0d696bfd 100644 --- a/reana_commons/snakemake.py +++ b/reana_commons/snakemake.py @@ -93,7 +93,7 @@ def _create_snakemake_dag( if workdir: workflow.workdir(workdir) - workflow.include(snakefile=snakefile, overwrite_first_rule=True) + workflow.include(snakefile=snakefile, overwrite_default_target=True) workflow.check() # code copied and adapted from `snakemake.workflow.Workflow.execute()` @@ -122,7 +122,9 @@ def files(items): if not kwargs.get("targets"): targets = ( - [workflow.first_rule] if workflow.first_rule is not None else list() + [workflow.default_target] + if workflow.default_target is not None + else list() ) prioritytargets = kwargs.get("prioritytargets", []) @@ -157,7 +159,7 @@ def files(items): omitrules=omitrules, ) - workflow.persistence = Persistence(dag=dag) + workflow._persistence = Persistence(dag=dag) dag.init() dag.update_checkpoint_dependencies() dag.check_dynamic() diff --git a/setup.py b/setup.py index 935e575b..75ae33f0 100755 --- a/setup.py +++ b/setup.py @@ -35,13 +35,11 @@ "yadage": ["adage~=0.10.1", "yadage~=0.20.1", "yadage-schemas~=0.10.6"], "cwl": ["cwltool==3.1.20210628163208"], "snakemake": [ - "snakemake==6.8.0 ; python_version<'3.12'", - "snakemake==7.9.0 ; python_version>='3.12'", + "snakemake==7.32.4", "tabulate<0.9", ], "snakemake_reports": [ - "snakemake[reports]==6.8.0 ; python_version<'3.12'", - "snakemake[reports]==7.9.0 ; python_version>='3.12'", + "snakemake==7.32.4", "pygraphviz<1.8", "tabulate<0.9", # tabulate 0.9 crashes snakemake, more info: https://github.com/snakemake/snakemake/issues/1899 ], diff --git a/tests/conftest.py b/tests/conftest.py index 87454803..b14231b1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,6 +20,7 @@ def dummy_snakefile(): "results/foo.txt", "results/bar.txt", "results/baz.txt" + default_target: True rule foo: input: diff --git a/tests/test_snakemake.py b/tests/test_snakemake.py index 314b8a59..f7c48b7a 100644 --- a/tests/test_snakemake.py +++ b/tests/test_snakemake.py @@ -17,10 +17,6 @@ def test_snakemake_load(tmpdir, dummy_snakefile): """Test that Snakemake metadata is loaded properly.""" - if sys.version_info.major == 3 and sys.version_info.minor in (11, 12): - pytest.xfail( - "Snakemake features of reana-client are not supported on Python 3.11" - ) workdir = tmpdir.mkdir("sub") # write Snakefile p = workdir.join("Snakefile")