arctrl 3.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 (511) hide show
  1. arctrl/__init__.py +23 -0
  2. arctrl/cwl.py +12 -0
  3. arctrl/py/CWL/__init__.py +0 -0
  4. arctrl/py/CWL/cwlprocessing_unit.py +221 -0
  5. arctrl/py/CWL/cwltypes.py +364 -0
  6. arctrl/py/CWL/decode.py +3532 -0
  7. arctrl/py/CWL/encode.py +1905 -0
  8. arctrl/py/CWL/expression_tool_description.py +192 -0
  9. arctrl/py/CWL/hash_helpers.py +60 -0
  10. arctrl/py/CWL/inputs.py +122 -0
  11. arctrl/py/CWL/operation_description.py +169 -0
  12. arctrl/py/CWL/outputs.py +171 -0
  13. arctrl/py/CWL/parameter_reference.py +74 -0
  14. arctrl/py/CWL/requirements.py +350 -0
  15. arctrl/py/CWL/tool_description.py +192 -0
  16. arctrl/py/CWL/workflow_description.py +181 -0
  17. arctrl/py/CWL/workflow_steps.py +354 -0
  18. arctrl/py/Contract/__init__.py +0 -0
  19. arctrl/py/Contract/arc.py +89 -0
  20. arctrl/py/Contract/arc_assay.py +125 -0
  21. arctrl/py/Contract/arc_investigation.py +88 -0
  22. arctrl/py/Contract/arc_run.py +291 -0
  23. arctrl/py/Contract/arc_study.py +126 -0
  24. arctrl/py/Contract/arc_workflow.py +213 -0
  25. arctrl/py/Contract/contract.py +153 -0
  26. arctrl/py/Contract/datamap.py +396 -0
  27. arctrl/py/Contract/git.py +116 -0
  28. arctrl/py/Contract/license.py +58 -0
  29. arctrl/py/Contract/validation_packages_config.py +107 -0
  30. arctrl/py/ContractIO/__init__.py +0 -0
  31. arctrl/py/ContractIO/contract_io.py +350 -0
  32. arctrl/py/ContractIO/file_system_helper.py +264 -0
  33. arctrl/py/Conversion/__init__.py +0 -0
  34. arctrl/py/Conversion/assay.py +151 -0
  35. arctrl/py/Conversion/basic.py +559 -0
  36. arctrl/py/Conversion/column_index.py +91 -0
  37. arctrl/py/Conversion/datamap.py +36 -0
  38. arctrl/py/Conversion/date_time.py +32 -0
  39. arctrl/py/Conversion/investigation.py +171 -0
  40. arctrl/py/Conversion/person.py +148 -0
  41. arctrl/py/Conversion/process.py +828 -0
  42. arctrl/py/Conversion/run.py +367 -0
  43. arctrl/py/Conversion/scholarly_article.py +163 -0
  44. arctrl/py/Conversion/study.py +99 -0
  45. arctrl/py/Conversion/table.py +229 -0
  46. arctrl/py/Conversion/workflow.py +680 -0
  47. arctrl/py/Core/Helper/__init__.py +0 -0
  48. arctrl/py/Core/Helper/collections_.py +512 -0
  49. arctrl/py/Core/Helper/date_time.py +26 -0
  50. arctrl/py/Core/Helper/hash_codes.py +60 -0
  51. arctrl/py/Core/Helper/identifier.py +290 -0
  52. arctrl/py/Core/Helper/orcid.py +42 -0
  53. arctrl/py/Core/Helper/printer.py +13 -0
  54. arctrl/py/Core/Helper/regex.py +554 -0
  55. arctrl/py/Core/Helper/sem_ver.py +71 -0
  56. arctrl/py/Core/Helper/url.py +148 -0
  57. arctrl/py/Core/Process/__init__.py +0 -0
  58. arctrl/py/Core/Process/column_index.py +280 -0
  59. arctrl/py/Core/Process/component.py +200 -0
  60. arctrl/py/Core/Process/factor.py +151 -0
  61. arctrl/py/Core/Process/factor_value.py +182 -0
  62. arctrl/py/Core/Process/material.py +74 -0
  63. arctrl/py/Core/Process/material_attribute.py +95 -0
  64. arctrl/py/Core/Process/material_attribute_value.py +184 -0
  65. arctrl/py/Core/Process/material_type.py +45 -0
  66. arctrl/py/Core/Process/process.py +477 -0
  67. arctrl/py/Core/Process/process_input.py +265 -0
  68. arctrl/py/Core/Process/process_output.py +235 -0
  69. arctrl/py/Core/Process/process_parameter_value.py +200 -0
  70. arctrl/py/Core/Process/process_sequence.py +435 -0
  71. arctrl/py/Core/Process/protocol.py +175 -0
  72. arctrl/py/Core/Process/protocol_parameter.py +98 -0
  73. arctrl/py/Core/Process/sample.py +82 -0
  74. arctrl/py/Core/Process/source.py +62 -0
  75. arctrl/py/Core/Table/__init__.py +0 -0
  76. arctrl/py/Core/Table/arc_table.py +1206 -0
  77. arctrl/py/Core/Table/arc_table_aux.py +1308 -0
  78. arctrl/py/Core/Table/arc_tables.py +574 -0
  79. arctrl/py/Core/Table/composite_cell.py +319 -0
  80. arctrl/py/Core/Table/composite_column.py +73 -0
  81. arctrl/py/Core/Table/composite_header.py +739 -0
  82. arctrl/py/Core/__init__.py +0 -0
  83. arctrl/py/Core/arc_types.py +5312 -0
  84. arctrl/py/Core/comment.py +128 -0
  85. arctrl/py/Core/comment_list.py +127 -0
  86. arctrl/py/Core/conversion.py +1375 -0
  87. arctrl/py/Core/data.py +247 -0
  88. arctrl/py/Core/data_context.py +157 -0
  89. arctrl/py/Core/data_file.py +112 -0
  90. arctrl/py/Core/datamap.py +217 -0
  91. arctrl/py/Core/identifier_setters.py +43 -0
  92. arctrl/py/Core/iproperty_value.py +36 -0
  93. arctrl/py/Core/ontology_annotation.py +298 -0
  94. arctrl/py/Core/ontology_source_reference.py +114 -0
  95. arctrl/py/Core/person.py +259 -0
  96. arctrl/py/Core/publication.py +161 -0
  97. arctrl/py/Core/template.py +231 -0
  98. arctrl/py/Core/templates.py +148 -0
  99. arctrl/py/Core/uri.py +11 -0
  100. arctrl/py/Core/value.py +188 -0
  101. arctrl/py/FileSystem/__init__.py +0 -0
  102. arctrl/py/FileSystem/commit.py +21 -0
  103. arctrl/py/FileSystem/default_gitattributes.py +1 -0
  104. arctrl/py/FileSystem/default_gitignore.py +1 -0
  105. arctrl/py/FileSystem/default_license.py +1 -0
  106. arctrl/py/FileSystem/file_system.py +58 -0
  107. arctrl/py/FileSystem/file_system_tree.py +483 -0
  108. arctrl/py/FileSystem/path.py +266 -0
  109. arctrl/py/Json/Datamap/__init__.py +0 -0
  110. arctrl/py/Json/Datamap/data_context.py +101 -0
  111. arctrl/py/Json/Datamap/datamap.py +53 -0
  112. arctrl/py/Json/Process/__init__.py +0 -0
  113. arctrl/py/Json/Process/assay_materials.py +46 -0
  114. arctrl/py/Json/Process/component.py +125 -0
  115. arctrl/py/Json/Process/factor.py +107 -0
  116. arctrl/py/Json/Process/factor_value.py +101 -0
  117. arctrl/py/Json/Process/material.py +226 -0
  118. arctrl/py/Json/Process/material_attribute.py +79 -0
  119. arctrl/py/Json/Process/material_attribute_value.py +101 -0
  120. arctrl/py/Json/Process/material_type.py +53 -0
  121. arctrl/py/Json/Process/process.py +296 -0
  122. arctrl/py/Json/Process/process_input.py +83 -0
  123. arctrl/py/Json/Process/process_output.py +67 -0
  124. arctrl/py/Json/Process/process_parameter_value.py +81 -0
  125. arctrl/py/Json/Process/protocol.py +354 -0
  126. arctrl/py/Json/Process/protocol_parameter.py +91 -0
  127. arctrl/py/Json/Process/sample.py +277 -0
  128. arctrl/py/Json/Process/source.py +214 -0
  129. arctrl/py/Json/Process/study_materials.py +52 -0
  130. arctrl/py/Json/Process/value.py +56 -0
  131. arctrl/py/Json/ROCrate/__init__.py +0 -0
  132. arctrl/py/Json/ROCrate/ldcontext.py +143 -0
  133. arctrl/py/Json/ROCrate/ldgraph.py +117 -0
  134. arctrl/py/Json/ROCrate/ldnode.py +304 -0
  135. arctrl/py/Json/ROCrate/ldref.py +44 -0
  136. arctrl/py/Json/ROCrate/ldvalue.py +102 -0
  137. arctrl/py/Json/Table/__init__.py +0 -0
  138. arctrl/py/Json/Table/arc_table.py +375 -0
  139. arctrl/py/Json/Table/cell_table.py +83 -0
  140. arctrl/py/Json/Table/composite_cell.py +136 -0
  141. arctrl/py/Json/Table/composite_header.py +67 -0
  142. arctrl/py/Json/Table/iotype.py +24 -0
  143. arctrl/py/Json/Table/oatable.py +82 -0
  144. arctrl/py/Json/Table/templates.py +281 -0
  145. arctrl/py/Json/__init__.py +0 -0
  146. arctrl/py/Json/assay.py +600 -0
  147. arctrl/py/Json/comment.py +206 -0
  148. arctrl/py/Json/context/rocrate/__init__.py +0 -0
  149. arctrl/py/Json/context/rocrate/isa_assay_context.py +101 -0
  150. arctrl/py/Json/context/rocrate/isa_comment_context.py +60 -0
  151. arctrl/py/Json/context/rocrate/isa_component_context.py +77 -0
  152. arctrl/py/Json/context/rocrate/isa_data_context.py +74 -0
  153. arctrl/py/Json/context/rocrate/isa_factor_context.py +74 -0
  154. arctrl/py/Json/context/rocrate/isa_factor_value_context.py +84 -0
  155. arctrl/py/Json/context/rocrate/isa_investigation_context.py +110 -0
  156. arctrl/py/Json/context/rocrate/isa_material_attribute_context.py +64 -0
  157. arctrl/py/Json/context/rocrate/isa_material_attribute_value_context.py +80 -0
  158. arctrl/py/Json/context/rocrate/isa_material_context.py +71 -0
  159. arctrl/py/Json/context/rocrate/isa_ontology_annotation_context.py +68 -0
  160. arctrl/py/Json/context/rocrate/isa_ontology_source_reference_context.py +75 -0
  161. arctrl/py/Json/context/rocrate/isa_organization_context.py +55 -0
  162. arctrl/py/Json/context/rocrate/isa_person_context.py +131 -0
  163. arctrl/py/Json/context/rocrate/isa_process_context.py +94 -0
  164. arctrl/py/Json/context/rocrate/isa_process_parameter_value_context.py +80 -0
  165. arctrl/py/Json/context/rocrate/isa_protocol_context.py +97 -0
  166. arctrl/py/Json/context/rocrate/isa_protocol_parameter_context.py +64 -0
  167. arctrl/py/Json/context/rocrate/isa_publication_context.py +78 -0
  168. arctrl/py/Json/context/rocrate/isa_sample_context.py +65 -0
  169. arctrl/py/Json/context/rocrate/isa_source_context.py +66 -0
  170. arctrl/py/Json/context/rocrate/isa_study_context.py +125 -0
  171. arctrl/py/Json/context/rocrate/property_value_context.py +73 -0
  172. arctrl/py/Json/context/rocrate/rocrate_context.py +81 -0
  173. arctrl/py/Json/converter_options.py +23 -0
  174. arctrl/py/Json/data.py +356 -0
  175. arctrl/py/Json/data_file.py +63 -0
  176. arctrl/py/Json/decode.py +271 -0
  177. arctrl/py/Json/encode.py +140 -0
  178. arctrl/py/Json/idtable.py +44 -0
  179. arctrl/py/Json/investigation.py +695 -0
  180. arctrl/py/Json/ontology_annotation.py +404 -0
  181. arctrl/py/Json/ontology_source_reference.py +255 -0
  182. arctrl/py/Json/person.py +658 -0
  183. arctrl/py/Json/property_value.py +359 -0
  184. arctrl/py/Json/publication.py +279 -0
  185. arctrl/py/Json/run.py +275 -0
  186. arctrl/py/Json/string_table.py +87 -0
  187. arctrl/py/Json/study.py +793 -0
  188. arctrl/py/Json/workflow.py +307 -0
  189. arctrl/py/JsonIO/Process/__init__.py +0 -0
  190. arctrl/py/JsonIO/Process/component.py +60 -0
  191. arctrl/py/JsonIO/Process/factor.py +36 -0
  192. arctrl/py/JsonIO/Process/factor_value.py +38 -0
  193. arctrl/py/JsonIO/Process/material.py +60 -0
  194. arctrl/py/JsonIO/Process/material_attribute.py +38 -0
  195. arctrl/py/JsonIO/Process/material_attribute_value.py +60 -0
  196. arctrl/py/JsonIO/Process/material_type.py +36 -0
  197. arctrl/py/JsonIO/Process/process.py +60 -0
  198. arctrl/py/JsonIO/Process/process_input.py +38 -0
  199. arctrl/py/JsonIO/Process/process_output.py +60 -0
  200. arctrl/py/JsonIO/Process/process_parameter_value.py +60 -0
  201. arctrl/py/JsonIO/Process/process_sequence.py +71 -0
  202. arctrl/py/JsonIO/Process/protocol.py +60 -0
  203. arctrl/py/JsonIO/Process/protocol_parameter.py +36 -0
  204. arctrl/py/JsonIO/Process/sample.py +60 -0
  205. arctrl/py/JsonIO/Process/source.py +60 -0
  206. arctrl/py/JsonIO/Process/study_materials.py +52 -0
  207. arctrl/py/JsonIO/Process/value.py +32 -0
  208. arctrl/py/JsonIO/Table/__init__.py +0 -0
  209. arctrl/py/JsonIO/Table/arc_table.py +103 -0
  210. arctrl/py/JsonIO/Table/composite_cell.py +36 -0
  211. arctrl/py/JsonIO/Table/composite_header.py +36 -0
  212. arctrl/py/JsonIO/Table/compression.py +67 -0
  213. arctrl/py/JsonIO/Table/iotype.py +36 -0
  214. arctrl/py/JsonIO/Table/templates.py +113 -0
  215. arctrl/py/JsonIO/__init__.py +0 -0
  216. arctrl/py/JsonIO/assay.py +113 -0
  217. arctrl/py/JsonIO/comment.py +80 -0
  218. arctrl/py/JsonIO/data.py +60 -0
  219. arctrl/py/JsonIO/data_file.py +58 -0
  220. arctrl/py/JsonIO/datamap.py +36 -0
  221. arctrl/py/JsonIO/decode.py +9 -0
  222. arctrl/py/JsonIO/encode.py +1 -0
  223. arctrl/py/JsonIO/investigation.py +91 -0
  224. arctrl/py/JsonIO/ldobject.py +106 -0
  225. arctrl/py/JsonIO/ontology_annotation.py +80 -0
  226. arctrl/py/JsonIO/ontology_source_reference.py +80 -0
  227. arctrl/py/JsonIO/person.py +82 -0
  228. arctrl/py/JsonIO/publication.py +82 -0
  229. arctrl/py/JsonIO/run.py +68 -0
  230. arctrl/py/JsonIO/study.py +114 -0
  231. arctrl/py/JsonIO/workflow.py +68 -0
  232. arctrl/py/ROCrate/ISAProfile/__init__.py +0 -0
  233. arctrl/py/ROCrate/ISAProfile/assay.py +70 -0
  234. arctrl/py/ROCrate/ISAProfile/data.py +65 -0
  235. arctrl/py/ROCrate/ISAProfile/dataset.py +24 -0
  236. arctrl/py/ROCrate/ISAProfile/investigation.py +73 -0
  237. arctrl/py/ROCrate/ISAProfile/lab_process.py +162 -0
  238. arctrl/py/ROCrate/ISAProfile/lab_protocol.py +37 -0
  239. arctrl/py/ROCrate/ISAProfile/person.py +72 -0
  240. arctrl/py/ROCrate/ISAProfile/property_value.py +98 -0
  241. arctrl/py/ROCrate/ISAProfile/sample.py +64 -0
  242. arctrl/py/ROCrate/ISAProfile/scholarly_article.py +98 -0
  243. arctrl/py/ROCrate/ISAProfile/study.py +74 -0
  244. arctrl/py/ROCrate/LDTypes/__init__.py +0 -0
  245. arctrl/py/ROCrate/LDTypes/comment.py +131 -0
  246. arctrl/py/ROCrate/LDTypes/computational_workflow.py +455 -0
  247. arctrl/py/ROCrate/LDTypes/computer_language.py +269 -0
  248. arctrl/py/ROCrate/LDTypes/create_action.py +303 -0
  249. arctrl/py/ROCrate/LDTypes/creative_work.py +566 -0
  250. arctrl/py/ROCrate/LDTypes/dataset.py +943 -0
  251. arctrl/py/ROCrate/LDTypes/defined_term.py +131 -0
  252. arctrl/py/ROCrate/LDTypes/file.py +281 -0
  253. arctrl/py/ROCrate/LDTypes/formal_parameter.py +431 -0
  254. arctrl/py/ROCrate/LDTypes/lab_process.py +352 -0
  255. arctrl/py/ROCrate/LDTypes/lab_protocol.py +395 -0
  256. arctrl/py/ROCrate/LDTypes/organization.py +83 -0
  257. arctrl/py/ROCrate/LDTypes/person.py +484 -0
  258. arctrl/py/ROCrate/LDTypes/postal_address.py +195 -0
  259. arctrl/py/ROCrate/LDTypes/property_value.py +952 -0
  260. arctrl/py/ROCrate/LDTypes/sample.py +202 -0
  261. arctrl/py/ROCrate/LDTypes/scholarly_article.py +229 -0
  262. arctrl/py/ROCrate/LDTypes/software_source_code.py +310 -0
  263. arctrl/py/ROCrate/LDTypes/workflow_invocation.py +48 -0
  264. arctrl/py/ROCrate/LDTypes/workflow_protocol.py +52 -0
  265. arctrl/py/ROCrate/__init__.py +0 -0
  266. arctrl/py/ROCrate/arc_rocrate_metadata.py +39 -0
  267. arctrl/py/ROCrate/dyn_obj_extensions.py +1 -0
  268. arctrl/py/ROCrate/helper.py +8 -0
  269. arctrl/py/ROCrate/ldcontext.py +406 -0
  270. arctrl/py/ROCrate/ldobject.py +1247 -0
  271. arctrl/py/ROCrate/rocrate_context.py +51 -0
  272. arctrl/py/Spreadsheet/AnnotationTable/__init__.py +0 -0
  273. arctrl/py/Spreadsheet/AnnotationTable/arc_table.py +203 -0
  274. arctrl/py/Spreadsheet/AnnotationTable/composite_cell.py +78 -0
  275. arctrl/py/Spreadsheet/AnnotationTable/composite_column.py +305 -0
  276. arctrl/py/Spreadsheet/AnnotationTable/composite_header.py +623 -0
  277. arctrl/py/Spreadsheet/DatamapTable/__init__.py +0 -0
  278. arctrl/py/Spreadsheet/DatamapTable/datamap_column.py +114 -0
  279. arctrl/py/Spreadsheet/DatamapTable/datamap_header.py +621 -0
  280. arctrl/py/Spreadsheet/DatamapTable/datamap_table.py +118 -0
  281. arctrl/py/Spreadsheet/Metadata/__init__.py +0 -0
  282. arctrl/py/Spreadsheet/Metadata/assays.py +125 -0
  283. arctrl/py/Spreadsheet/Metadata/comment.py +77 -0
  284. arctrl/py/Spreadsheet/Metadata/contacts.py +134 -0
  285. arctrl/py/Spreadsheet/Metadata/conversions.py +190 -0
  286. arctrl/py/Spreadsheet/Metadata/design_descriptors.py +34 -0
  287. arctrl/py/Spreadsheet/Metadata/factors.py +107 -0
  288. arctrl/py/Spreadsheet/Metadata/ontology_annotation.py +88 -0
  289. arctrl/py/Spreadsheet/Metadata/ontology_source_reference.py +96 -0
  290. arctrl/py/Spreadsheet/Metadata/protocols.py +146 -0
  291. arctrl/py/Spreadsheet/Metadata/publication.py +122 -0
  292. arctrl/py/Spreadsheet/Metadata/run.py +122 -0
  293. arctrl/py/Spreadsheet/Metadata/sparse_table.py +499 -0
  294. arctrl/py/Spreadsheet/Metadata/study.py +312 -0
  295. arctrl/py/Spreadsheet/Metadata/workflow.py +159 -0
  296. arctrl/py/Spreadsheet/__init__.py +0 -0
  297. arctrl/py/Spreadsheet/arc_assay.py +233 -0
  298. arctrl/py/Spreadsheet/arc_investigation.py +435 -0
  299. arctrl/py/Spreadsheet/arc_run.py +190 -0
  300. arctrl/py/Spreadsheet/arc_study.py +144 -0
  301. arctrl/py/Spreadsheet/arc_workflow.py +177 -0
  302. arctrl/py/Spreadsheet/assembly_info.py +1 -0
  303. arctrl/py/Spreadsheet/collection_aux.py +167 -0
  304. arctrl/py/Spreadsheet/datamap.py +43 -0
  305. arctrl/py/Spreadsheet/template.py +460 -0
  306. arctrl/py/ValidationPackages/__init__.py +0 -0
  307. arctrl/py/ValidationPackages/validation_package.py +82 -0
  308. arctrl/py/ValidationPackages/validation_packages_config.py +132 -0
  309. arctrl/py/WebRequest/__init__.py +0 -0
  310. arctrl/py/WebRequest/web_request.py +9 -0
  311. arctrl/py/WebRequest/web_request_py.py +135 -0
  312. arctrl/py/WorkflowGraph/__init__.py +0 -0
  313. arctrl/py/WorkflowGraph/adapters.py +141 -0
  314. arctrl/py/WorkflowGraph/build_options.py +45 -0
  315. arctrl/py/WorkflowGraph/builder.py +720 -0
  316. arctrl/py/WorkflowGraph/graph_types.py +260 -0
  317. arctrl/py/WorkflowGraph/query_helpers.py +76 -0
  318. arctrl/py/WorkflowGraph/reference_parsing.py +59 -0
  319. arctrl/py/WorkflowGraph/visualization_siren.py +574 -0
  320. arctrl/py/WorkflowGraph/workflow_graph.py +119 -0
  321. arctrl/py/Yaml/__init__.py +0 -0
  322. arctrl/py/Yaml/decode.py +1 -0
  323. arctrl/py/Yaml/encode.py +10 -0
  324. arctrl/py/Yaml/validation_package.py +77 -0
  325. arctrl/py/Yaml/validation_packages_config.py +86 -0
  326. arctrl/py/__init__.py +0 -0
  327. arctrl/py/arc.py +1891 -0
  328. arctrl/py/column_index.py +280 -0
  329. arctrl/py/conversion.py +142 -0
  330. arctrl/py/cross_async.py +76 -0
  331. arctrl/py/cwlrun_resolver.py +228 -0
  332. arctrl/py/fable_modules/dynamic_obj/__init__.py +0 -0
  333. arctrl/py/fable_modules/dynamic_obj/dyn_obj.py +136 -0
  334. arctrl/py/fable_modules/dynamic_obj/dynamic_obj.py +415 -0
  335. arctrl/py/fable_modules/dynamic_obj/fable_js.py +1 -0
  336. arctrl/py/fable_modules/dynamic_obj/fable_py.py +288 -0
  337. arctrl/py/fable_modules/dynamic_obj/hash_codes.py +82 -0
  338. arctrl/py/fable_modules/dynamic_obj/property_helper.py +25 -0
  339. arctrl/py/fable_modules/dynamic_obj/reflection_utils.py +87 -0
  340. arctrl/py/fable_modules/fable_library/__init__.py +0 -0
  341. arctrl/py/fable_modules/fable_library/array_.py +1528 -0
  342. arctrl/py/fable_modules/fable_library/async_.py +377 -0
  343. arctrl/py/fable_modules/fable_library/async_builder.py +379 -0
  344. arctrl/py/fable_modules/fable_library/big_int.py +330 -0
  345. arctrl/py/fable_modules/fable_library/bit_converter.py +131 -0
  346. arctrl/py/fable_modules/fable_library/boolean.py +26 -0
  347. arctrl/py/fable_modules/fable_library/char.py +237 -0
  348. arctrl/py/fable_modules/fable_library/choice.py +212 -0
  349. arctrl/py/fable_modules/fable_library/date.py +779 -0
  350. arctrl/py/fable_modules/fable_library/date_offset.py +79 -0
  351. arctrl/py/fable_modules/fable_library/decimal_.py +190 -0
  352. arctrl/py/fable_modules/fable_library/diagnostics.py +54 -0
  353. arctrl/py/fable_modules/fable_library/double.py +87 -0
  354. arctrl/py/fable_modules/fable_library/encoding.py +41 -0
  355. arctrl/py/fable_modules/fable_library/event.py +206 -0
  356. arctrl/py/fable_modules/fable_library/file.py +107 -0
  357. arctrl/py/fable_modules/fable_library/fsharp_collections.py +52 -0
  358. arctrl/py/fable_modules/fable_library/fsharp_core.py +123 -0
  359. arctrl/py/fable_modules/fable_library/global_.py +63 -0
  360. arctrl/py/fable_modules/fable_library/guid.py +41 -0
  361. arctrl/py/fable_modules/fable_library/int32.py +73 -0
  362. arctrl/py/fable_modules/fable_library/list.py +1788 -0
  363. arctrl/py/fable_modules/fable_library/long.py +240 -0
  364. arctrl/py/fable_modules/fable_library/mailbox_processor.py +179 -0
  365. arctrl/py/fable_modules/fable_library/map.py +1854 -0
  366. arctrl/py/fable_modules/fable_library/map_util.py +148 -0
  367. arctrl/py/fable_modules/fable_library/mutable_map.py +397 -0
  368. arctrl/py/fable_modules/fable_library/mutable_set.py +279 -0
  369. arctrl/py/fable_modules/fable_library/native.py +45 -0
  370. arctrl/py/fable_modules/fable_library/numeric.py +46 -0
  371. arctrl/py/fable_modules/fable_library/observable.py +222 -0
  372. arctrl/py/fable_modules/fable_library/option.py +128 -0
  373. arctrl/py/fable_modules/fable_library/path.py +62 -0
  374. arctrl/py/fable_modules/fable_library/range.py +117 -0
  375. arctrl/py/fable_modules/fable_library/reflection.py +463 -0
  376. arctrl/py/fable_modules/fable_library/reg_exp.py +137 -0
  377. arctrl/py/fable_modules/fable_library/resize_array.py +31 -0
  378. arctrl/py/fable_modules/fable_library/result.py +212 -0
  379. arctrl/py/fable_modules/fable_library/seq.py +1979 -0
  380. arctrl/py/fable_modules/fable_library/seq2.py +221 -0
  381. arctrl/py/fable_modules/fable_library/set.py +2414 -0
  382. arctrl/py/fable_modules/fable_library/singleton_local_time_zone.py +36 -0
  383. arctrl/py/fable_modules/fable_library/string_.py +573 -0
  384. arctrl/py/fable_modules/fable_library/system_collections_generic.py +462 -0
  385. arctrl/py/fable_modules/fable_library/system_text.py +237 -0
  386. arctrl/py/fable_modules/fable_library/task.py +116 -0
  387. arctrl/py/fable_modules/fable_library/task_builder.py +122 -0
  388. arctrl/py/fable_modules/fable_library/thread.py +5 -0
  389. arctrl/py/fable_modules/fable_library/time_span.py +283 -0
  390. arctrl/py/fable_modules/fable_library/timer.py +24 -0
  391. arctrl/py/fable_modules/fable_library/types.py +401 -0
  392. arctrl/py/fable_modules/fable_library/uri.py +109 -0
  393. arctrl/py/fable_modules/fable_library/util.py +2735 -0
  394. arctrl/py/fable_modules/fable_openpyxl/__init__.py +0 -0
  395. arctrl/py/fable_modules/fable_openpyxl/openpyxl.py +362 -0
  396. arctrl/py/fable_modules/fable_python/cognite-sdk/__init__.py +0 -0
  397. arctrl/py/fable_modules/fable_python/cognite-sdk/cognite_sdk.py +22 -0
  398. arctrl/py/fable_modules/fable_python/flask/__init__.py +0 -0
  399. arctrl/py/fable_modules/fable_python/flask/flask.py +34 -0
  400. arctrl/py/fable_modules/fable_python/jupyter/__init__.py +0 -0
  401. arctrl/py/fable_modules/fable_python/jupyter/ipy_widgets.py +47 -0
  402. arctrl/py/fable_modules/fable_python/jupyter/ipython.py +13 -0
  403. arctrl/py/fable_modules/fable_python/stdlib/__init__.py +0 -0
  404. arctrl/py/fable_modules/fable_python/stdlib/ast.py +1 -0
  405. arctrl/py/fable_modules/fable_python/stdlib/asyncio/__init__.py +0 -0
  406. arctrl/py/fable_modules/fable_python/stdlib/asyncio/events.py +17 -0
  407. arctrl/py/fable_modules/fable_python/stdlib/asyncio/futures.py +52 -0
  408. arctrl/py/fable_modules/fable_python/stdlib/asyncio/tasks.py +38 -0
  409. arctrl/py/fable_modules/fable_python/stdlib/base64_.py +1 -0
  410. arctrl/py/fable_modules/fable_python/stdlib/builtins_.py +38 -0
  411. arctrl/py/fable_modules/fable_python/stdlib/html.py +1 -0
  412. arctrl/py/fable_modules/fable_python/stdlib/json.py +1 -0
  413. arctrl/py/fable_modules/fable_python/stdlib/math_.py +1 -0
  414. arctrl/py/fable_modules/fable_python/stdlib/os_.py +1 -0
  415. arctrl/py/fable_modules/fable_python/stdlib/queue_.py +1 -0
  416. arctrl/py/fable_modules/fable_python/stdlib/string_.py +1 -0
  417. arctrl/py/fable_modules/fable_python/stdlib/sys_.py +30 -0
  418. arctrl/py/fable_modules/fable_python/stdlib/time_.py +1 -0
  419. arctrl/py/fable_modules/fable_python/stdlib/tk_inter.py +1 -0
  420. arctrl/py/fable_modules/fs_spreadsheet/Cells/__init__.py +0 -0
  421. arctrl/py/fable_modules/fs_spreadsheet/Cells/fs_cell.py +340 -0
  422. arctrl/py/fable_modules/fs_spreadsheet/Cells/fs_cells_collection.py +466 -0
  423. arctrl/py/fable_modules/fs_spreadsheet/DSL/__init__.py +0 -0
  424. arctrl/py/fable_modules/fs_spreadsheet/DSL/cell_builder.py +214 -0
  425. arctrl/py/fable_modules/fs_spreadsheet/DSL/column_builder.py +139 -0
  426. arctrl/py/fable_modules/fs_spreadsheet/DSL/dsl.py +50 -0
  427. arctrl/py/fable_modules/fs_spreadsheet/DSL/expression.py +65 -0
  428. arctrl/py/fable_modules/fs_spreadsheet/DSL/operators.py +9 -0
  429. arctrl/py/fable_modules/fs_spreadsheet/DSL/row_builder.py +139 -0
  430. arctrl/py/fable_modules/fs_spreadsheet/DSL/sheet_builder.py +118 -0
  431. arctrl/py/fable_modules/fs_spreadsheet/DSL/table_builder.py +122 -0
  432. arctrl/py/fable_modules/fs_spreadsheet/DSL/transform.py +463 -0
  433. arctrl/py/fable_modules/fs_spreadsheet/DSL/types.py +314 -0
  434. arctrl/py/fable_modules/fs_spreadsheet/DSL/workbook_builder.py +106 -0
  435. arctrl/py/fable_modules/fs_spreadsheet/Json/__init__.py +0 -0
  436. arctrl/py/fable_modules/fs_spreadsheet/Json/cell.py +103 -0
  437. arctrl/py/fable_modules/fs_spreadsheet/Json/column.py +70 -0
  438. arctrl/py/fable_modules/fs_spreadsheet/Json/row.py +70 -0
  439. arctrl/py/fable_modules/fs_spreadsheet/Json/table.py +54 -0
  440. arctrl/py/fable_modules/fs_spreadsheet/Json/value.py +93 -0
  441. arctrl/py/fable_modules/fs_spreadsheet/Json/workbook.py +71 -0
  442. arctrl/py/fable_modules/fs_spreadsheet/Json/worksheet.py +216 -0
  443. arctrl/py/fable_modules/fs_spreadsheet/Ranges/__init__.py +0 -0
  444. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range.py +43 -0
  445. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_address.py +190 -0
  446. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_base.py +92 -0
  447. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_column.py +77 -0
  448. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_row.py +48 -0
  449. arctrl/py/fable_modules/fs_spreadsheet/Tables/__init__.py +0 -0
  450. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table.py +461 -0
  451. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table_field.py +117 -0
  452. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table_row.py +23 -0
  453. arctrl/py/fable_modules/fs_spreadsheet/__init__.py +0 -0
  454. arctrl/py/fable_modules/fs_spreadsheet/fs_address.py +236 -0
  455. arctrl/py/fable_modules/fs_spreadsheet/fs_column.py +172 -0
  456. arctrl/py/fable_modules/fs_spreadsheet/fs_row.py +183 -0
  457. arctrl/py/fable_modules/fs_spreadsheet/fs_workbook.py +192 -0
  458. arctrl/py/fable_modules/fs_spreadsheet/fs_worksheet.py +610 -0
  459. arctrl/py/fable_modules/fs_spreadsheet/hash_codes.py +60 -0
  460. arctrl/py/fable_modules/fs_spreadsheet/sheet_builder.py +329 -0
  461. arctrl/py/fable_modules/fs_spreadsheet_py/__init__.py +0 -0
  462. arctrl/py/fable_modules/fs_spreadsheet_py/cell.py +60 -0
  463. arctrl/py/fable_modules/fs_spreadsheet_py/cell_type.py +50 -0
  464. arctrl/py/fable_modules/fs_spreadsheet_py/fs_extension.py +60 -0
  465. arctrl/py/fable_modules/fs_spreadsheet_py/json.py +47 -0
  466. arctrl/py/fable_modules/fs_spreadsheet_py/table.py +54 -0
  467. arctrl/py/fable_modules/fs_spreadsheet_py/workbook.py +41 -0
  468. arctrl/py/fable_modules/fs_spreadsheet_py/worksheet.py +52 -0
  469. arctrl/py/fable_modules/fs_spreadsheet_py/xlsx.py +37 -0
  470. arctrl/py/fable_modules/siren/__init__.py +0 -0
  471. arctrl/py/fable_modules/siren/config.py +1038 -0
  472. arctrl/py/fable_modules/siren/formatting.py +1121 -0
  473. arctrl/py/fable_modules/siren/siren.py +1941 -0
  474. arctrl/py/fable_modules/siren/siren_types.py +1229 -0
  475. arctrl/py/fable_modules/siren/theme_variables.py +517 -0
  476. arctrl/py/fable_modules/siren/util.py +37 -0
  477. arctrl/py/fable_modules/siren/yaml.py +101 -0
  478. arctrl/py/fable_modules/thoth_json_core/__init__.py +0 -0
  479. arctrl/py/fable_modules/thoth_json_core/decode.py +1614 -0
  480. arctrl/py/fable_modules/thoth_json_core/encode.py +305 -0
  481. arctrl/py/fable_modules/thoth_json_core/types.py +181 -0
  482. arctrl/py/fable_modules/thoth_json_python/__init__.py +0 -0
  483. arctrl/py/fable_modules/thoth_json_python/decode.py +112 -0
  484. arctrl/py/fable_modules/thoth_json_python/encode.py +72 -0
  485. arctrl/py/fable_modules/thoth_json_python/python.py +1 -0
  486. arctrl/py/fable_modules/yamlicious/Interop/__init__.py +0 -0
  487. arctrl/py/fable_modules/yamlicious/Interop/js_interop.py +1 -0
  488. arctrl/py/fable_modules/yamlicious/Interop/py_interop.py +7 -0
  489. arctrl/py/fable_modules/yamlicious/__init__.py +0 -0
  490. arctrl/py/fable_modules/yamlicious/decode.py +1784 -0
  491. arctrl/py/fable_modules/yamlicious/encode.py +84 -0
  492. arctrl/py/fable_modules/yamlicious/flow_to_block.py +994 -0
  493. arctrl/py/fable_modules/yamlicious/library.py +10 -0
  494. arctrl/py/fable_modules/yamlicious/persil.py +57 -0
  495. arctrl/py/fable_modules/yamlicious/preprocessing.py +99 -0
  496. arctrl/py/fable_modules/yamlicious/reader.py +739 -0
  497. arctrl/py/fable_modules/yamlicious/regex.py +29 -0
  498. arctrl/py/fable_modules/yamlicious/regex_active_patterns.py +265 -0
  499. arctrl/py/fable_modules/yamlicious/writer.py +175 -0
  500. arctrl/py/fable_modules/yamlicious/yamlicious_types.py +128 -0
  501. arctrl/py/json.py +389 -0
  502. arctrl/py/license.py +169 -0
  503. arctrl/py/rocrate_io.py +242 -0
  504. arctrl/py/template_web.py +23 -0
  505. arctrl/py/xlsx.py +212 -0
  506. arctrl/py/yaml.py +79 -0
  507. arctrl/rocrate.py +21 -0
  508. arctrl-3.0.0.dist-info/METADATA +157 -0
  509. arctrl-3.0.0.dist-info/RECORD +511 -0
  510. arctrl-3.0.0.dist-info/WHEEL +4 -0
  511. arctrl-3.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,680 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from typing import Any
