From 9083ac1f40daf3d284ce9b1ac2d4addde9b5b258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Wed, 4 May 2022 11:02:19 +0200 Subject: [PATCH] fix: check for skipped rules in case of local rule inheritance (#1631) --- snakemake/workflow.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/snakemake/workflow.py b/snakemake/workflow.py index 0844ddb30..8eeaa8065 100644 --- a/snakemake/workflow.py +++ b/snakemake/workflow.py @@ -474,7 +474,9 @@ def add_rule( is_overwrite = self.is_rule(name) if not allow_overwrite and is_overwrite: raise CreateRuleException( - "The name {} is already used by another rule".format(name) + "The name {} is already used by another rule".format(name), + lineno=lineno, + snakefile=snakefile, ) rule = Rule(name, self, lineno=lineno, snakefile=snakefile) self._rules[rule.name] = rule @@ -1925,6 +1927,11 @@ def decorate(maybe_ruleinfo): ) else: # local inheritance + if self.modifier.skip_rule(name_modifier): + # The parent use rule statement is specific for a different particular rule + # hence this local use rule statement can be skipped. + return + if len(rules) > 1: raise WorkflowError( "'use rule' statement from rule in the same module must declare a single rule but multiple rules are declared."