toil 8.1.0b1__py3-none-any.whl → 9.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. toil/__init__.py +0 -35
  2. toil/batchSystems/abstractBatchSystem.py +1 -1
  3. toil/batchSystems/abstractGridEngineBatchSystem.py +1 -1
  4. toil/batchSystems/awsBatch.py +1 -1
  5. toil/batchSystems/cleanup_support.py +1 -1
  6. toil/batchSystems/kubernetes.py +53 -7
  7. toil/batchSystems/local_support.py +1 -1
  8. toil/batchSystems/mesos/batchSystem.py +13 -8
  9. toil/batchSystems/mesos/test/__init__.py +3 -2
  10. toil/batchSystems/registry.py +15 -118
  11. toil/batchSystems/singleMachine.py +1 -1
  12. toil/batchSystems/slurm.py +27 -26
  13. toil/bus.py +5 -3
  14. toil/common.py +59 -12
  15. toil/cwl/cwltoil.py +81 -38
  16. toil/cwl/utils.py +103 -3
  17. toil/job.py +64 -49
  18. toil/jobStores/abstractJobStore.py +35 -239
  19. toil/jobStores/aws/jobStore.py +2 -1
  20. toil/jobStores/fileJobStore.py +27 -2
  21. toil/jobStores/googleJobStore.py +110 -33
  22. toil/leader.py +9 -0
  23. toil/lib/accelerators.py +4 -2
  24. toil/lib/aws/utils.py.orig +504 -0
  25. toil/lib/bioio.py +1 -1
  26. toil/lib/docker.py +252 -91
  27. toil/lib/dockstore.py +11 -3
  28. toil/lib/exceptions.py +5 -3
  29. toil/lib/generatedEC2Lists.py +81 -19
  30. toil/lib/history.py +87 -13
  31. toil/lib/history_submission.py +23 -9
  32. toil/lib/io.py +34 -22
  33. toil/lib/misc.py +8 -2
  34. toil/lib/plugins.py +106 -0
  35. toil/lib/resources.py +2 -1
  36. toil/lib/threading.py +11 -10
  37. toil/lib/url.py +320 -0
  38. toil/options/common.py +8 -0
  39. toil/options/cwl.py +13 -1
  40. toil/options/runner.py +17 -10
  41. toil/options/wdl.py +22 -0
  42. toil/provisioners/aws/awsProvisioner.py +25 -2
  43. toil/server/api_spec/LICENSE +201 -0
  44. toil/server/api_spec/README.rst +5 -0
  45. toil/server/app.py +12 -6
  46. toil/server/cli/wes_cwl_runner.py +3 -2
  47. toil/server/wes/abstract_backend.py +21 -43
  48. toil/server/wes/toil_backend.py +2 -2
  49. toil/test/__init__.py +275 -115
  50. toil/test/batchSystems/batchSystemTest.py +228 -213
  51. toil/test/batchSystems/batch_system_plugin_test.py +7 -0
  52. toil/test/batchSystems/test_slurm.py +27 -0
  53. toil/test/cactus/pestis.tar.gz +0 -0
  54. toil/test/conftest.py +7 -0
  55. toil/test/cwl/2.fasta +11 -0
  56. toil/test/cwl/2.fastq +12 -0
  57. toil/test/cwl/conftest.py +1 -1
  58. toil/test/cwl/cwlTest.py +1175 -870
  59. toil/test/cwl/directory/directory/file.txt +15 -0
  60. toil/test/cwl/download_directory_file.json +4 -0
  61. toil/test/cwl/download_directory_s3.json +4 -0
  62. toil/test/cwl/download_file.json +6 -0
  63. toil/test/cwl/download_http.json +6 -0
  64. toil/test/cwl/download_https.json +6 -0
  65. toil/test/cwl/download_s3.json +6 -0
  66. toil/test/cwl/download_subdirectory_file.json +5 -0
  67. toil/test/cwl/download_subdirectory_s3.json +5 -0
  68. toil/test/cwl/empty.json +1 -0
  69. toil/test/cwl/mock_mpi/fake_mpi.yml +8 -0
  70. toil/test/cwl/mock_mpi/fake_mpi_run.py +42 -0
  71. toil/test/cwl/optional-file-exists.json +6 -0
  72. toil/test/cwl/optional-file-missing.json +6 -0
  73. toil/test/cwl/preemptible_expression.json +1 -0
  74. toil/test/cwl/revsort-job-missing.json +6 -0
  75. toil/test/cwl/revsort-job.json +6 -0
  76. toil/test/cwl/s3_secondary_file.json +16 -0
  77. toil/test/cwl/seqtk_seq_job.json +6 -0
  78. toil/test/cwl/stream.json +6 -0
  79. toil/test/cwl/test_filename_conflict_resolution.ms/table.dat +0 -0
  80. toil/test/cwl/test_filename_conflict_resolution.ms/table.f0 +0 -0
  81. toil/test/cwl/test_filename_conflict_resolution.ms/table.f1 +0 -0
  82. toil/test/cwl/test_filename_conflict_resolution.ms/table.f1i +0 -0
  83. toil/test/cwl/test_filename_conflict_resolution.ms/table.f2 +0 -0
  84. toil/test/cwl/test_filename_conflict_resolution.ms/table.f2_TSM0 +0 -0
  85. toil/test/cwl/test_filename_conflict_resolution.ms/table.f3 +0 -0
  86. toil/test/cwl/test_filename_conflict_resolution.ms/table.f3_TSM0 +0 -0
  87. toil/test/cwl/test_filename_conflict_resolution.ms/table.f4 +0 -0
  88. toil/test/cwl/test_filename_conflict_resolution.ms/table.f4_TSM0 +0 -0
  89. toil/test/cwl/test_filename_conflict_resolution.ms/table.f5 +0 -0
  90. toil/test/cwl/test_filename_conflict_resolution.ms/table.info +0 -0
  91. toil/test/cwl/test_filename_conflict_resolution.ms/table.lock +0 -0
  92. toil/test/cwl/whale.txt +16 -0
  93. toil/test/docs/scripts/example_alwaysfail.py +38 -0
  94. toil/test/docs/scripts/example_alwaysfail_with_files.wdl +33 -0
  95. toil/test/docs/scripts/example_cachingbenchmark.py +117 -0
  96. toil/test/docs/scripts/stagingExampleFiles/in.txt +1 -0
  97. toil/test/docs/scripts/stagingExampleFiles/out.txt +2 -0
  98. toil/test/docs/scripts/tutorial_arguments.py +23 -0
  99. toil/test/docs/scripts/tutorial_debugging.patch +12 -0
  100. toil/test/docs/scripts/tutorial_debugging_hangs.wdl +126 -0
  101. toil/test/docs/scripts/tutorial_debugging_works.wdl +129 -0
  102. toil/test/docs/scripts/tutorial_docker.py +20 -0
  103. toil/test/docs/scripts/tutorial_dynamic.py +24 -0
  104. toil/test/docs/scripts/tutorial_encapsulation.py +28 -0
  105. toil/test/docs/scripts/tutorial_encapsulation2.py +29 -0
  106. toil/test/docs/scripts/tutorial_helloworld.py +15 -0
  107. toil/test/docs/scripts/tutorial_invokeworkflow.py +27 -0
  108. toil/test/docs/scripts/tutorial_invokeworkflow2.py +30 -0
  109. toil/test/docs/scripts/tutorial_jobfunctions.py +22 -0
  110. toil/test/docs/scripts/tutorial_managing.py +29 -0
  111. toil/test/docs/scripts/tutorial_managing2.py +56 -0
  112. toil/test/docs/scripts/tutorial_multiplejobs.py +25 -0
  113. toil/test/docs/scripts/tutorial_multiplejobs2.py +21 -0
  114. toil/test/docs/scripts/tutorial_multiplejobs3.py +22 -0
  115. toil/test/docs/scripts/tutorial_promises.py +25 -0
  116. toil/test/docs/scripts/tutorial_promises2.py +30 -0
  117. toil/test/docs/scripts/tutorial_quickstart.py +22 -0
  118. toil/test/docs/scripts/tutorial_requirements.py +44 -0
  119. toil/test/docs/scripts/tutorial_services.py +45 -0
  120. toil/test/docs/scripts/tutorial_staging.py +45 -0
  121. toil/test/docs/scripts/tutorial_stats.py +64 -0
  122. toil/test/docs/scriptsTest.py +2 -1
  123. toil/test/lib/aws/test_iam.py +3 -1
  124. toil/test/lib/dockerTest.py +205 -122
  125. toil/test/lib/test_history.py +101 -77
  126. toil/test/lib/test_url.py +69 -0
  127. toil/test/lib/url_plugin_test.py +105 -0
  128. toil/test/provisioners/aws/awsProvisionerTest.py +13 -10
  129. toil/test/provisioners/clusterTest.py +17 -4
  130. toil/test/provisioners/gceProvisionerTest.py +17 -15
  131. toil/test/server/serverTest.py +78 -36
  132. toil/test/sort/sort.py +4 -1
  133. toil/test/src/busTest.py +17 -17
  134. toil/test/src/deferredFunctionTest.py +145 -132
  135. toil/test/src/importExportFileTest.py +71 -63
  136. toil/test/src/jobEncapsulationTest.py +27 -28
  137. toil/test/src/jobServiceTest.py +149 -133
  138. toil/test/src/jobTest.py +219 -211
  139. toil/test/src/miscTests.py +66 -60
  140. toil/test/src/promisedRequirementTest.py +163 -169
  141. toil/test/src/regularLogTest.py +24 -24
  142. toil/test/src/resourceTest.py +82 -76
  143. toil/test/src/restartDAGTest.py +51 -47
  144. toil/test/src/resumabilityTest.py +24 -19
  145. toil/test/src/retainTempDirTest.py +60 -57
  146. toil/test/src/systemTest.py +17 -13
  147. toil/test/src/threadingTest.py +29 -32
  148. toil/test/utils/ABCWorkflowDebug/B_file.txt +1 -0
  149. toil/test/utils/ABCWorkflowDebug/debugWorkflow.py +204 -0
  150. toil/test/utils/ABCWorkflowDebug/mkFile.py +16 -0
  151. toil/test/utils/ABCWorkflowDebug/sleep.cwl +12 -0
  152. toil/test/utils/ABCWorkflowDebug/sleep.yaml +1 -0
  153. toil/test/utils/toilDebugTest.py +117 -102
  154. toil/test/utils/toilKillTest.py +54 -53
  155. toil/test/utils/utilsTest.py +303 -229
  156. toil/test/wdl/lint_error.wdl +9 -0
  157. toil/test/wdl/md5sum/empty_file.json +1 -0
  158. toil/test/wdl/md5sum/md5sum-gs.json +1 -0
  159. toil/test/wdl/md5sum/md5sum.1.0.wdl +32 -0
  160. toil/test/wdl/md5sum/md5sum.input +1 -0
  161. toil/test/wdl/md5sum/md5sum.json +1 -0
  162. toil/test/wdl/md5sum/md5sum.wdl +25 -0
  163. toil/test/wdl/miniwdl_self_test/inputs-namespaced.json +1 -0
  164. toil/test/wdl/miniwdl_self_test/inputs.json +1 -0
  165. toil/test/wdl/miniwdl_self_test/self_test.wdl +40 -0
  166. toil/test/wdl/standard_library/as_map.json +16 -0
  167. toil/test/wdl/standard_library/as_map_as_input.wdl +23 -0
  168. toil/test/wdl/standard_library/as_pairs.json +7 -0
  169. toil/test/wdl/standard_library/as_pairs_as_input.wdl +23 -0
  170. toil/test/wdl/standard_library/ceil.json +3 -0
  171. toil/test/wdl/standard_library/ceil_as_command.wdl +16 -0
  172. toil/test/wdl/standard_library/ceil_as_input.wdl +16 -0
  173. toil/test/wdl/standard_library/collect_by_key.json +1 -0
  174. toil/test/wdl/standard_library/collect_by_key_as_input.wdl +23 -0
  175. toil/test/wdl/standard_library/cross.json +11 -0
  176. toil/test/wdl/standard_library/cross_as_input.wdl +19 -0
  177. toil/test/wdl/standard_library/flatten.json +7 -0
  178. toil/test/wdl/standard_library/flatten_as_input.wdl +18 -0
  179. toil/test/wdl/standard_library/floor.json +3 -0
  180. toil/test/wdl/standard_library/floor_as_command.wdl +16 -0
  181. toil/test/wdl/standard_library/floor_as_input.wdl +16 -0
  182. toil/test/wdl/standard_library/keys.json +8 -0
  183. toil/test/wdl/standard_library/keys_as_input.wdl +24 -0
  184. toil/test/wdl/standard_library/length.json +7 -0
  185. toil/test/wdl/standard_library/length_as_input.wdl +16 -0
  186. toil/test/wdl/standard_library/length_as_input_with_map.json +7 -0
  187. toil/test/wdl/standard_library/length_as_input_with_map.wdl +17 -0
  188. toil/test/wdl/standard_library/length_invalid.json +3 -0
  189. toil/test/wdl/standard_library/range.json +3 -0
  190. toil/test/wdl/standard_library/range_0.json +3 -0
  191. toil/test/wdl/standard_library/range_as_input.wdl +17 -0
  192. toil/test/wdl/standard_library/range_invalid.json +3 -0
  193. toil/test/wdl/standard_library/read_boolean.json +3 -0
  194. toil/test/wdl/standard_library/read_boolean_as_command.wdl +17 -0
  195. toil/test/wdl/standard_library/read_float.json +3 -0
  196. toil/test/wdl/standard_library/read_float_as_command.wdl +17 -0
  197. toil/test/wdl/standard_library/read_int.json +3 -0
  198. toil/test/wdl/standard_library/read_int_as_command.wdl +17 -0
  199. toil/test/wdl/standard_library/read_json.json +3 -0
  200. toil/test/wdl/standard_library/read_json_as_output.wdl +31 -0
  201. toil/test/wdl/standard_library/read_lines.json +3 -0
  202. toil/test/wdl/standard_library/read_lines_as_output.wdl +31 -0
  203. toil/test/wdl/standard_library/read_map.json +3 -0
  204. toil/test/wdl/standard_library/read_map_as_output.wdl +31 -0
  205. toil/test/wdl/standard_library/read_string.json +3 -0
  206. toil/test/wdl/standard_library/read_string_as_command.wdl +17 -0
  207. toil/test/wdl/standard_library/read_tsv.json +3 -0
  208. toil/test/wdl/standard_library/read_tsv_as_output.wdl +31 -0
  209. toil/test/wdl/standard_library/round.json +3 -0
  210. toil/test/wdl/standard_library/round_as_command.wdl +16 -0
  211. toil/test/wdl/standard_library/round_as_input.wdl +16 -0
  212. toil/test/wdl/standard_library/size.json +3 -0
  213. toil/test/wdl/standard_library/size_as_command.wdl +17 -0
  214. toil/test/wdl/standard_library/size_as_output.wdl +36 -0
  215. toil/test/wdl/standard_library/stderr.json +3 -0
  216. toil/test/wdl/standard_library/stderr_as_output.wdl +30 -0
  217. toil/test/wdl/standard_library/stdout.json +3 -0
  218. toil/test/wdl/standard_library/stdout_as_output.wdl +30 -0
  219. toil/test/wdl/standard_library/sub.json +3 -0
  220. toil/test/wdl/standard_library/sub_as_input.wdl +17 -0
  221. toil/test/wdl/standard_library/sub_as_input_with_file.wdl +17 -0
  222. toil/test/wdl/standard_library/transpose.json +6 -0
  223. toil/test/wdl/standard_library/transpose_as_input.wdl +18 -0
  224. toil/test/wdl/standard_library/write_json.json +6 -0
  225. toil/test/wdl/standard_library/write_json_as_command.wdl +17 -0
  226. toil/test/wdl/standard_library/write_lines.json +7 -0
  227. toil/test/wdl/standard_library/write_lines_as_command.wdl +17 -0
  228. toil/test/wdl/standard_library/write_map.json +6 -0
  229. toil/test/wdl/standard_library/write_map_as_command.wdl +17 -0
  230. toil/test/wdl/standard_library/write_tsv.json +6 -0
  231. toil/test/wdl/standard_library/write_tsv_as_command.wdl +17 -0
  232. toil/test/wdl/standard_library/zip.json +12 -0
  233. toil/test/wdl/standard_library/zip_as_input.wdl +19 -0
  234. toil/test/wdl/test.csv +3 -0
  235. toil/test/wdl/test.tsv +3 -0
  236. toil/test/wdl/testfiles/croo.wdl +38 -0
  237. toil/test/wdl/testfiles/drop_files.wdl +62 -0
  238. toil/test/wdl/testfiles/drop_files_subworkflow.wdl +13 -0
  239. toil/test/wdl/testfiles/empty.txt +0 -0
  240. toil/test/wdl/testfiles/not_enough_outputs.wdl +33 -0
  241. toil/test/wdl/testfiles/random.wdl +66 -0
  242. toil/test/wdl/testfiles/read_file.wdl +18 -0
  243. toil/test/wdl/testfiles/string_file_coercion.json +1 -0
  244. toil/test/wdl/testfiles/string_file_coercion.wdl +35 -0
  245. toil/test/wdl/testfiles/test.json +4 -0
  246. toil/test/wdl/testfiles/test_boolean.txt +1 -0
  247. toil/test/wdl/testfiles/test_float.txt +1 -0
  248. toil/test/wdl/testfiles/test_int.txt +1 -0
  249. toil/test/wdl/testfiles/test_lines.txt +5 -0
  250. toil/test/wdl/testfiles/test_map.txt +2 -0
  251. toil/test/wdl/testfiles/test_string.txt +1 -0
  252. toil/test/wdl/testfiles/url_to_file.wdl +13 -0
  253. toil/test/wdl/testfiles/url_to_optional_file.wdl +14 -0
  254. toil/test/wdl/testfiles/vocab.json +1 -0
  255. toil/test/wdl/testfiles/vocab.wdl +66 -0
  256. toil/test/wdl/testfiles/wait.wdl +34 -0
  257. toil/test/wdl/wdl_specification/type_pair.json +23 -0
  258. toil/test/wdl/wdl_specification/type_pair_basic.wdl +36 -0
  259. toil/test/wdl/wdl_specification/type_pair_with_files.wdl +36 -0
  260. toil/test/wdl/wdl_specification/v1_spec.json +1 -0
  261. toil/test/wdl/wdl_specification/v1_spec_declaration.wdl +39 -0
  262. toil/test/wdl/wdltoil_test.py +751 -529
  263. toil/test/wdl/wdltoil_test_kubernetes.py +2 -2
  264. toil/utils/toilSshCluster.py +23 -0
  265. toil/utils/toilUpdateEC2Instances.py +1 -0
  266. toil/version.py +5 -5
  267. toil/wdl/wdltoil.py +518 -437
  268. toil/worker.py +11 -6
  269. {toil-8.1.0b1.dist-info → toil-9.0.0.dist-info}/METADATA +25 -24
  270. toil-9.0.0.dist-info/RECORD +444 -0
  271. {toil-8.1.0b1.dist-info → toil-9.0.0.dist-info}/WHEEL +1 -1
  272. toil-8.1.0b1.dist-info/RECORD +0 -259
  273. {toil-8.1.0b1.dist-info → toil-9.0.0.dist-info}/entry_points.txt +0 -0
  274. {toil-8.1.0b1.dist-info → toil-9.0.0.dist-info/licenses}/LICENSE +0 -0
  275. {toil-8.1.0b1.dist-info → toil-9.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,66 @@
1
+ version 1.0
2
+
3
+ workflow random {
4
+ input {
5
+ Int wf_input = 1
6
+ Int task_1_input = 1
7
+ Int task_2_input = 1
8
+ }
9
+
10
+ call dice_task {
11
+ input:
12
+ task_input=task_1_input
13
+ }
14
+
15
+ call read_task {
16
+ input:
17
+ to_read=dice_task.out,
18
+ task_input=task_2_input
19
+ }
20
+
21
+ output {
22
+ String value_seen = read_task.read
23
+ String value_written = read_task.wrote
24
+ }
25
+ }
26
+
27
+ task dice_task {
28
+ input {
29
+ Int task_input
30
+ }
31
+
32
+ command <<<
33
+ cat /proc/sys/kernel/random/uuid
34
+ >>>
35
+
36
+ output {
37
+ File out = stdout()
38
+ }
39
+
40
+ runtime {
41
+ docker: "ubuntu:24.04"
42
+ }
43
+ }
44
+
45
+ task read_task {
46
+ input {
47
+ File to_read
48
+ Int task_input
49
+ }
50
+
51
+ String value_read = read_lines(to_read)[0]
52
+
53
+ command <<<
54
+ echo "~{value_read} $(cat /proc/sys/kernel/random/uuid)"
55
+ >>>
56
+
57
+ output {
58
+ String read = value_read
59
+ String wrote = read_lines(stdout())[0]
60
+ }
61
+
62
+ runtime {
63
+ docker: "ubuntu:24.04"
64
+ }
65
+ }
66
+
@@ -0,0 +1,18 @@
1
+ version 1.0
2
+
3
+ # Workflow to read a file from a string path
4
+
5
+ workflow read_file {
6
+
7
+ input {
8
+ String input_string
9
+ }
10
+
11
+ Array[String] the_lines = read_lines(input_string)
12
+
13
+ output {
14
+ Array[String] lines = the_lines
15
+ File remade_file = write_lines(the_lines)
16
+ }
17
+
18
+ }
@@ -0,0 +1 @@
1
+ {"StringFileCoercion.opt_file": "empty.txt"}
@@ -0,0 +1,35 @@
1
+ version 1.0
2
+
3
+ workflow StringFileCoercion {
4
+
5
+ input {
6
+ File? opt_file
7
+ }
8
+
9
+ if (defined(opt_file)) {
10
+ call UseFile {
11
+ input:
12
+ # Exciting trick from https://github.com/broadinstitute/GATK-for-Microbes/blob/51f60135abd3f61efd0dcbe1e87c9aa89f5fb91c/wdl/shortReads/MicrobialGenomePipeline.wdl#L79C35-L79C44
13
+ input_file = select_first([opt_file, ""])
14
+ }
15
+ }
16
+
17
+ output {
18
+ File? output_file = UseFile.output_file
19
+ }
20
+ }
21
+
22
+
23
+ task UseFile {
24
+ input {
25
+ File input_file
26
+ }
27
+
28
+ command <<<
29
+ cat ~{input_file} | wc -c > output.txt
30
+ >>>
31
+
32
+ output {
33
+ File output_file = "output.txt"
34
+ }
35
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "key1": "value1",
3
+ "key2": "value2"
4
+ }
@@ -0,0 +1 @@
1
+ true
@@ -0,0 +1 @@
1
+ 11.2345
@@ -0,0 +1 @@
1
+ 11
@@ -0,0 +1,5 @@
1
+ line 1
2
+ line 2 with tabs
3
+ line 3
4
+
5
+ line 5
@@ -0,0 +1,2 @@
1
+ key1 value1
2
+ key2 value2
@@ -0,0 +1 @@
1
+ A Whale of a Tale.
@@ -0,0 +1,13 @@
1
+ version 1.0
2
+
3
+ workflow url_to_file {
4
+ input {
5
+ }
6
+
7
+ File the_file = "https://hgdownload.soe.ucsc.edu/goldenPath/hs1/bigZips/hs1.chrom.sizes"
8
+
9
+ output {
10
+ File out_file = the_file
11
+ String first_line = read_lines(the_file)[0]
12
+ }
13
+ }
@@ -0,0 +1,14 @@
1
+ version 1.0
2
+
3
+ workflow url_to_optional_file {
4
+ input {
5
+ Int http_code = 404
6
+ String base_url = "https://httpstat.us/"
7
+ }
8
+
9
+ File? the_file = base_url + http_code
10
+
11
+ output {
12
+ File? out_file = the_file
13
+ }
14
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,66 @@
1
+ workflow vocabulary {
2
+
3
+ #####################################################################
4
+ # $primitive_type = ('Boolean' | 'Int' | 'Float' | 'File' | 'String')
5
+ Boolean bool1
6
+ Int int1
7
+ Float float1
8
+ File file1
9
+ String string1
10
+
11
+ Boolean bool2 = true
12
+ Int int2 = 1
13
+ Float float2 = 1.1
14
+ File file2 = 'src/toil/test/wdl/test.tsv'
15
+ String string2 = 'x'
16
+
17
+ Boolean bool3 = true
18
+ Int int3 = 1
19
+ Float float3 = 1.1
20
+ File file3 = 'src/toil/test/wdl/test.csv'
21
+ String string3 = 'x'
22
+
23
+ #####################################################################
24
+ # $array_type = 'Array' '[' ($primitive_type | $object_type | $array_type) ']'
25
+ Array[Boolean] arraybool1
26
+ Array[Int] arrayint1
27
+ Array[Float] arrayfloat1
28
+ Array[File] arrayfile1
29
+ Array[String] arraystring1
30
+
31
+ Array[Array[Boolean]] arrayarraybool1
32
+ Array[Array[Int]] arrayarrayint1
33
+ Array[Array[Float]] arrayarrayfloat1
34
+ Array[Array[File]] arrayarrayfile1
35
+ Array[Array[String]] arrayarraystring1
36
+
37
+ #####################################################################
38
+ # $type_postfix_quantifier = '?' | '+'
39
+ String joinedstring = string2 + string3 + "x"
40
+ Int joinedint = int2 + int3 + 1
41
+ Float joinedfloat = float2 + float3 + 1.1
42
+
43
+ Boolean? boolo1
44
+ Int? into1
45
+ Float? floato1
46
+ File? fileo1
47
+ String? stringo1
48
+
49
+ Boolean? boolo2 = true
50
+ Int? into2 = 1
51
+ Float? floato2 = 1.1
52
+ File? fileo2 = 'src/toil/test/wdl/test.csv'
53
+ String? stringo2 = 'x'
54
+
55
+ #####################################################################
56
+ # $object_type = 'Object'
57
+ # $map_type = 'Map' '[' $primitive_type ',' ($primitive_type | $array_type | $map_type | $object_type) ']'
58
+ # currently unsupported
59
+
60
+ #####################################################################
61
+ # demonstrate function usage
62
+ Int additional_disk = select_first([into1, 20])
63
+ Int num_of_bqsr_scatters = length([1,1,1,1])
64
+ Int bqsr_divisor = if int3 > 1 then additional_disk else 1
65
+ Float disk_size = (floato2 / bqsr_divisor) + additional_disk
66
+ }
@@ -0,0 +1,34 @@
1
+ version 1.0
2
+
3
+ workflow wait {
4
+ input {
5
+ }
6
+
7
+ call waiter_task {
8
+ input:
9
+ }
10
+
11
+ output {
12
+ String result = read_lines(waiter_task.out)[0]
13
+ }
14
+ }
15
+
16
+ task waiter_task {
17
+ input {
18
+ }
19
+
20
+ command <<<
21
+ sleep 10 &
22
+ sleep 2 &
23
+ wait
24
+ echo "waited"
25
+ >>>
26
+
27
+ output {
28
+ File out = stdout()
29
+ }
30
+
31
+ runtime {
32
+ docker: "ubuntu:22.04"
33
+ }
34
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "typePairWorkflow.test_pair": {
3
+ "left": 23,
4
+ "right": "twenty-three"
5
+ },
6
+ "typePairWorkflow.test_pair_pair": {
7
+ "left": "a",
8
+ "right": {
9
+ "left": "a.bam",
10
+ "right": "a.bai"
11
+ }
12
+ },
13
+ "typePairWorkflow.test_pair_file": {
14
+ "left": "whale",
15
+ "right": "src/toil/test/wdl/testfiles/test_string.txt"
16
+ },
17
+ "typePairWorkflow.test_array_pair_file": [
18
+ {
19
+ "left": "test_A",
20
+ "right": "src/toil/test/wdl/testfiles/test_boolean.txt"
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,36 @@
1
+ workflow typePairWorkflow {
2
+ # test conformance with the WDL language specification - Pair Literals
3
+
4
+ Pair[Int, String] test_pair
5
+
6
+ # a pair inside a pair
7
+ Pair[String, Pair[String, String]] test_pair_pair
8
+
9
+ # a pair defined inside WDL
10
+ Pair[Int, String] test_pair_from_wdl = (23, "twenty-three")
11
+
12
+ call copy_output {
13
+ input:
14
+ test_pair=test_pair,
15
+ test_pair_pair=test_pair_pair,
16
+ test_pair_from_wdl=test_pair_from_wdl
17
+ }
18
+ }
19
+
20
+ task copy_output {
21
+ Pair[Int, String] test_pair
22
+ Pair[String, Pair[String, String]] test_pair_pair
23
+ Pair[Int, String] test_pair_from_wdl
24
+
25
+ command {
26
+ cp ${write_json([
27
+ test_pair.left,
28
+ test_pair.right,
29
+ test_pair_pair.right.right,
30
+ test_pair_from_wdl])} output.txt
31
+ }
32
+
33
+ output {
34
+ File the_output = 'output.txt'
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ workflow typePairWorkflow {
2
+ # test conformance with the WDL language specification - Pair Literals
3
+
4
+ # file import
5
+ Pair[String, File] test_pair_file
6
+
7
+ # file import with arrays
8
+ Array[Pair[String, File]] test_array_pair_file
9
+
10
+ call copy_output {
11
+ input:
12
+ test_pair_file=test_pair_file,
13
+ test_array_pair_file=test_array_pair_file
14
+ }
15
+ }
16
+
17
+ task copy_output {
18
+ Pair[String, File] test_pair_file
19
+ Array[Pair[String, File]] test_array_pair_file
20
+
21
+ # pairs defined in WDL in task
22
+ Array[Pair[String, File]] test_array_pair_file_from_wdl_in_task = [
23
+ ('test_A', 'src/toil/test/wdl/testfiles/test_int.txt'),
24
+ ('test_B', 'src/toil/test/wdl/testfiles/test_string.txt')]
25
+
26
+ command {
27
+ cp ${write_json([
28
+ read_lines(test_pair_file.right),
29
+ read_lines(select_first(test_array_pair_file).right),
30
+ read_lines(select_first(test_array_pair_file_from_wdl_in_task).right)])} output.txt
31
+ }
32
+
33
+ output {
34
+ File the_output = 'output.txt'
35
+ }
36
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,39 @@
1
+
2
+ # Basic declaration example modified from the WDL 1.0 spec:
3
+ # https://github.com/openwdl/wdl/blob/main/versions/1.0/SPEC.md#declarations
4
+
5
+ version 1.0
6
+
7
+ task test {
8
+ input {
9
+ String var
10
+ }
11
+ command <<<
12
+ echo "Hello, ~{var}!"
13
+ >>>
14
+
15
+ output {
16
+ String value = read_string(stdout())
17
+ }
18
+ }
19
+
20
+ task test2 {
21
+ input {
22
+ Array[String] array
23
+ }
24
+
25
+ command <<<
26
+ echo "~{sep='; ' array}" > output.txt
27
+ >>>
28
+
29
+ output {
30
+ File the_output = 'output.txt'
31
+ }
32
+ }
33
+
34
+ workflow wf {
35
+ call test as x {input: var="x"}
36
+ call test as y {input: var="y"}
37
+ Array[String] strs = [x.value, y.value]
38
+ call test2 as z {input: array=strs}
39
+ }