Skip to content

Using task.process instead of "${task.process}" in eval crashes the linting #3889

@SPPearce

Description

@SPPearce

Description of the bug

We should be able to use val(task.process) in a topic eval, rather than "${task.process}".
e.g.

tuple val(task.process), val("fgbio"), eval("fgbio --version 2>&1 | grep -oE '[0-9]+(\\.[0-9]+)+'"), topic: versions, emit: versions_fgbio

This works fine (Nextflow 25.10.0) in practice, but this seems to crash the linting:

╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ /opt/hostedtoolcache/Python/3.14.0/x64/bin/nf-core:7 in <module>             │
│                                                                              │
│   4 if __name__ == '__main__':                                               │
│   5 │   if sys.argv[0].endswith('.exe'):                                     │
│   6 │   │   sys.argv[0] = sys.argv[0][:-4]                                   │
│ ❱ 7 │   sys.exit(run_nf_core())                                              │
│   8                                                                          │
│                                                                              │
│ /opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/nf_core/ │
│ __main__.py:130 in run_nf_core                                               │
│                                                                              │
│    127 │   │   │   log.debug(f"Could not check latest version: {e}")         │
│    128 │   │   stderr.print("\n")                                            │
│    129 │   # Launch the click cli                                            │
│ ❱  130 │   nf_core_cli(auto_envvar_prefix="NFCORE")                          │
│    131                                                                       │
│    132                                                                       │
│    133 @tui(command="interface", help="Launch the nf-core interface")        │
│                                                                              │
│ /opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/rich_cli │
│ ck/rich_command.py:402 in __call__                                           │
│                                                                              │
│   399 │   │   # Include this here because I run into a false warning         │
│   400 │   │   # in the PyCharm IDE otherwise; for some reason PyCharm doesn' │
│   401 │   │   # seem to think RichGroups are callable. (No issues with Mypy, │
│ ❱ 402 │   │   return super().__call__(*args, **kwargs)                       │
│   403 │                                                                      │
│   404 │   @overload                                                          │
│   405 │   def command(self, __func: Callable[..., Any]) -> RichCommand: ...  │
│                                                                              │
│ /opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/click/co │
│ re.py:1462 in __call__                                                       │
│                                                                              │
│   170 │   │   # Lint nf-core modules                                         │
│   171 │   │   if not local and len(remote_modules) > 0:                      │
│ ❱ 172 │   │   │   self.lint_modules(remote_modules, registry=registry, local │
│   173 │   │                                                                  │
│   174 │   │   if print_results:                                              │
│   175 │   │   │   self._print_results(show_passed=show_passed, sort_by=sort_ │
│                                                                              │
│ /opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/nf_core/ │
│ modules/lint/__init__.py:208 in lint_modules                                 │
│                                                                              │
│   205 │   │   │                                                              │
│   206 │   │   │   for mod in modules:                                        │
│   207 │   │   │   │   progress_bar.update(lint_progress, advance=1, test_nam │
│ ❱ 208 │   │   │   │   self.lint_module(mod, progress_bar, local=local, fix_v │
│   209 │                                                                      │
│   210 │   def lint_module(                                                   │
│   211 │   │   self,                                                          │
│                                                                              │
│ /opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/nf_core/ │
│ modules/lint/__init__.py:287 in lint_module                                  │
│                                                                              │
│   284 │   │   │   else:                                                      │
│   285 │   │   │   │   self.failed += warned                                  │
│   286 │   │   │                                                              │
│ ❱ 287 │   │   │   self.failed += [LintResult(mod, *m) for m in mod.failed]   │
│   288 │                                                                      │
│   289 │   def update_meta_yml_file(self, mod):                               │
│   290 │   │   """                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯
TypeError: LintResult.__init__() missing 1 required positional argument: 
'file_path'

Command used and terminal output

System information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions