Skip to content

Commit 090d9f2

Browse files
committed
Typed workflows [wip]
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
1 parent 021c77c commit 090d9f2

72 files changed

Lines changed: 4010 additions & 749 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

adr/20260306-record-types.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ This function effectively creates an immutable map (`Map<String,?>`):
6767

6868
- The keys are just field names
6969
- The values can have any type
70-
- The record cant be modified -- use the `+` operator instead
70+
- The record can't be modified -- use the `+` operator instead
7171

7272
Records can have arbitrary fields, unlike custom classes, which makes them easy to use with dataflow operators.
7373

adr/20260310-typed-workflows.md

Lines changed: 494 additions & 0 deletions
Large diffs are not rendered by default.

docs/developer/nextflow.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ Some classes may be excluded from the above diagram for brevity.
1616

1717
The `Nextflow` class implements several methods that are exposed to Nextflow scripts. See {ref}`stdlib-namespaces-global` for details.
1818

19-
The `Channel` class implements the channel factory methods, and it is exposed directly to Nextflow scripts. See {ref}`dataflow-page` for details.
19+
The `Channel` class implements the channel factory methods, and it is exposed directly to Nextflow scripts. See {ref}`channel-factory` for details.
2020

2121
The `Session` class is the top-level representation of a Nextflow run, or "session". See [nextflow.script](nextflow.script.md) for more details about how a `Session` is created.

docs/index.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ working-with-files
7979
process
8080
process-typed
8181
workflow
82+
workflow-typed
8283
module
8384
notifications
8485
secrets
@@ -133,6 +134,7 @@ reference/stdlib
133134
reference/process
134135
reference/channel
135136
reference/operator
137+
reference/operator-typed
136138
```
137139

138140
```{toctree}
@@ -175,6 +177,8 @@ tutorials/rnaseq-nf
175177
tutorials/data-lineage
176178
tutorials/workflow-outputs
177179
tutorials/static-types
180+
tutorials/records
181+
tutorials/typed-operators
178182
tutorials/metrics
179183
tutorials/flux
180184
```

docs/migrations/25-10.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ workflow {
3535

3636
This syntax allows you to declare all parameters in one place with explicit type annotations, and it allows Nextflow to validate parameters at runtime.
3737

38-
See {ref}`workflow-params-def` for details.
38+
See {ref}`workflow-typed-params` for details.
3939

4040
(workflow-outputs-final)=
4141

@@ -154,7 +154,7 @@ Type annotations can be appended with `?` to denote values can be `null`:
154154
def x_opt: String? = null
155155
```
156156

157-
In the type system, queue channels are represented as `Channel`, while value channels are represented as `Value`. To make the terminology clearer and more concise, queue channels are now called *dataflow channels* (or simply *channels*), and value channels are now called *dataflow values*. See {ref}`dataflow-page` for more information.
157+
In the type system, queue channels are represented as `Channel`, while value channels are represented as `Value`. To make the terminology clearer and more concise, queue channels are now called *dataflow channels* (or simply *channels*), and value channels are now called *dataflow values*. See {ref}`dataflow-legacy` for more information.
158158

159159
Groovy-style type annotations (e.g., `String x`) are still supported for functions and local variables. However, the language server and `nextflow lint` will automatically convert them to Nextflow-style annotations during code formatting.
160160

docs/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ The above example defines two processes. Their execution order is not determined
6363

6464
When the workflow is executed, it creates two processes (`blast_search` and `extract_top_hits`) connected by the channel `query_ch`. Each process executes a task and emits a value for each input that it receives. Whenever `blast_search` emits a value, `extract_top_hits` receives it through the `query_ch` channel.
6565

66-
See {ref}`process-page`, {ref}`dataflow-page`, and {ref}`workflow-page` to learn more about these features.
66+
See {ref}`process-page`, {ref}`dataflow-legacy`, and {ref}`workflow-page` to learn more about these features.
6767

6868
## Execution abstraction
6969

docs/reference/cli.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,6 +1276,7 @@ The `run` command is used to execute a local pipeline script or remote pipeline
12761276

12771277
`-dump-channels`
12781278
: Dump channels for debugging purpose.
1279+
: This option can specify one or more tags as a comma-separated list to only dump channels with a matching tag.
12791280

12801281
`-dump-hashes`
12811282
: Dump task hash keys for debugging purposes.

0 commit comments

Comments
 (0)