4
+ from ..Core.arc_types import ArcWorkflow
5
+ from ..Core.comment import Comment
6
+ from ..Core.datamap import Datamap
7
+ from ..Core.Helper.collections_ import (ResizeArray_map, ResizeArray_singleton, Option_fromSeq, ResizeArray_choose, ResizeArray_appendSingleton, Option_fromValueWithDefault)
8
+ from ..Core.Helper.identifier import Workflow_cwlFileNameFromIdentifier
9
+ from ..Core.ontology_annotation import OntologyAnnotation
10
+ from ..Core.person import Person
11
+ from ..Core.Process.component import (Component, Component_create_Z2F0B38C7)
12
+ from ..Core.value import Value as Value_3
13
+ from ..CWL.cwlprocessing_unit import (CWLProcessingUnit_getInputs_30922B92, CWLProcessingUnit)
14
+ from ..CWL.cwltypes import CWLType
15
+ from ..CWL.decode import (Decode_cwlTypeStringMatcher, Decode_cwlTypeDecoder_0027)
16
+ from ..CWL.encode import (is_complex_type, cwl_type_to_yaml_string, write_yaml, encode_cwltype)
17
+ from ..CWL.expression_tool_description import CWLExpressionToolDescription
18
+ from ..CWL.inputs import (InputBinding, CWLInput, InputBinding_create_ZAC0108A)
19
+ from ..CWL.operation_description import CWLOperationDescription
20
+ from ..CWL.outputs import (OutputBinding, CWLOutput, OutputBinding_create_6DFDD678)
21
+ from ..CWL.tool_description import CWLToolDescription
22
+ from ..CWL.workflow_description import CWLWorkflowDescription
23
+ from ..CWL.workflow_steps import (WorkflowStepRun, WorkflowStep)
24
+ from ..FileSystem.file_system import FileSystem
25
+ from ..FileSystem.path import normalize
26
+ from ..ROCrate.ldcontext import LDContext
27
+ from ..ROCrate.ldobject import (LDNode, LDGraph)
28
+ from ..ROCrate.LDTypes.computational_workflow import LDComputationalWorkflow
29
+ from ..ROCrate.LDTypes.computer_language import LDComputerLanguage
30
+ from ..ROCrate.LDTypes.dataset import LDDataset
31
+ from ..ROCrate.LDTypes.formal_parameter import LDFormalParameter
32
+ from ..ROCrate.LDTypes.lab_protocol import LDLabProtocol
33
+ from ..ROCrate.LDTypes.organization import LDOrganization
34
+ from ..ROCrate.LDTypes.property_value import LDPropertyValue
35
+ from ..ROCrate.LDTypes.workflow_protocol import LDWorkflowProtocol
36
+ from ..cwlrun_resolver import resolve_workflow_step_run_from_lookup
37
+ from ..fable_modules.fable_library.array_ import try_pick as try_pick_1
38
+ from ..fable_modules.fable_library.date import utc_now
39
+ from ..fable_modules.fable_library.list import (is_empty, head, tail)
40
+ from ..fable_modules.fable_library.option import (default_arg, bind, map, value as value_2)
41
+ from ..fable_modules.fable_library.reflection import (TypeInfo, class_type)
42
+ from ..fable_modules.fable_library.seq import (try_pick, exactly_one, to_array, find)
43
+ from ..fable_modules.fable_library.seq2 import distinct
44
+ from ..fable_modules.fable_library.string_ import (to_fail, printf)
45
+ from ..fable_modules.fable_library.types import (Array, to_string)
46
+ from ..fable_modules.fable_library.util import (int32_to_string, to_enumerable, string_hash)
47
+ from ..fable_modules.yamlicious.decode import (object, IGetters)
48
+ from ..fable_modules.yamlicious.reader import read
49
+ from ..fable_modules.yamlicious.yamlicious_types import YAMLElement
50
+ from .basic import (BaseTypes_decomposePropertyValue_Z2F770004, BaseTypes_composeDefinedTerm_ZDED3A0F, BaseTypes_composeComment_Z13201A7E, BaseTypes_decomposeDefinedTerm_Z2F770004, BaseTypes_decomposeComment_Z2F770004)
51
+ from .datamap import (DatamapConversion_composeFragmentDescriptors_Z892BFC3, DatamapConversion_decomposeFragmentDescriptors_Z6E59645F)
52
+ from .person import (PersonConversion_composePerson_Z64D846DC, PersonConversion_decomposePerson_Z6839B9E8)
53
+
54
+ def _expr4386() -> TypeInfo:
55
+ return class_type("ARCtrl.Conversion.WorkflowConversion", None, WorkflowConversion)
56
+
57
+
58
+ class WorkflowConversion:
59
+ ...
60
+
61
+ WorkflowConversion_reflection = _expr4386
62
+
63
+ def WorkflowConversion_composeAdditionalType_Z5C31A0F9(t: CWLType) -> str:
64
+ if is_complex_type(t):
65
+ return cwl_type_to_yaml_string(t)
66
+
67
+ else:
68
+ s: str = write_yaml(encode_cwltype(t))
69
+ return s.strip()
70
+
71
+
72
+
73
+ def WorkflowConversion_decomposeAdditionalType_Z721C83C5(t: str) -> CWLType:
74
+ yaml_element: YAMLElement = read(t)
75
+ (pattern_matching_result, items) = (None, None)
76
+ if yaml_element.tag == 1:
77
+ pattern_matching_result = 0
78
+
79
+ elif yaml_element.tag == 3:
80
+ if not is_empty(yaml_element.fields[0]):
81
+ if head(yaml_element.fields[0]).tag == 2:
82
+ if is_empty(tail(yaml_element.fields[0])):
83
+ pattern_matching_result = 1
84
+ items = head(yaml_element.fields[0]).fields[0]
85
+
86
+ else:
87
+ pattern_matching_result = 2
88
+
89
+
90
+ else:
91
+ pattern_matching_result = 2
92
+
93
+
94
+ else:
95
+ pattern_matching_result = 2
96
+
97
+
98
+ else:
99
+ pattern_matching_result = 2
100
+
101
+ if pattern_matching_result == 0:
102
+ def _arrow4387(get: IGetters, t: Any=t) -> tuple[CWLType, bool]:
103
+ return Decode_cwlTypeStringMatcher(t, get)
104
+
105
+ return object(_arrow4387, YAMLElement(4, "unused-shorthand-context"))[0]
106
+
107
+ elif pattern_matching_result == 1:
108
+ return Decode_cwlTypeDecoder_0027(YAMLElement(2, items))
109
+
110
+ elif pattern_matching_result == 2:
111
+ return Decode_cwlTypeDecoder_0027(yaml_element)
112
+
113
+
114
+
115
+ def WorkflowConversion_composeFormalParamInputIdentifiers(prefix: str | None=None, position: int | None=None) -> Array[LDNode] | None:
116
+ if prefix is None:
117
+ if position is None:
118
+ return None
119
+
120
+ else:
121
+ po_1: int = position or 0
122
+ return [LDPropertyValue.create_position(po_1)]
123
+
124
+
125
+ elif position is None:
126
+ pr_1: str = prefix
127
+ return [LDPropertyValue.create_prefix(pr_1)]
128
+
129
+ else:
130
+ po: int = position or 0
131
+ pr: str = prefix
132
+ return [LDPropertyValue.create_position(po), LDPropertyValue.create_prefix(pr)]
133
+
134
+
135
+
136
+ def WorkflowConversion_composeFormalParameterFromInput_Z7A02DED7(inp: CWLInput, workflow_name: str | None=None, run_name: str | None=None) -> LDNode:
137
+ additional_type: str
138
+ match_value: CWLType | None = inp.Type_
139
+ if match_value is None:
140
+ raise Exception("Input must have a type")
141
+
142
+ else:
143
+ additional_type = WorkflowConversion_composeAdditionalType_Z5C31A0F9(match_value)
144
+
145
+ value_required: bool = not default_arg(inp.Optional, False)
146
+ id: str = LDFormalParameter.gen_id(inp.Name, workflow_name, run_name)
147
+ def binder(ib: InputBinding, inp: Any=inp, workflow_name: Any=workflow_name, run_name: Any=run_name) -> Array[LDNode] | None:
148
+ return WorkflowConversion_composeFormalParamInputIdentifiers(ib.Prefix, ib.Position)
149
+
150
+ identifiers: Array[LDNode] | None = bind(binder, inp.InputBinding)
151
+ return LDFormalParameter.create(additional_type, id, None, inp.Name, None, None, None, None, value_required, identifiers)
152
+
153
+
154
+ def WorkflowConversion_decomposeInputBindings_1AAAE9A5(identifiers: Array[LDNode], context: LDContext | None=None) -> InputBinding | None:
155
+ def _arrow4388(n: LDNode, identifiers: Any=identifiers, context: Any=context) -> str | None:
156
+ return LDPropertyValue.try_get_as_prefix(n, context)
157
+
158
+ prefix: str | None = try_pick(_arrow4388, identifiers)
159
+ def _arrow4389(n_1: LDNode, identifiers: Any=identifiers, context: Any=context) -> int | None:
160
+ return LDPropertyValue.try_get_as_position(n_1, context)
161
+
162
+ position: int | None = try_pick(_arrow4389, identifiers)
163
+ (pattern_matching_result,) = (None,)
164
+ if prefix is None:
165
+ if position is None:
166
+ pattern_matching_result = 0
167
+
168
+ else:
169
+ pattern_matching_result = 1
170
+
171
+
172
+ else:
173
+ pattern_matching_result = 1
174
+
175
+ if pattern_matching_result == 0:
176
+ return None
177
+
178
+ elif pattern_matching_result == 1:
179
+ return InputBinding_create_ZAC0108A(prefix, position)
180
+
181
+
182
+
183
+ def WorkflowConversion_decomposeInputFromFormalParameter_2664C4B8(inp: LDNode, context: LDContext | None=None, graph: LDGraph | None=None) -> CWLInput:
184
+ t_1: CWLType = WorkflowConversion_decomposeAdditionalType_Z721C83C5(exactly_one(inp.AdditionalType))
185
+ binding: InputBinding | None = WorkflowConversion_decomposeInputBindings_1AAAE9A5(LDFormalParameter.get_identifiers(inp, graph, context), context)
186
+ optional: bool | None
187
+ match_value: bool | None = LDFormalParameter.try_get_value_required_as_boolean(inp, context)
188
+ (pattern_matching_result,) = (None,)
189
+ if match_value is not None:
190
+ if match_value:
191
+ pattern_matching_result = 0
192
+
193
+ else:
194
+ pattern_matching_result = 1
195
+
196
+
197
+ else:
198
+ pattern_matching_result = 1
199
+
200
+ if pattern_matching_result == 0:
201
+ optional = None
202
+
203
+ elif pattern_matching_result == 1:
204
+ optional = True
205
+
206
+ return CWLInput(LDFormalParameter.get_name_as_string(inp, context), t_1, binding, optional)
207
+
208
+
209
+ def WorkflowConversion_composeFormalParameterOutputIdentifiers_6DFDD678(glob: str | None=None) -> Array[LDNode] | None:
210
+ if glob is None:
211
+ return None
212
+
213
+ else:
214
+ g: str = glob
215
+ return [LDPropertyValue.create_glob(g)]
216
+
217
+
218
+
219
+ def WorkflowConversion_composeFormalParameterFromOutput_Z25C7EC80(out: CWLOutput, workflow_name: str | None=None, run_name: str | None=None) -> LDNode:
220
+ additional_type: str
221
+ match_value: CWLType | None = out.Type_
222
+ if match_value is None:
223
+ raise Exception("Output must have a type")
224
+
225
+ else:
226
+ additional_type = WorkflowConversion_composeAdditionalType_Z5C31A0F9(match_value)
227
+
228
+ id: str = LDFormalParameter.gen_id(out.Name, workflow_name, run_name)
229
+ def binder(ob: OutputBinding, out: Any=out, workflow_name: Any=workflow_name, run_name: Any=run_name) -> Array[LDNode] | None:
230
+ return WorkflowConversion_composeFormalParameterOutputIdentifiers_6DFDD678(ob.Glob)
231
+
232
+ identifiers: Array[LDNode] | None = bind(binder, out.OutputBinding)
233
+ return LDFormalParameter.create(additional_type, id, None, out.Name, None, None, None, None, True, identifiers)
234
+
235
+
236
+ def WorkflowConversion_decomposeOutputBindings_1AAAE9A5(identifiers: Array[LDNode], context: LDContext | None=None) -> OutputBinding:
237
+ def _arrow4390(n: LDNode, identifiers: Any=identifiers, context: Any=context) -> str | None:
238
+ return LDPropertyValue.try_get_as_glob(n, context)
239
+
240
+ return OutputBinding_create_6DFDD678(try_pick(_arrow4390, identifiers))
241
+
242
+
243
+ def WorkflowConversion_decomposeOutputFromFormalParameter_2664C4B8(outp: LDNode, context: LDContext | None=None, graph: LDGraph | None=None) -> CWLOutput:
244
+ t_1: CWLType = WorkflowConversion_decomposeAdditionalType_Z721C83C5(exactly_one(outp.AdditionalType))
245
+ binding: OutputBinding = WorkflowConversion_decomposeOutputBindings_1AAAE9A5(LDFormalParameter.get_identifiers(outp, graph, context), context)
246
+ def _arrow4391(value: bool, outp: Any=outp, context: Any=context, graph: Any=graph) -> bool:
247
+ return not value
248
+
249
+ optional: bool | None = map(_arrow4391, LDFormalParameter.try_get_value_required_as_boolean(outp, context))
250
+ return CWLOutput(LDFormalParameter.get_name_as_string(outp, context), t_1, binding)
251
+
252
+
253
+ def WorkflowConversion_composeComputationalTool_Z685B8F25(tool: Component) -> LDNode:
254
+ pattern_input: tuple[str, str | None]
255
+ match_value: OntologyAnnotation | None = tool.ComponentType
256
+ (pattern_matching_result, c_1) = (None, None)
257
+ if match_value is not None:
258
+ def _arrow4392(__unit: None=None, tool: Any=tool) -> bool:
259
+ c: OntologyAnnotation = match_value
260
+ return c.Name is not None
261
+
262
+ if _arrow4392():
263
+ pattern_matching_result = 0
264
+ c_1 = match_value
265
+
266
+ else:
267
+ pattern_matching_result = 1
268
+
269
+
270
+ else:
271
+ pattern_matching_result = 1
272
+
273
+ if pattern_matching_result == 0:
274
+ pattern_input = (value_2(c_1.Name), c_1.TermAccessionNumber)
275
+
276
+ elif pattern_matching_result == 1:
277
+ raise Exception("Component must have a type")
278
+
279
+ pattern_input_1: tuple[str | None, str | None]
280
+ match_value_1: Value_3 | None = tool.ComponentValue
281
+ def _arrow4393(__unit: None=None, tool: Any=tool) -> tuple[str | None, str | None]:
282
+ f: float = match_value_1.fields[0]
283
+ return (to_string(f), None)
284
+
285
+ def _arrow4394(__unit: None=None, tool: Any=tool) -> tuple[str | None, str | None]:
286
+ i: int = match_value_1.fields[0] or 0
287
+ return (int32_to_string(i), None)
288
+
289
+ def _arrow4395(__unit: None=None, tool: Any=tool) -> tuple[str | None, str | None]:
290
+ oa: OntologyAnnotation = match_value_1.fields[0]
291
+ return (oa.Name, oa.TermAccessionNumber)
292
+
293
+ def _arrow4396(__unit: None=None, tool: Any=tool) -> tuple[str | None, str | None]:
294
+ s: str = match_value_1.fields[0]
295
+ return (s, None)
296
+
297
+ pattern_input_1 = ((None, None)) if (match_value_1 is None) else (_arrow4393() if (match_value_1.tag == 2) else (_arrow4394() if (match_value_1.tag == 1) else (_arrow4395() if (match_value_1.tag == 0) else _arrow4396())))
298
+ pattern_input_2: tuple[str | None, str | None]
299
+ match_value_2: OntologyAnnotation | None = tool.ComponentUnit
300
+ if match_value_2 is None:
301
+ pattern_input_2 = (None, None)
302
+
303
+ else:
304
+ oa_1: OntologyAnnotation = match_value_2
305
+ pattern_input_2 = (oa_1.Name, oa_1.TermAccessionNumber)
306
+
307
+ return LDPropertyValue.create_component(pattern_input[0], pattern_input_1[0], None, pattern_input[1], pattern_input_2[1], pattern_input_2[0], pattern_input_1[1])
308
+
309
+
310
+ def WorkflowConversion_decomposeComputationalTool_Z6839B9E8(tool: LDNode, graph: LDGraph | None=None, context: LDContext | None=None) -> Component:
311
+ pattern_input: tuple[OntologyAnnotation, Value_3 | None, OntologyAnnotation | None] = BaseTypes_decomposePropertyValue_Z2F770004(tool, context)
312
+ return Component_create_Z2F0B38C7(pattern_input[1], pattern_input[2], pattern_input[0])
313
+
314
+
315
+ def WorkflowConversion_getInputParametersFromProcessingUnit_30922B92(pu: CWLProcessingUnit) -> Array[CWLInput]:
316
+ return CWLProcessingUnit_getInputs_30922B92(pu)
317
+
318
+
319
+ def WorkflowConversion_get_toolDescriptionTypeName(__unit: None=None) -> str:
320
+ return "ToolDescription"
321
+
322
+
323
+ def WorkflowConversion_get_workflowDescriptionTypeName(__unit: None=None) -> str:
324
+ return "WorkflowDescription"
325
+
326
+
327
+ def WorkflowConversion_get_expressionToolDescriptionTypeName(__unit: None=None) -> str:
328
+ return "ExpressionToolDescription"
329
+
330
+
331
+ def WorkflowConversion_get_operationDescriptionTypeName(__unit: None=None) -> str:
332
+ return "OperationDescription"
333
+
334
+
335
+ def WorkflowConversion_runToIdentifier_Z4EBA8CB1(run: WorkflowStepRun) -> str:
336
+ if run.tag == 1:
337
+ return "inline:CommandLineTool"
338
+
339
+ elif run.tag == 2:
340
+ return "inline:Workflow"
341
+
342
+ elif run.tag == 3:
343
+ return "inline:ExpressionTool"
344
+
345
+ elif run.tag == 4:
346
+ return "inline:Operation"
347
+
348
+ else:
349
+ return run.fields[0]
350
+
351
+
352
+
353
+ def WorkflowConversion_tryDecodeProcessingUnitFromGraph_Z5AC69418(resolved_run_path: str, graph: LDGraph | None=None, context: LDContext | None=None) -> CWLProcessingUnit | None:
354
+ def try_decode_workflow_protocol(protocol: LDNode, resolved_run_path: Any=resolved_run_path, graph: Any=graph, context: Any=context) -> CWLProcessingUnit | None:
355
+ try:
356
+ return WorkflowConversion_decomposeWorkflowProtocolToProcessingUnit_ZB11202F(protocol, False, context, graph)
357
+
358
+ except Exception as match_value:
359
+ return None
360
+
361
+
362
+ if graph is not None:
363
+ graph_1: LDGraph = graph
364
+ normalized_resolved_run_path: str = normalize(resolved_run_path)
365
+ def chooser(id: str, resolved_run_path: Any=resolved_run_path, graph: Any=graph, context: Any=context) -> LDNode | None:
366
+ return graph_1.TryGetNode(id)
367
+
368
+ class ObjectExpr4398:
369
+ @property
370
+ def Equals(self) -> Callable[[str, str], bool]:
371
+ def _arrow4397(x: str, y: str) -> bool:
372
+ return x == y
373
+
374
+ return _arrow4397
375
+
376
+ @property
377
+ def GetHashCode(self) -> Callable[[str], int]:
378
+ return string_hash
379
+
380
+ candidate_node: LDNode | None = try_pick_1(chooser, to_array(distinct(to_enumerable([resolved_run_path, normalized_resolved_run_path, ("./" + normalized_resolved_run_path) + ""]), ObjectExpr4398())))
381
+ (pattern_matching_result, node_3, node_4, node_5) = (None, None, None, None)
382
+ if candidate_node is not None:
383
+ def _arrow4399(__unit: None=None, resolved_run_path: Any=resolved_run_path, graph: Any=graph, context: Any=context) -> bool:
384
+ node: LDNode = candidate_node
385
+ return LDWorkflowProtocol.validate(node, context)
386
+
387
+ if _arrow4399():
388
+ pattern_matching_result = 0
389
+ node_3 = candidate_node
390
+
391
+ else:
392
+ def _arrow4400(__unit: None=None, resolved_run_path: Any=resolved_run_path, graph: Any=graph, context: Any=context) -> bool:
393
+ node_1: LDNode = candidate_node
394
+ return LDDataset.validate_arcworkflow(node_1, graph_1, context)
395
+
396
+ if _arrow4400():
397
+ pattern_matching_result = 1
398
+ node_4 = candidate_node
399
+
400
+ else:
401
+ def _arrow4401(__unit: None=None, resolved_run_path: Any=resolved_run_path, graph: Any=graph, context: Any=context) -> bool:
402
+ node_2: LDNode = candidate_node
403
+ return LDDataset.validate_arcrun(node_2, context)
404
+
405
+ if _arrow4401():
406
+ pattern_matching_result = 2
407
+ node_5 = candidate_node
408
+
409
+ else:
410
+ pattern_matching_result = 3
411
+
412
+
413
+
414
+
415
+ else:
416
+ pattern_matching_result = 3
417
+
418
+ if pattern_matching_result == 0:
419
+ return try_decode_workflow_protocol(node_3)
420
+
421
+ elif pattern_matching_result == 1:
422
+ return bind(try_decode_workflow_protocol, LDDataset.try_get_main_entity_as_workflow_protocol(node_4, graph_1, context))
423
+
424
+ elif pattern_matching_result == 2:
425
+ return bind(try_decode_workflow_protocol, LDDataset.try_get_main_entity_as_workflow_protocol(node_5, graph_1, context))
426
+
427
+ elif pattern_matching_result == 3:
428
+ return None
429
+
430
+
431
+ else:
432
+ return None
433
+
434
+
435
+
436
+ def WorkflowConversion_composeWorkflowProtocolFromToolDescription_7B8357DA(file_path: str, workflow: CWLToolDescription, workflow_name: str | None=None, run_name: str | None=None) -> LDNode:
437
+ def mapping(a: Array[CWLInput], file_path: Any=file_path, workflow: Any=workflow, workflow_name: Any=workflow_name, run_name: Any=run_name) -> Array[LDNode]:
438
+ def f(i: CWLInput, a: Any=a) -> LDNode:
439
+ return WorkflowConversion_composeFormalParameterFromInput_Z7A02DED7(i, workflow_name, run_name)
440
+
441
+ return ResizeArray_map(f, a)
442
+
443
+ inputs: Array[LDNode] | None = map(mapping, workflow.Inputs)
444
+ def f_1(o: CWLOutput, file_path: Any=file_path, workflow: Any=workflow, workflow_name: Any=workflow_name, run_name: Any=run_name) -> LDNode:
445
+ return WorkflowConversion_composeFormalParameterFromOutput_Z25C7EC80(o, workflow_name, run_name)
446
+
447
+ outputs: Array[LDNode] = ResizeArray_map(f_1, workflow.Outputs)
448
+ return LDWorkflowProtocol.create(file_path, inputs, outputs, None, None, None, file_path, ResizeArray_singleton(LDComputerLanguage.create_cwl()), None, None, None, None, None, None, None, None, [WorkflowConversion_get_toolDescriptionTypeName()])
449
+
450
+
451
+ def WorkflowConversion_decomposeWorkflowProtocolToToolDescription_2664C4B8(protocol: LDNode, context: LDContext | None=None, graph: LDGraph | None=None) -> CWLToolDescription:
452
+ def f(i: LDNode, protocol: Any=protocol, context: Any=context, graph: Any=graph) -> CWLInput:
453
+ return WorkflowConversion_decomposeInputFromFormalParameter_2664C4B8(i, context, graph)
454
+
455
+ inputs: Array[CWLInput] = ResizeArray_map(f, LDComputationalWorkflow.get_inputs_as_formal_parameters(protocol, graph, context))
456
+ def f_1(o: LDNode, protocol: Any=protocol, context: Any=context, graph: Any=graph) -> CWLOutput:
457
+ return WorkflowConversion_decomposeOutputFromFormalParameter_2664C4B8(o, context, graph)
458
+
459
+ return CWLToolDescription(ResizeArray_map(f_1, LDComputationalWorkflow.get_outputs_as_formal_parameter(protocol, graph, context)), None, None, None, None, None, inputs)
460
+
461
+
462
+ def WorkflowConversion_composeWorkflowProtocolFromExpressionToolDescription_Z7BEB6658(file_path: str, expression_tool: CWLExpressionToolDescription, workflow_name: str | None=None, run_name: str | None=None) -> LDNode:
463
+ def mapping(a: Array[CWLInput], file_path: Any=file_path, expression_tool: Any=expression_tool, workflow_name: Any=workflow_name, run_name: Any=run_name) -> Array[LDNode]:
464
+ def f(i: CWLInput, a: Any=a) -> LDNode:
465
+ return WorkflowConversion_composeFormalParameterFromInput_Z7A02DED7(i, workflow_name, run_name)
466
+
467
+ return ResizeArray_map(f, a)
468
+
469
+ inputs: Array[LDNode] | None = map(mapping, expression_tool.Inputs)
470
+ def f_1(o: CWLOutput, file_path: Any=file_path, expression_tool: Any=expression_tool, workflow_name: Any=workflow_name, run_name: Any=run_name) -> LDNode:
471
+ return WorkflowConversion_composeFormalParameterFromOutput_Z25C7EC80(o, workflow_name, run_name)
472
+
473
+ outputs: Array[LDNode] = ResizeArray_map(f_1, expression_tool.Outputs)
474
+ protocol: LDNode = LDWorkflowProtocol.create(file_path, inputs, outputs, None, None, None, file_path, ResizeArray_singleton(LDComputerLanguage.create_cwl()), None, None, None, None, None, None, None, None, [WorkflowConversion_get_expressionToolDescriptionTypeName()])
475
+ LDLabProtocol.set_description_as_string(protocol, expression_tool.Expression)
476
+ return protocol
477
+
478
+
479
+ def WorkflowConversion_decomposeWorkflowProtocolToExpressionToolDescription_2664C4B8(protocol: LDNode, context: LDContext | None=None, graph: LDGraph | None=None) -> CWLExpressionToolDescription:
480
+ def f(i: LDNode, protocol: Any=protocol, context: Any=context, graph: Any=graph) -> CWLInput:
481
+ return WorkflowConversion_decomposeInputFromFormalParameter_2664C4B8(i, context, graph)
482
+
483
+ inputs: Array[CWLInput] = ResizeArray_map(f, LDComputationalWorkflow.get_inputs_as_formal_parameters(protocol, graph, context))
484
+ def f_1(o: LDNode, protocol: Any=protocol, context: Any=context, graph: Any=graph) -> CWLOutput:
485
+ return WorkflowConversion_decomposeOutputFromFormalParameter_2664C4B8(o, context, graph)
486
+
487
+ return CWLExpressionToolDescription(ResizeArray_map(f_1, LDComputationalWorkflow.get_outputs_as_formal_parameter(protocol, graph, context)), default_arg(LDLabProtocol.try_get_description_as_string(protocol, context), "$(null)"), None, None, None, None, inputs)
488
+
489
+
490
+ def WorkflowConversion_composeWorkflowProtocolFromOperationDescription_Z75DE0D49(file_path: str, operation: CWLOperationDescription, workflow_name: str | None=None, run_name: str | None=None) -> LDNode:
491
+ def f(i: CWLInput, file_path: Any=file_path, operation: Any=operation, workflow_name: Any=workflow_name, run_name: Any=run_name) -> LDNode:
492
+ return WorkflowConversion_composeFormalParameterFromInput_Z7A02DED7(i, workflow_name, run_name)
493
+
494
+ inputs: Array[LDNode] = ResizeArray_map(f, operation.Inputs)
495
+ def f_1(o: CWLOutput, file_path: Any=file_path, operation: Any=operation, workflow_name: Any=workflow_name, run_name: Any=run_name) -> LDNode:
496
+ return WorkflowConversion_composeFormalParameterFromOutput_Z25C7EC80(o, workflow_name, run_name)
497
+
498
+ outputs: Array[LDNode] = ResizeArray_map(f_1, operation.Outputs)
499
+ return LDWorkflowProtocol.create(file_path, inputs, outputs, None, None, None, file_path, ResizeArray_singleton(LDComputerLanguage.create_cwl()), None, None, None, None, None, None, None, None, [WorkflowConversion_get_operationDescriptionTypeName()])
500
+
501
+
502
+ def WorkflowConversion_decomposeWorkflowProtocolToOperationDescription_2664C4B8(protocol: LDNode, context: LDContext | None=None, graph: LDGraph | None=None) -> CWLOperationDescription:
503
+ def f(i: LDNode, protocol: Any=protocol, context: Any=context, graph: Any=graph) -> CWLInput:
504
+ return WorkflowConversion_decomposeInputFromFormalParameter_2664C4B8(i, context, graph)
505
+
506
+ def f_1(o: LDNode, protocol: Any=protocol, context: Any=context, graph: Any=graph) -> CWLOutput:
507
+ return WorkflowConversion_decomposeOutputFromFormalParameter_2664C4B8(o, context, graph)
508
+
509
+ return CWLOperationDescription(ResizeArray_map(f, LDComputationalWorkflow.get_inputs_as_formal_parameters(protocol, graph, context)), ResizeArray_map(f_1, LDComputationalWorkflow.get_outputs_as_formal_parameter(protocol, graph, context)))
510
+
511
+
512
+ def WorkflowConversion_composeWorkflowStep_Z35AB9E5D(step: WorkflowStep, workflow_id: Any) -> LDNode:
513
+ id: str = ((("WorkflowStep_" + str(workflow_id)) + "_") + step.Id) + ""
514
+ cw: LDNode = LDComputationalWorkflow.create(id, None, None, None, None, None, step.Id)
515
+ LDDataset.set_identifier_as_string(cw, WorkflowConversion_runToIdentifier_Z4EBA8CB1(step.Run))
516
+ return cw
517
+
518
+
519
+ def WorkflowConversion_composeWorkflowProtocolFromWorkflow_Z6FBB852F(file_path: str, workflow: CWLWorkflowDescription, workflow_name: str | None=None, run_name: str | None=None) -> LDNode:
520
+ def f(i: CWLInput, file_path: Any=file_path, workflow: Any=workflow, workflow_name: Any=workflow_name, run_name: Any=run_name) -> LDNode:
521
+ return WorkflowConversion_composeFormalParameterFromInput_Z7A02DED7(i, workflow_name, run_name)
522
+
523
+ inputs: Array[LDNode] = ResizeArray_map(f, workflow.Inputs)
524
+ def f_1(o: CWLOutput, file_path: Any=file_path, workflow: Any=workflow, workflow_name: Any=workflow_name, run_name: Any=run_name) -> LDNode:
525
+ return WorkflowConversion_composeFormalParameterFromOutput_Z25C7EC80(o, workflow_name, run_name)
526
+
527
+ outputs: Array[LDNode] = ResizeArray_map(f_1, workflow.Outputs)
528
+ def f_2(s: WorkflowStep, file_path: Any=file_path, workflow: Any=workflow, workflow_name: Any=workflow_name, run_name: Any=run_name) -> LDNode:
529
+ return WorkflowConversion_composeWorkflowStep_Z35AB9E5D(s, file_path)
530
+
531
+ steps: Array[LDNode] = ResizeArray_map(f_2, workflow.Steps)
532
+ return LDWorkflowProtocol.create(file_path, inputs, outputs, None, None, None, file_path, ResizeArray_singleton(LDComputerLanguage.create_cwl()), None, None, None, None, steps, None, None, None, [WorkflowConversion_get_workflowDescriptionTypeName()])
533
+
534
+
535
+ def WorkflowConversion_decomposeWorkflowStep_77DD0449(step: LDNode, workflow_file_path: str | None=None, resolve_run_references: bool | None=None, context: LDContext | None=None, graph: LDGraph | None=None) -> WorkflowStep:
536
+ def _arrow4402(__unit: None=None, step: Any=step, workflow_file_path: Any=workflow_file_path, resolve_run_references: Any=resolve_run_references, context: Any=context, graph: Any=graph) -> WorkflowStepRun:
537
+ initial_run: WorkflowStepRun = WorkflowStepRun(0, LDDataset.get_identifier_as_string(step, context))
538
+ def try_resolve_run_path(run_path: str) -> CWLProcessingUnit | None:
539
+ return WorkflowConversion_tryDecodeProcessingUnitFromGraph_Z5AC69418(run_path, graph, context)
540
+
541
+ return initial_run if (not default_arg(resolve_run_references, True)) else (initial_run if (workflow_file_path is None) else resolve_workflow_step_run_from_lookup(workflow_file_path, initial_run, try_resolve_run_path))
542
+
543
+ return WorkflowStep(LDComputationalWorkflow.get_name_as_string(step, context), [], [], _arrow4402())
544
+
545
+
546
+ def WorkflowConversion_decomposeWorkflowProtocolToWorkflow_ZB11202F(protocol: LDNode, resolve_run_references: bool | None=None, context: LDContext | None=None, graph: LDGraph | None=None) -> CWLWorkflowDescription:
547
+ workflow_file_path: str = default_arg(LDDataset.try_get_identifier_as_string(protocol, context), protocol.Id)
548
+ should_resolve_run_references: bool = default_arg(resolve_run_references, True)
549
+ def f(i: LDNode, protocol: Any=protocol, resolve_run_references: Any=resolve_run_references, context: Any=context, graph: Any=graph) -> CWLInput:
550
+ return WorkflowConversion_decomposeInputFromFormalParameter_2664C4B8(i, context, graph)
551
+
552
+ inputs: Array[CWLInput] = ResizeArray_map(f, LDComputationalWorkflow.get_inputs_as_formal_parameters(protocol, graph, context))
553
+ def f_1(o: LDNode, protocol: Any=protocol, resolve_run_references: Any=resolve_run_references, context: Any=context, graph: Any=graph) -> CWLOutput:
554
+ return WorkflowConversion_decomposeOutputFromFormalParameter_2664C4B8(o, context, graph)
555
+
556
+ outputs: Array[CWLOutput] = ResizeArray_map(f_1, LDComputationalWorkflow.get_outputs_as_formal_parameter(protocol, graph, context))
557
+ def f_2(s: LDNode, protocol: Any=protocol, resolve_run_references: Any=resolve_run_references, context: Any=context, graph: Any=graph) -> WorkflowStep:
558
+ return WorkflowConversion_decomposeWorkflowStep_77DD0449(s, workflow_file_path, should_resolve_run_references, context, graph)
559
+
560
+ return CWLWorkflowDescription(ResizeArray_map(f_2, LDComputationalWorkflow.get_has_part(protocol, graph, context)), inputs, outputs)
561
+
562
+
563
+ def WorkflowConversion_composeWorkflowProtocolFromProcessingUnit_Z3099C0F7(file_path: str, pu: CWLProcessingUnit, workflow_name: str | None=None, run_name: str | None=None) -> LDNode:
564
+ if pu.tag == 1:
565
+ return WorkflowConversion_composeWorkflowProtocolFromWorkflow_Z6FBB852F(file_path, pu.fields[0], workflow_name, run_name)
566
+
567
+ elif pu.tag == 2:
568
+ return WorkflowConversion_composeWorkflowProtocolFromExpressionToolDescription_Z7BEB6658(file_path, pu.fields[0], workflow_name, run_name)
569
+
570
+ elif pu.tag == 3:
571
+ return WorkflowConversion_composeWorkflowProtocolFromOperationDescription_Z75DE0D49(file_path, pu.fields[0], workflow_name, run_name)
572
+
573
+ else:
574
+ return WorkflowConversion_composeWorkflowProtocolFromToolDescription_7B8357DA(file_path, pu.fields[0], workflow_name, run_name)
575
+
576
+
577
+
578
+ def WorkflowConversion_decomposeWorkflowProtocolToProcessingUnit_ZB11202F(protocol: LDNode, resolve_run_references: bool | None=None, context: LDContext | None=None, graph: LDGraph | None=None) -> CWLProcessingUnit:
579
+ should_resolve_run_references: bool = default_arg(resolve_run_references, True)
580
+ match_value: str = LDComputationalWorkflow.get_additional_type_as_string(protocol, context)
581
+ if match_value == WorkflowConversion_get_workflowDescriptionTypeName():
582
+ return CWLProcessingUnit(1, WorkflowConversion_decomposeWorkflowProtocolToWorkflow_ZB11202F(protocol, should_resolve_run_references, context, graph))
583
+
584
+ elif match_value == WorkflowConversion_get_expressionToolDescriptionTypeName():
585
+ return CWLProcessingUnit(2, WorkflowConversion_decomposeWorkflowProtocolToExpressionToolDescription_2664C4B8(protocol, context, graph))
586
+
587
+ elif match_value == WorkflowConversion_get_operationDescriptionTypeName():
588
+ return CWLProcessingUnit(3, WorkflowConversion_decomposeWorkflowProtocolToOperationDescription_2664C4B8(protocol, context, graph))
589
+
590
+ else:
591
+ return CWLProcessingUnit(0, WorkflowConversion_decomposeWorkflowProtocolToToolDescription_2664C4B8(protocol, context, graph))
592
+
593
+
594
+
595
+ def WorkflowConversion_composeWorkflow_42450E6E(workflow: ArcWorkflow, fs: FileSystem | None=None) -> LDNode:
596
+ workflow_protocol: LDNode
597
+ workflow_file_path: str = Workflow_cwlFileNameFromIdentifier(workflow.Identifier)
598
+ match_value: CWLProcessingUnit | None = workflow.CWLDescription
599
+ if match_value is None:
600
+ arg: str = workflow.Identifier
601
+ workflow_protocol = to_fail(printf("Workflow %s must have a CWL description"))(arg)
602
+
603
+ else:
604
+ workflow_protocol = WorkflowConversion_composeWorkflowProtocolFromProcessingUnit_Z3099C0F7(workflow_file_path, match_value, workflow.Identifier)
605
+
606
+ publisher: LDNode = LDOrganization.create("DataPLANT")
607
+ def f(c: Person, workflow: Any=workflow, fs: Any=fs) -> LDNode:
608
+ return PersonConversion_composePerson_Z64D846DC(c)
609
+
610
+ creators: Array[LDNode] | None = Option_fromSeq(ResizeArray_map(f, workflow.Contacts))
611
+ date_created: Any = utc_now()
612
+ if creators is not None:
613
+ LDComputationalWorkflow.set_creators(workflow_protocol, value_2(creators))
614
+
615
+ LDComputationalWorkflow.set_sd_publisher(workflow_protocol, publisher)
616
+ LDComputationalWorkflow.set_date_created_as_date_time(workflow_protocol, date_created)
617
+ if workflow.Version is not None:
618
+ LDLabProtocol.set_version_as_string(workflow_protocol, value_2(workflow.Version))
619
+
620
+ if workflow.URI is not None:
621
+ LDLabProtocol.set_url(workflow_protocol, value_2(workflow.URI))
622
+
623
+ if workflow.WorkflowType is not None:
624
+ intended_use: LDNode = BaseTypes_composeDefinedTerm_ZDED3A0F(value_2(workflow.WorkflowType))
625
+ LDLabProtocol.set_intended_use_as_defined_term(workflow_protocol, intended_use)
626
+
627
+ def f_1(df: LDNode, workflow: Any=workflow, fs: Any=fs) -> LDNode | None:
628
+ return LDPropertyValue.try_get_subject_of(df)
629
+
630
+ def mapping(datamap: Datamap, workflow: Any=workflow, fs: Any=fs) -> Array[LDNode]:
631
+ return DatamapConversion_composeFragmentDescriptors_Z892BFC3(datamap)
632
+
633
+ data_files: Array[LDNode] = ResizeArray_choose(f_1, default_arg(map(mapping, workflow.Datamap), []))
634
+ if len(workflow.Components) > 0:
635
+ def f_2(tool: Component, workflow: Any=workflow, fs: Any=fs) -> LDNode:
636
+ return WorkflowConversion_composeComputationalTool_Z685B8F25(tool)
637
+
638
+ software_tools: Array[LDNode] = ResizeArray_map(f_2, workflow.Components)
639
+ LDLabProtocol.set_computational_tools(workflow_protocol, software_tools)
640
+
641
+ has_parts: Array[LDNode] | None = ResizeArray_singleton(workflow_protocol) if (len(data_files) == 0) else ResizeArray_appendSingleton(workflow_protocol, data_files)
642
+ def f_3(c_1: Comment, workflow: Any=workflow, fs: Any=fs) -> LDNode:
643
+ return BaseTypes_composeComment_Z13201A7E(c_1)
644
+
645
+ comments: Array[LDNode] | None = Option_fromSeq(ResizeArray_map(f_3, workflow.Comments))
646
+ return LDDataset.create_arcworkflow(workflow.Identifier, ResizeArray_singleton(workflow_protocol), None, workflow.Title, workflow.Description, creators, has_parts, comments)
647
+
648
+
649
+ def WorkflowConversion_decomposeWorkflow_Z6839B9E8(workflow: LDNode, graph: LDGraph | None=None, context: LDContext | None=None) -> ArcWorkflow:
650
+ def predicate(me: LDNode, workflow: Any=workflow, graph: Any=graph, context: Any=context) -> bool:
651
+ return LDComputationalWorkflow.validate(me, context)
652
+
653
+ workflow_protocol: LDNode = find(predicate, LDDataset.get_main_entities(workflow, graph, context))
654
+ cwl_description: CWLProcessingUnit = WorkflowConversion_decomposeWorkflowProtocolToProcessingUnit_ZB11202F(workflow_protocol, None, context, graph)
655
+ version: str | None = LDLabProtocol.try_get_version_as_string(workflow_protocol, context)
656
+ uri: str | None = LDLabProtocol.try_get_url(workflow_protocol, context)
657
+ def mapping(iu: LDNode, workflow: Any=workflow, graph: Any=graph, context: Any=context) -> OntologyAnnotation:
658
+ return BaseTypes_decomposeDefinedTerm_Z2F770004(iu, context)
659
+
660
+ workflow_type: OntologyAnnotation | None = map(mapping, LDLabProtocol.try_get_intended_use_as_defined_term(workflow_protocol, graph, context))
661
+ def f(ct: LDNode, workflow: Any=workflow, graph: Any=graph, context: Any=context) -> Component:
662
+ return WorkflowConversion_decomposeComputationalTool_Z6839B9E8(ct, graph, context)
663
+
664
+ components: Array[Component] = ResizeArray_map(f, LDLabProtocol.get_computational_tools(workflow_protocol, graph, context))
665
+ def f_1(c: LDNode, workflow: Any=workflow, graph: Any=graph, context: Any=context) -> Person:
666
+ return PersonConversion_decomposePerson_Z6839B9E8(c, graph, context)
667
+
668
+ contacts: Array[Person] = ResizeArray_map(f_1, LDDataset.get_creators(workflow, graph, context))
669
+ def f_2(c_1: LDNode, workflow: Any=workflow, graph: Any=graph, context: Any=context) -> Comment:
670
+ return BaseTypes_decomposeComment_Z2F770004(c_1, context)
671
+
672
+ comments: Array[Comment] = ResizeArray_map(f_2, LDDataset.get_comments(workflow, graph, context))
673
+ datamap: Datamap | None
674
+ v: Datamap = DatamapConversion_decomposeFragmentDescriptors_Z6E59645F(LDDataset.get_variable_measured_as_fragment_descriptors(workflow, graph, context), graph, context)
675
+ datamap = Option_fromValueWithDefault(Datamap.init(), v)
676
+ return ArcWorkflow.create(LDDataset.get_identifier_as_string(workflow, context), LDDataset.try_get_name_as_string(workflow, context), LDDataset.try_get_description_as_string(workflow, context), workflow_type, uri, version, None, None, components, datamap, contacts, cwl_description, comments)
677
+
678
+
679
+ __all__ = ["WorkflowConversion_reflection", "WorkflowConversion_composeAdditionalType_Z5C31A0F9", "WorkflowConversion_decomposeAdditionalType_Z721C83C5", "WorkflowConversion_composeFormalParamInputIdentifiers", "WorkflowConversion_composeFormalParameterFromInput_Z7A02DED7", "WorkflowConversion_decomposeInputBindings_1AAAE9A5", "WorkflowConversion_decomposeInputFromFormalParameter_2664C4B8", "WorkflowConversion_composeFormalParameterOutputIdentifiers_6DFDD678", "WorkflowConversion_composeFormalParameterFromOutput_Z25C7EC80", "WorkflowConversion_decomposeOutputBindings_1AAAE9A5", "WorkflowConversion_decomposeOutputFromFormalParameter_2664C4B8", "WorkflowConversion_composeComputationalTool_Z685B8F25", "WorkflowConversion_decomposeComputationalTool_Z6839B9E8", "WorkflowConversion_getInputParametersFromProcessingUnit_30922B92", "WorkflowConversion_get_toolDescriptionTypeName", "WorkflowConversion_get_workflowDescriptionTypeName", "WorkflowConversion_get_expressionToolDescriptionTypeName", "WorkflowConversion_get_operationDescriptionTypeName", "WorkflowConversion_runToIdentifier_Z4EBA8CB1", "WorkflowConversion_tryDecodeProcessingUnitFromGraph_Z5AC69418", "WorkflowConversion_composeWorkflowProtocolFromToolDescription_7B8357DA", "WorkflowConversion_decomposeWorkflowProtocolToToolDescription_2664C4B8", "WorkflowConversion_composeWorkflowProtocolFromExpressionToolDescription_Z7BEB6658", "WorkflowConversion_decomposeWorkflowProtocolToExpressionToolDescription_2664C4B8", "WorkflowConversion_composeWorkflowProtocolFromOperationDescription_Z75DE0D49", "WorkflowConversion_decomposeWorkflowProtocolToOperationDescription_2664C4B8", "WorkflowConversion_composeWorkflowStep_Z35AB9E5D", "WorkflowConversion_composeWorkflowProtocolFromWorkflow_Z6FBB852F", "WorkflowConversion_decomposeWorkflowStep_77DD0449", "WorkflowConversion_decomposeWorkflowProtocolToWorkflow_ZB11202F", "WorkflowConversion_composeWorkflowProtocolFromProcessingUnit_Z3099C0F7", "WorkflowConversion_decomposeWorkflowProtocolToProcessingUnit_ZB11202F", "WorkflowConversion_composeWorkflow_42450E6E", "WorkflowConversion_decomposeWorkflow_Z6839B9E8"]
680
+