nf-core / nf-core/tools

nf-core pipelines launch ends in a stacktrace

Open
#3,500 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Python
Stars
322
Forks
255
Avg merge
2d 3h
Merged PRs (30d)
5

Description

Description of the bug

I'm trying to write out the params file for various pipelines in my directory, but it results in a stack trace when using the command-line option for fetchngs.

nf-core pipelines launch fetchngs


                                          ,--./,-.
          ___     __   __   __   ___     /,-._.--~\ 
    |\ | |__  __ /  ` /  \ |__) |__         }  {
    | \| |       \__, \__/ |  \ |___     \`-._,-`-,
                                          `._,._,'

    nf-core/tools version 3.2.0 - https://nf-co.re


INFO     NOTE: This tool ignores any pipeline parameter defaults overwritten by Nextflow config files or   
         profiles                                                                                          
                                                                                                           
WARNING  Could not find GitHub authentication token. Some API requests may fail.                           
? Select release / branch: 1.12.0  [release]
INFO     Downloading workflow: nf-core/fetchngs (1.12.0)                                                   
ERROR    [✗] Pipeline schema does not follow nf-core specs:                                                
          Schema is using the wrong draft: http://json-schema.org/draft-07/schema, should be               
         https://json-schema.org/draft-07/schema                                                           
INFO     No pipeline schema found - creating one from the config                                           
INFO     Would you like to enter pipeline parameters using a web-based interface or a command-line wizard? 
? Choose launch method Command line
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/bin/nf-core:10 in  │
│ <module>                                                                                         │
│                                                                                                  │
│    7                                                                                             │
│    8 if __name__ == '__main__':                                                                  │
│    9 │   sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])                       │
│ ❱ 10 │   sys.exit(run_nf_core())                                                                 │
│   11                                                                                             │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/nf_core/__main__.py:182 in run_nf_core                                                │
│                                                                                                  │
│    179 │   │   │   log.debug(f"Could not check latest version: {e}")                             │
│    180 │   │   stderr.print("\n")                                                                │
│    181 │   # Launch the click cli                                                                │
│ ❱  182 │   nf_core_cli(auto_envvar_prefix="NFCORE")                                              │
│    183                                                                                           │
│    184                                                                                           │
│    185 @tui(                                                                                     │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/rich_click/rich_command.py:378 in __call__                                            │
│                                                                                                  │
│   375 │   │   # Include this here because I run into a false warning                             │
│   376 │   │   # in the PyCharm IDE otherwise; for some reason PyCharm doesn't                    │
│   377 │   │   # seem to think RichGroups are callable. (No issues with Mypy, though.)            │
│ ❱ 378 │   │   return super().__call__(*args, **kwargs)                                           │
│   379                                                                                            │
│   380                                                                                            │
│   381 class RichCommandCollection(CommandCollection, RichGroup):                                 │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/click/core.py:1161 in __call__                                                        │
│                                                                                                  │
│   1158 │                                                                                         │
│   1159 │   def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Any:                           │
│   1160 │   │   """Alias for :meth:`main`."""                                                     │
│ ❱ 1161 │   │   return self.main(*args, **kwargs)                                                 │
│   1162                                                                                           │
│   1163                                                                                           │
│   1164 class Command(BaseCommand):                                                               │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/rich_click/rich_command.py:166 in main                                                │
│                                                                                                  │
│   163 │   │   try:                                                                               │
│   164 │   │   │   try:                                                                           │
│   165 │   │   │   │   with self.make_context(prog_name, args, **extra) as ctx:                   │
│ ❱ 166 │   │   │   │   │   rv = self.invoke(ctx)                                                  │
│   167 │   │   │   │   │   if not standalone_mode:                                                │
│   168 │   │   │   │   │   │   return rv                                                          │
│   169 │   │   │   │   │   # it's not safe to `ctx.exit(rv)` here!                                │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/click/core.py:1697 in invoke                                                          │
│                                                                                                  │
│   1694 │   │   │   │   super().invoke(ctx)                                                       │
│   1695 │   │   │   │   sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)                    │
│   1696 │   │   │   │   with sub_ctx:                                                             │
│ ❱ 1697 │   │   │   │   │   return _process_result(sub_ctx.command.invoke(sub_ctx))               │
│   1698 │   │                                                                                     │
│   1699 │   │   # In chain mode we create the contexts step by step, but after the                │
│   1700 │   │   # base command has been invoked.  Because at that point we do not                 │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/click/core.py:1697 in invoke                                                          │
│                                                                                                  │
│   1694 │   │   │   │   super().invoke(ctx)                                                       │
│   1695 │   │   │   │   sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)                    │
│   1696 │   │   │   │   with sub_ctx:                                                             │
│ ❱ 1697 │   │   │   │   │   return _process_result(sub_ctx.command.invoke(sub_ctx))               │
│   1698 │   │                                                                                     │
│   1699 │   │   # In chain mode we create the contexts step by step, but after the                │
│   1700 │   │   # base command has been invoked.  Because at that point we do not                 │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/click/core.py:1443 in invoke                                                          │
│                                                                                                  │
│   1440 │   │   │   echo(style(message, fg="red"), err=True)                                      │
│   1441 │   │                                                                                     │
│   1442 │   │   if self.callback is not None:                                                     │
│ ❱ 1443 │   │   │   return ctx.invoke(self.callback, **ctx.params)                                │
│   1444 │                                                                                         │
│   1445 │   def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]:  │
│   1446 │   │   """Return a list of completions for the incomplete value. Looks                   │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/click/core.py:788 in invoke                                                           │
│                                                                                                  │
│    785 │   │                                                                                     │
│    786 │   │   with augment_usage_errors(__self):                                                │
│    787 │   │   │   with ctx:                                                                     │
│ ❱  788 │   │   │   │   return __callback(*args, **kwargs)                                        │
│    789 │                                                                                         │
│    790 │   def forward(__self, __cmd: "Command", *args: t.Any, **kwargs: t.Any) -> t.Any:        │
│    791 │   │   """Similar to :meth:`invoke` but fills in default keyword                         │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/click/decorators.py:33 in new_func                                                    │
│                                                                                                  │
│    30 │   """                                                                                    │
│    31 │                                                                                          │
│    32 │   def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R":                            │
│ ❱  33 │   │   return f(get_current_context(), *args, **kwargs)                                   │
│    34 │                                                                                          │
│    35 │   return update_wrapper(new_func, f)                                                     │
│    36                                                                                            │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/nf_core/__main__.py:551 in command_pipelines_launch                                   │
│                                                                                                  │
│    548 │   """                                                                                   │
│    549 │   Launch a pipeline using a web GUI or command line prompts.                            │
│    550 │   """                                                                                   │
│ ❱  551 │   pipelines_launch(ctx, pipeline, id, revision, command_only, params_in, params_out, s  │
│    552                                                                                           │
│    553                                                                                           │
│    554 # nf-core pipelines list                                                                  │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/nf_core/commands_pipelines.py:264 in pipelines_launch                                 │
│                                                                                                  │
│   261 │   │   url,                                                                               │
│   262 │   │   id,                                                                                │
│   263 │   )                                                                                      │
│ ❱ 264 │   if not launcher.launch_pipeline():                                                     │
│   265 │   │   sys.exit(1)                                                                        │
│   266                                                                                            │
│   267                                                                                            │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/nf_core/pipelines/launch.py:176 in launch_pipeline                                    │
│                                                                                                  │
│   173 │   │   │   │   │   return False                                                           │
│   174 │   │   │   else:                                                                          │
│   175 │   │   │   │   # Kick off the interactive wizard to collect user inputs                   │
│ ❱ 176 │   │   │   │   self.prompt_schema()                                                       │
│   177 │   │                                                                                      │
│   178 │   │   # Validate the parameters that we now have                                         │
│   179 │   │   if not self.schema_obj.validate_params():                                          │
│                                                                                                  │
│ /Users/mahpa906/Documents/Projects/nf-metaomics-daisychain/.pixi/envs/default/lib/python3.13/sit │
│ e-packages/nf_core/pipelines/launch.py:412 in prompt_schema                                      │
│                                                                                                  │
│   409 │   │   definitions_schemas = self.schema_obj.schema.get("$defs", self.schema_obj.schema   │
│   410 │   │   for allOf in self.schema_obj.schema.get("allOf", []):                              │
│   411 │   │   │   d_key = allOf["$ref"][14:]                                                     │
│ ❱ 412 │   │   │   answers.update(self.prompt_group(d_key, definitions_schemas[d_key]))           │
│   413 │   │                                                                                      │
│   414 │   │   # Top level schema params                                                          │
│   415 │   │   for param_id, param_obj in self.schema_obj.schema.get("properties", {}).items():   │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: 'dict_items' object is not subscriptable

Command used and terminal output

System information

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce with nf-core pipelines launch fetchngs and follow the command-line launch path after the pipeline schema warning. Inspect how the fetched schema and parameter wizard are handled; done means the command completes without a stacktrace and can write the requested params file.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.