Skip to content

Commit 2d7cde3

Browse files
committed
refresh v1.1.0-dev1
1 parent bffea7f commit 2d7cde3

File tree

4 files changed

+90
-116
lines changed

4 files changed

+90
-116
lines changed

cwltool/schemas/v1.1.0-dev1/CommandLineTool.yml

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ $graph:
5656
* When defining record types with `CommandInputRecordSchema`, fields of
5757
type `File` may now include `format`, `loadContents`,
5858
`secondaryFiles` and `streamable`.
59-
* `CommandInputRecordSchema`, `CommandOutputRecordSchema`,
60-
`CommandInputEnumSchema and `CommandInputArraySchema` now have an optional
59+
* `CommandInputRecordSchema`, `CommandOutputRecordSchema`,
60+
`CommandInputEnumSchema and `CommandInputArraySchema` now have an optional
6161
`doc` field.
6262
* `inputBinding` has been added as an optional field for
6363
`CommandInputRecordSchema` (was previously in CWL `draft-3` but
@@ -88,8 +88,8 @@ $graph:
8888
* Added `InputParameter.loadContents` field. Use of `loadContents` in
8989
`InputBinding` is deprecated; it is preserved for v1.0 backwards
9090
compatability and will be removed in CWL v2.0.
91-
* [Added](#ToolTimeLimit) `ToolTimeLimit` feature, allowing to set an upper limit on the
92-
execution time of a CommandLineTool.
91+
* [Added](#ToolTimeLimit) `ToolTimeLimit` feature, allows setting
92+
an upper limit on the execution time of a CommandLineTool.
9393
* [Added](#WorkReuse) `WorkReuse` feature, allowing to enable or disable the reuse
9494
behavior for a particular tool or step for implementations that
9595
support reusing output from past work.
@@ -197,8 +197,14 @@ $graph:
197197
198198
fields:
199199
- name: position
200-
type: int?
201-
doc: "The sorting key. Default position is 0."
200+
type: [ int, Expression, string, "null" ]
201+
doc: |
202+
The sorting key. Default position is 0. If the inputBinding is
203+
associated with an input parameter, then the value of `self` in the
204+
expression will be the value of the input parameter. Input parameter
205+
defaults (as specified by the `InputParameter.default` field) must be
206+
applied before evaluating the expression. Expressions must return a
207+
single value of type int or a null.
202208
- name: prefix
203209
type: string?
204210
doc: "Command line prefix to add before the value."
@@ -1097,36 +1103,6 @@ $graph:
10971103
doc: Maximum reserved filesystem based storage for the designated output directory, in mebibytes (2**20)
10981104

10991105

1100-
- type: record
1101-
name: ToolTimeLimit
1102-
extends: ProcessRequirement
1103-
doc: |
1104-
Set an upper limit on the execution time of a CommandLineTool.
1105-
A tool execution which exceeds the time limit may
1106-
be preemptively terminated and considered failed. May also be
1107-
used by batch systems to make scheduling decisions.
1108-
1109-
Limit applies only to the command execution time. Time for
1110-
additional steps, such as file download/upload, docker pull or
1111-
expression evaluation is not considered for exceeding time limit.
1112-
1113-
If ToolTimeLimit is set on a workflow level, it propagates down to
1114-
individual processes, in line with requirement inheritance rules.
1115-
ToolTimeLimit is not used to limit the execution time of a Workflow.
1116-
fields:
1117-
- name: class
1118-
type: string
1119-
doc: "Always 'ToolTimeLimit'"
1120-
jsonldPredicate:
1121-
"_id": "@type"
1122-
"_type": "@vocab"
1123-
- name: timelimit
1124-
type: [long, string, Expression]
1125-
doc: |
1126-
The time limit, in seconds. A time limit of zero means no
1127-
time limit. Negative time limits are an error.
1128-
1129-
11301106
- type: record
11311107
name: WorkReuse
11321108
extends: ProcessRequirement
@@ -1226,3 +1202,27 @@ $graph:
12261202
"_type": "@vocab"
12271203
inplaceUpdate:
12281204
type: boolean
1205+
1206+
- type: record
1207+
name: ToolTimeLimit
1208+
extends: ProcessRequirement
1209+
doc: |
1210+
Set an upper limit on the execution time of a CommandLineTool.
1211+
A CommandLineTool whose execution duration exceeds the time
1212+
limit may be preemptively terminated and considered failed.
1213+
May also be used by batch systems to make scheduling decisions.
1214+
The execution duration excludes external operations, such as
1215+
staging of files, pulling a docker image etc, and only counts
1216+
wall-time for the execution of the command line itself.
1217+
fields:
1218+
- name: class
1219+
type: string
1220+
doc: "Always 'ToolTimeLimit'"
1221+
jsonldPredicate:
1222+
"_id": "@type"
1223+
"_type": "@vocab"
1224+
- name: timelimit
1225+
type: [long, string, Expression]
1226+
doc: |
1227+
The time limit, in seconds. A time limit of zero means no
1228+
time limit. Negative time limits are an error.

cwltool/schemas/v1.1.0-dev1/README.md

Lines changed: 5 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,9 @@
1-
# Common Workflow Language Specifications, v1.1.0-dev1
1+
Hello!
22

3-
<!-- remove this before v1.1 is final! -->
4-
WARNING, this is a draft and in progress! Development of CWL v1.1 is coordinated at https://github.com/common-workflow-language/common-workflow-language/milestone/6
3+
This repo represent the current working proposal for v1.1 of the Common Workflow Language standard.
54

6-
The CWL specifications are divided up into several documents.
5+
Proposed changes that aren't yet implemented are tracked at https://github.com/common-workflow-language/common-workflow-language/milestone/6
76

8-
The [User Guide](http://www.commonwl.org/user_guide/) provides a gentle
9-
introduction to writing CWL command line tools and workflows.
7+
You can render this using https://github.com/common-workflow-language/cwl-website/blob/master/website.sh
108

11-
The [Command Line Tool Description Specification](CommandLineTool.html)
12-
specifies the document schema and execution semantics for wrapping and
13-
executing command line tools.
14-
15-
The [Workflow Description Specification](Workflow.html) specifies the document
16-
schema and execution semantics for composing workflows from components such as
17-
command line tools and other workflows.
18-
19-
The
20-
[Semantic Annotations for Linked Avro Data (SALAD) Specification](SchemaSalad.html)
21-
specifies the preprocessing steps that must be applied when loading CWL
22-
documents and the schema language used to write the above specifications.
23-
24-
Also available are inheritance graphs (as SVG images) for the [Schema Salad object model](salad.svg) and the [CWL object model](cwl.svg).
25-
26-
# Running the CWL conformance tests
27-
28-
1. Install a CWL runner of your choice. The reference runner can be installed as
29-
the default runner by doing:
30-
```
31-
pip install cwlref-runner
32-
```
33-
34-
2. Install the CWL test parser:
35-
36-
```
37-
pip install cwltest
38-
```
39-
You may need to activate a virtualenv first, or do a local install by adding `--user` after `install` above.
40-
41-
3. From within a copy of [this repository](https://github.com/common-workflow-language/cwl-v1.1) (e.g. cwl-v1.1) execute the main test script
42-
```
43-
./run_test.sh
44-
```
45-
46-
If the CWL runner isn't installed as `cwl-runner` then you can specify the name:
47-
48-
```
49-
./run_test.sh RUNNER=cwltool
50-
```
51-
52-
You can also specify additional options that are specific for the particular CWL runner you are using.
53-
For example, with CWL reference runner you can turn on parallel execution mode:
54-
55-
```
56-
./run_test.sh RUNNER=cwltool EXTRA=--parallel
57-
```
58-
59-
This can be combined with launching more than one CWL conformance test at once with `-j`:
60-
61-
```
62-
./run_test.sh -j4 RUNNER=cwltool EXTRA=--parallel
63-
```
64-
65-
66-
For details of options you can pass to the test script, do:
67-
```
68-
./run_test.sh --help
69-
```
70-
71-
The full test suite takes about 10 minutes to run
9+
The current rendering is at https://www.commonwl.org/v1.1.0-dev1/

cwltool/schemas/v1.1.0-dev1/Workflow.yml

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,16 @@ $graph:
4848
4949
## Changelog
5050
51-
* Default values for some fields are now expressed in the schema
51+
* Clarify intent of ExpressionTool and clarify that they can be run standalone.
52+
* Clarify how Requirements are inherited by step processes.
53+
* Clarify behavior around step inputs not consumed by the target
54+
run process.
55+
* Document explicitly that CWL allows pass-through of workflow inputs to outputs.
56+
* Added optional name and doc fields to `OutputRecordSchema`.
57+
* Default values for some fields are now expressed in the schema.
5258
* When defining record types, fields of type `File` may now include
5359
`format`, `secondaryFiles`, and `streamable`.
54-
* The Input schemas (Record, Array, Enum), now permits a `doc` field
60+
* The `Input` schemas (`Record`, `Array`, `Enum`), now permits a `doc` field.
5561
* Any `doc` field may be an array of strings in addition to the
5662
previously allowed single string.
5763
* The `run` field now introduces a subscope so that embedded
@@ -65,10 +71,22 @@ $graph:
6571
`WorkflowInputParameter.loadContents` instead.
6672
* The presence of `OutputRecordField.outputBinding` in v1.0 was due to
6773
a technical error and as it makes no semantic sense it was removed.
68-
* `WorkflowStepInput` now has a `label` field
69-
* [Addition](#Requirements_and_hints) of `cwl:requirments` field to
70-
input object documents
74+
* `WorkflowStepInput` now has a `label` field.
75+
* [Addition](#Requirements_and_hints) of `cwl:requirements` field to
76+
input object documents.
7177
* `secondaryFiles` can now be explicitly marked as `required` or not.
78+
* Add note that undefined details related to execution are left open to
79+
the platform.
80+
* [Added](#WorkReuse) `WorkReuse` feature, allowing to enable or disable the reuse
81+
behavior for a particular tool or step for implementations that
82+
support reusing output from past work.
83+
* [Added](#NetworkAccess) `NetworkAccess` feature, allowing to indicate whether a
84+
process requires outgoing network access.
85+
* [Added](#InplaceUpdateRequirement) `InplaceUpdateRequirement` feature, allowing tools to directly
86+
update files with `writable: true` in `InitialWorkDirRequirement`.
87+
* [Added](#LoadListingRequirement) `LoadListingRequirement`
88+
and [loadListing](#LoadContents) to control whether and how
89+
`Directory` listings should be loaded for use in expressions.
7290
7391
See also the [CWL Command Line Tool Description, v1.1.0-dev1 changelog](CommandLineTool.html#Changelog).
7492
@@ -79,7 +97,9 @@ $graph:
7997
Physics, and Astronomy. This specification is intended to define a data
8098
and execution model for Workflows that can be implemented on top of a
8199
variety of computing platforms, ranging from an individual workstation to
82-
cluster, grid, cloud, and high performance computing systems.
100+
cluster, grid, cloud, and high performance computing systems. Details related
101+
to execution of these workflow not laid out in this specification are open to
102+
interpretation by the computing platform implementing this specification.
83103
84104
- {$include: concepts.md}
85105

@@ -156,7 +176,13 @@ $graph:
156176
specializeTo: ExpressionToolOutputParameter
157177
documentRoot: true
158178
doc: |
159-
Execute an expression as a Workflow step.
179+
An ExpressionTool is a type of Process object that can be run by itself
180+
or as a Workflow step. It executes a pure Javascript expression that has
181+
access to the same input parameters as a workflow. It is meant to be used
182+
sparingly as a way to isolate complex Javascript expressions that need to
183+
operate on input data and produce some result; perhaps just a
184+
rearrangement of the inputs. No Docker software container is required
185+
or allowed.
160186
fields:
161187
- name: class
162188
jsonldPredicate:
@@ -184,8 +210,9 @@ $graph:
184210
docParent: "#Workflow"
185211
doc: |
186212
Describe an output parameter of a workflow. The parameter must be
187-
connected to one or more parameters defined in the workflow that will
188-
provide the value of the output parameter.
213+
connected to one or more parameters defined in the workflow that
214+
will provide the value of the output parameter. It is legal to
215+
connect a WorkflowInputParameter to a WorkflowOutputParameter.
189216
fields:
190217
- name: outputSource
191218
doc: |
@@ -260,7 +287,11 @@ $graph:
260287
doc: |
261288
The input of a workflow step connects an upstream parameter (from the
262289
workflow inputs, or the outputs of other workflows steps) with the input
263-
parameters of the underlying step.
290+
parameters of the process specified by the `run` field. Only input parameters
291+
declared by the target process will be passed through at runtime to the process
292+
though additonal parameters may be specified (for use within `valueFrom`
293+
expressions for instance) - unconnected or unused parameters do not represent an
294+
error condition.
264295
265296
## Input object
266297

cwltool/schemas/v1.1.0-dev1/concepts.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,14 @@ object document as an array of requirements under the field name
215215
should be combined with any requirements present in the corresponding Process
216216
as if they were specified there.
217217

218-
Requirements are inherited. A requirement specified in a Workflow applies
219-
to all workflow steps; a requirement specified on a workflow step will
220-
apply to the process implementation of that step and any of its substeps.
218+
Requirements specified in a parent Workflow are inherited by step processes
219+
if they are valid for that step. If the substep is a CommandLineTool
220+
only the `InlineJavascriptRequirement`, `SchemaDefRequirement`, `DockerRequirement`,
221+
`SoftwareRequirement`, `InitialWorkDirRequirement`, `EnvVarRequirement`,
222+
`ShellCommandRequirement`, `ResourceRequirement` are valid.
223+
224+
*As good practice, it is best to have process requirements be self-contained,
225+
such that each process can run successfully by itself.*
221226

222227
If the same process requirement appears at different levels of the
223228
workflow, the most specific instance of the requirement is used, that is,

0 commit comments

Comments
 (0)