From a5836ac673afaabb5af161e69b58e8f74e472880 Mon Sep 17 00:00:00 2001 From: John Huddleston Date: Mon, 18 Sep 2023 12:01:12 -0700 Subject: [PATCH] Check for empty user-defined subsampling scheme Adds a check for an empty user-defined subsampling scheme and provides a helpful error message when this happens to replace the unhelpful `AttributeError` message users would get before when the workflow tried to access a nonexistent method of a `NoneType`. This error can happen when a user defines a custom subsampling scheme where the contents are not properly indented below the `subsampling` key. The resulting config is still a valid YAML file, so the emptiness of the subsampling scheme needs to be checked specifically. We could probably handle this better and more generically with a more stringent YAML schema. --- Snakefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Snakefile b/Snakefile index e51496819..efca7c308 100644 --- a/Snakefile +++ b/Snakefile @@ -34,6 +34,10 @@ import time # [4] https://github.com/snakemake/snakemake/blob/a7ac40c96d6e2af47102563d0478a2220e2a2ab7/snakemake/workflow.py#L1088-L1094 # [5] https://github.com/snakemake/snakemake/blob/a7ac40c96d6e2af47102563d0478a2220e2a2ab7/snakemake/utils.py#L455-L476 user_subsampling = copy.deepcopy(config.get("subsampling", {})) +if user_subsampling is None: + logger.error("ERROR: The configuration file you have provided defines a `subsampling` section that appears to be empty.") + logger.error("Check that section of your configuration file to confirm that it isn't empty and that its contents are properly indented below the `subsampling` key.") + sys.exit(1) configfile: "defaults/parameters.yaml"