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,600 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from typing import (Any, TypeVar)
4
+ from ..fable_modules.fable_library.list import (choose, of_array, FSharpList, singleton, empty)
5
+ from ..fable_modules.fable_library.option import (map, default_arg, value as value_9, bind)
6
+ from ..fable_modules.fable_library.seq import (map as map_1, to_list, delay, append, empty as empty_1, singleton as singleton_1, try_pick, length)
7
+ from ..fable_modules.fable_library.string_ import replace
8
+ from ..fable_modules.fable_library.types import Array
9
+ from ..fable_modules.fable_library.util import IEnumerable_1
10
+ from ..fable_modules.thoth_json_core.decode import (object, IRequiredGetter, string, IOptionalGetter, resize_array, IGetters, list_1 as list_1_2, map as map_2)
11
+ from ..fable_modules.thoth_json_core.encode import list_1 as list_1_1
12
+ from ..fable_modules.thoth_json_core.types import (IEncodable, IEncoderHelpers_1, Decoder_1)
13
+ from ..Core.arc_types import ArcAssay
14
+ from ..Core.comment import Comment
15
+ from ..Core.conversion import (ARCtrl_ArcTables__ArcTables_GetProcesses, ARCtrl_ArcTables__ArcTables_fromProcesses_Static_62A3309D, JsonTypes_composeTechnologyPlatform, JsonTypes_decomposeTechnologyPlatform)
16
+ from ..Core.data import Data
17
+ from ..Core.datamap import Datamap
18
+ from ..Core.Helper.collections_ import (Option_fromValueWithDefault, ResizeArray_filter)
19
+ from ..Core.Helper.identifier import (Assay_fileNameFromIdentifier, create_missing_identifier, Assay_tryIdentifierFromFileName)
20
+ from ..Core.ontology_annotation import OntologyAnnotation
21
+ from ..Core.person import Person
22
+ from ..Core.Process.material_attribute import MaterialAttribute
23
+ from ..Core.Process.process import Process
24
+ from ..Core.Process.process_sequence import (get_data, get_units, get_characteristics)
25
+ from ..Core.Table.arc_table import ArcTable
26
+ from ..Core.Table.arc_tables import ArcTables
27
+ from ..Core.Table.composite_cell import CompositeCell
28
+ from .comment import (encoder as encoder_7, decoder as decoder_4, ROCrate_encoder as ROCrate_encoder_4, ROCrate_decoder as ROCrate_decoder_3, ISAJson_encoder as ISAJson_encoder_3, ISAJson_decoder as ISAJson_decoder_2)
29
+ from .context.rocrate.isa_assay_context import context_jsonvalue
30
+ from .data import (ROCrate_encoder as ROCrate_encoder_2, ISAJson_encoder as ISAJson_encoder_1)
31
+ from .Datamap.datamap import (encoder as encoder_4, decoder as decoder_2, encoder_compressed as encoder_compressed_2, decoder_compressed as decoder_compressed_2)
32
+ from .decode import Decode_objectNoAdditionalProperties
33
+ from .encode import (try_include, try_include_seq, try_include_list)
34
+ from .idtable import encode
35
+ from .ontology_annotation import (OntologyAnnotation_encoder, OntologyAnnotation_decoder, OntologyAnnotation_ROCrate_encoderPropertyValue, OntologyAnnotation_ROCrate_encoderDefinedTerm, OntologyAnnotation_ROCrate_decoderPropertyValue, OntologyAnnotation_ROCrate_decoderDefinedTerm, OntologyAnnotation_ISAJson_encoder, OntologyAnnotation_ISAJson_decoder)
36
+ from .person import (encoder as encoder_6, decoder as decoder_3, ROCrate_encoder as ROCrate_encoder_1, ROCrate_decoder as ROCrate_decoder_2)
37
+ from .Process.assay_materials import encoder as encoder_9
38
+ from .Process.material_attribute import encoder as encoder_8
39
+ from .Process.process import (ROCrate_encoder as ROCrate_encoder_3, ROCrate_decoder as ROCrate_decoder_1, ISAJson_encoder as ISAJson_encoder_2, ISAJson_decoder as ISAJson_decoder_1)
40
+ from .Table.arc_table import (encoder as encoder_5, decoder as decoder_1, encoder_compressed as encoder_compressed_1, decoder_compressed as decoder_compressed_1)
41
+
42
+ __A_ = TypeVar("__A_")
43
+
44
+ def encoder(assay: ArcAssay) -> IEncodable:
45
+ def chooser(tupled_arg: tuple[str, IEncodable | None], assay: Any=assay) -> tuple[str, IEncodable] | None:
46
+ def mapping(v_1: IEncodable, tupled_arg: Any=tupled_arg) -> tuple[str, IEncodable]:
47
+ return (tupled_arg[0], v_1)
48
+
49
+ return map(mapping, tupled_arg[1])
50
+
51
+ def _arrow3557(__unit: None=None, assay: Any=assay) -> IEncodable:
52
+ value: str = assay.Identifier
53
+ class ObjectExpr3556(IEncodable):
54
+ def Encode(self, helpers: IEncoderHelpers_1[Any]) -> Any:
55
+ return helpers.encode_string(value)
56
+
57
+ return ObjectExpr3556()
58
+
59
+ def _arrow3559(value_1: str, assay: Any=assay) -> IEncodable:
60
+ class ObjectExpr3558(IEncodable):
61
+ def Encode(self, helpers_1: IEncoderHelpers_1[Any]) -> Any:
62
+ return helpers_1.encode_string(value_1)
63
+
64
+ return ObjectExpr3558()
65
+
66
+ def _arrow3561(value_3: str, assay: Any=assay) -> IEncodable:
67
+ class ObjectExpr3560(IEncodable):
68
+ def Encode(self, helpers_2: IEncoderHelpers_1[Any]) -> Any:
69
+ return helpers_2.encode_string(value_3)
70
+
71
+ return ObjectExpr3560()
72
+
73
+ def _arrow3562(oa: OntologyAnnotation, assay: Any=assay) -> IEncodable:
74
+ return OntologyAnnotation_encoder(oa)
75
+
76
+ def _arrow3563(oa_1: OntologyAnnotation, assay: Any=assay) -> IEncodable:
77
+ return OntologyAnnotation_encoder(oa_1)
78
+
79
+ def _arrow3564(oa_2: OntologyAnnotation, assay: Any=assay) -> IEncodable:
80
+ return OntologyAnnotation_encoder(oa_2)
81
+
82
+ def _arrow3565(dm: Datamap, assay: Any=assay) -> IEncodable:
83
+ return encoder_4(dm)
84
+
85
+ def _arrow3566(table: ArcTable, assay: Any=assay) -> IEncodable:
86
+ return encoder_5(table)
87
+
88
+ def _arrow3567(person: Person, assay: Any=assay) -> IEncodable:
89
+ return encoder_6(person)
90
+
91
+ def _arrow3568(comment: Comment, assay: Any=assay) -> IEncodable:
92
+ return encoder_7(comment)
93
+
94
+ values: FSharpList[tuple[str, IEncodable]] = choose(chooser, of_array([("Identifier", _arrow3557()), try_include("Title", _arrow3559, assay.Title), try_include("Description", _arrow3561, assay.Description), try_include("MeasurementType", _arrow3562, assay.MeasurementType), try_include("TechnologyType", _arrow3563, assay.TechnologyType), try_include("TechnologyPlatform", _arrow3564, assay.TechnologyPlatform), try_include("Datamap", _arrow3565, assay.Datamap), try_include_seq("Tables", _arrow3566, assay.Tables), try_include_seq("Performers", _arrow3567, assay.Performers), try_include_seq("Comments", _arrow3568, assay.Comments)]))
95
+ class ObjectExpr3569(IEncodable):
96
+ def Encode(self, helpers_3: IEncoderHelpers_1[Any], assay: Any=assay) -> Any:
97
+ def mapping_1(tupled_arg_1: tuple[str, IEncodable]) -> tuple[str, __A_]:
98
+ return (tupled_arg_1[0], tupled_arg_1[1].Encode(helpers_3))
99
+
100
+ arg: IEnumerable_1[tuple[str, __A_]] = map_1(mapping_1, values)
101
+ return helpers_3.encode_object(arg)
102
+
103
+ return ObjectExpr3569()
104
+
105
+
106
+ def _arrow3580(get: IGetters) -> ArcAssay:
107
+ def _arrow3570(__unit: None=None) -> str:
108
+ object_arg: IRequiredGetter = get.Required
109
+ return object_arg.Field("Identifier", string)
110
+
111
+ def _arrow3571(__unit: None=None) -> str | None:
112
+ object_arg_1: IOptionalGetter = get.Optional
113
+ return object_arg_1.Field("Title", string)
114
+
115
+ def _arrow3572(__unit: None=None) -> str | None:
116
+ object_arg_2: IOptionalGetter = get.Optional
117
+ return object_arg_2.Field("Description", string)
118
+
119
+ def _arrow3573(__unit: None=None) -> OntologyAnnotation | None:
120
+ object_arg_3: IOptionalGetter = get.Optional
121
+ return object_arg_3.Field("MeasurementType", OntologyAnnotation_decoder)
122
+
123
+ def _arrow3574(__unit: None=None) -> OntologyAnnotation | None:
124
+ object_arg_4: IOptionalGetter = get.Optional
125
+ return object_arg_4.Field("TechnologyType", OntologyAnnotation_decoder)
126
+
127
+ def _arrow3575(__unit: None=None) -> OntologyAnnotation | None:
128
+ object_arg_5: IOptionalGetter = get.Optional
129
+ return object_arg_5.Field("TechnologyPlatform", OntologyAnnotation_decoder)
130
+
131
+ def _arrow3576(__unit: None=None) -> Array[ArcTable] | None:
132
+ arg_13: Decoder_1[Array[ArcTable]] = resize_array(decoder_1)
133
+ object_arg_6: IOptionalGetter = get.Optional
134
+ return object_arg_6.Field("Tables", arg_13)
135
+
136
+ def _arrow3577(__unit: None=None) -> Datamap | None:
137
+ object_arg_7: IOptionalGetter = get.Optional
138
+ return object_arg_7.Field("Datamap", decoder_2)
139
+
140
+ def _arrow3578(__unit: None=None) -> Array[Person] | None:
141
+ arg_17: Decoder_1[Array[Person]] = resize_array(decoder_3)
142
+ object_arg_8: IOptionalGetter = get.Optional
143
+ return object_arg_8.Field("Performers", arg_17)
144
+
145
+ def _arrow3579(__unit: None=None) -> Array[Comment] | None:
146
+ arg_19: Decoder_1[Array[Comment]] = resize_array(decoder_4)
147
+ object_arg_9: IOptionalGetter = get.Optional
148
+ return object_arg_9.Field("Comments", arg_19)
149
+
150
+ return ArcAssay.create(_arrow3570(), _arrow3571(), _arrow3572(), _arrow3573(), _arrow3574(), _arrow3575(), _arrow3576(), _arrow3577(), _arrow3578(), _arrow3579())
151
+
152
+
153
+ decoder: Decoder_1[ArcAssay] = object(_arrow3580)
154
+
155
+ def encoder_compressed(string_table: Any, oa_table: Any, cell_table: Any, assay: ArcAssay) -> IEncodable:
156
+ def chooser(tupled_arg: tuple[str, IEncodable | None], string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> tuple[str, IEncodable] | None:
157
+ def mapping(v_1: IEncodable, tupled_arg: Any=tupled_arg) -> tuple[str, IEncodable]:
158
+ return (tupled_arg[0], v_1)
159
+
160
+ return map(mapping, tupled_arg[1])
161
+
162
+ def _arrow3584(__unit: None=None, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
163
+ value: str = assay.Identifier
164
+ class ObjectExpr3583(IEncodable):
165
+ def Encode(self, helpers: IEncoderHelpers_1[Any]) -> Any:
166
+ return helpers.encode_string(value)
167
+
168
+ return ObjectExpr3583()
169
+
170
+ def _arrow3586(value_1: str, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
171
+ class ObjectExpr3585(IEncodable):
172
+ def Encode(self, helpers_1: IEncoderHelpers_1[Any]) -> Any:
173
+ return helpers_1.encode_string(value_1)
174
+
175
+ return ObjectExpr3585()
176
+
177
+ def _arrow3588(value_3: str, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
178
+ class ObjectExpr3587(IEncodable):
179
+ def Encode(self, helpers_2: IEncoderHelpers_1[Any]) -> Any:
180
+ return helpers_2.encode_string(value_3)
181
+
182
+ return ObjectExpr3587()
183
+
184
+ def _arrow3589(oa: OntologyAnnotation, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
185
+ return OntologyAnnotation_encoder(oa)
186
+
187
+ def _arrow3590(oa_1: OntologyAnnotation, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
188
+ return OntologyAnnotation_encoder(oa_1)
189
+
190
+ def _arrow3591(oa_2: OntologyAnnotation, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
191
+ return OntologyAnnotation_encoder(oa_2)
192
+
193
+ def _arrow3592(table: ArcTable, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
194
+ return encoder_compressed_1(string_table, oa_table, cell_table, table)
195
+
196
+ def _arrow3593(dm: Datamap, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
197
+ return encoder_compressed_2(string_table, oa_table, cell_table, dm)
198
+
199
+ def _arrow3594(person: Person, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
200
+ return encoder_6(person)
201
+
202
+ def _arrow3595(comment: Comment, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> IEncodable:
203
+ return encoder_7(comment)
204
+
205
+ values: FSharpList[tuple[str, IEncodable]] = choose(chooser, of_array([("Identifier", _arrow3584()), try_include("Title", _arrow3586, assay.Title), try_include("Description", _arrow3588, assay.Description), try_include("MeasurementType", _arrow3589, assay.MeasurementType), try_include("TechnologyType", _arrow3590, assay.TechnologyType), try_include("TechnologyPlatform", _arrow3591, assay.TechnologyPlatform), try_include_seq("Tables", _arrow3592, assay.Tables), try_include("Datamap", _arrow3593, assay.Datamap), try_include_seq("Performers", _arrow3594, assay.Performers), try_include_seq("Comments", _arrow3595, assay.Comments)]))
206
+ class ObjectExpr3596(IEncodable):
207
+ def Encode(self, helpers_3: IEncoderHelpers_1[Any], string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table, assay: Any=assay) -> Any:
208
+ def mapping_1(tupled_arg_1: tuple[str, IEncodable]) -> tuple[str, __A_]:
209
+ return (tupled_arg_1[0], tupled_arg_1[1].Encode(helpers_3))
210
+
211
+ arg: IEnumerable_1[tuple[str, __A_]] = map_1(mapping_1, values)
212
+ return helpers_3.encode_object(arg)
213
+
214
+ return ObjectExpr3596()
215
+
216
+
217
+ def decoder_compressed(string_table: Array[str], oa_table: Array[OntologyAnnotation], cell_table: Array[CompositeCell]) -> Decoder_1[ArcAssay]:
218
+ def _arrow3607(get: IGetters, string_table: Any=string_table, oa_table: Any=oa_table, cell_table: Any=cell_table) -> ArcAssay:
219
+ def _arrow3597(__unit: None=None) -> str:
220
+ object_arg: IRequiredGetter = get.Required
221
+ return object_arg.Field("Identifier", string)
222
+
223
+ def _arrow3598(__unit: None=None) -> str | None:
224
+ object_arg_1: IOptionalGetter = get.Optional
225
+ return object_arg_1.Field("Title", string)
226
+
227
+ def _arrow3599(__unit: None=None) -> str | None:
228
+ object_arg_2: IOptionalGetter = get.Optional
229
+ return object_arg_2.Field("Description", string)
230
+
231
+ def _arrow3600(__unit: None=None) -> OntologyAnnotation | None:
232
+ object_arg_3: IOptionalGetter = get.Optional
233
+ return object_arg_3.Field("MeasurementType", OntologyAnnotation_decoder)
234
+
235
+ def _arrow3601(__unit: None=None) -> OntologyAnnotation | None:
236
+ object_arg_4: IOptionalGetter = get.Optional
237
+ return object_arg_4.Field("TechnologyType", OntologyAnnotation_decoder)
238
+
239
+ def _arrow3602(__unit: None=None) -> OntologyAnnotation | None:
240
+ object_arg_5: IOptionalGetter = get.Optional
241
+ return object_arg_5.Field("TechnologyPlatform", OntologyAnnotation_decoder)
242
+
243
+ def _arrow3603(__unit: None=None) -> Array[ArcTable] | None:
244
+ arg_13: Decoder_1[Array[ArcTable]] = resize_array(decoder_compressed_1(string_table, oa_table, cell_table))
245
+ object_arg_6: IOptionalGetter = get.Optional
246
+ return object_arg_6.Field("Tables", arg_13)
247
+
248
+ def _arrow3604(__unit: None=None) -> Datamap | None:
249
+ arg_15: Decoder_1[Datamap] = decoder_compressed_2(string_table, oa_table, cell_table)
250
+ object_arg_7: IOptionalGetter = get.Optional
251
+ return object_arg_7.Field("Datamap", arg_15)
252
+
253
+ def _arrow3605(__unit: None=None) -> Array[Person] | None:
254
+ arg_17: Decoder_1[Array[Person]] = resize_array(decoder_3)
255
+ object_arg_8: IOptionalGetter = get.Optional
256
+ return object_arg_8.Field("Performers", arg_17)
257
+
258
+ def _arrow3606(__unit: None=None) -> Array[Comment] | None:
259
+ arg_19: Decoder_1[Array[Comment]] = resize_array(decoder_4)
260
+ object_arg_9: IOptionalGetter = get.Optional
261
+ return object_arg_9.Field("Comments", arg_19)
262
+
263
+ return ArcAssay.create(_arrow3597(), _arrow3598(), _arrow3599(), _arrow3600(), _arrow3601(), _arrow3602(), _arrow3603(), _arrow3604(), _arrow3605(), _arrow3606())
264
+
265
+ return object(_arrow3607)
266
+
267
+
268
+ def ROCrate_genID(a: ArcAssay) -> str:
269
+ match_value: str = a.Identifier
270
+ if match_value == "":
271
+ return "#EmptyAssay"
272
+
273
+ else:
274
+ return ("assays/" + replace(match_value, " ", "_")) + "/"
275
+
276
+
277
+
278
+ def ROCrate_encoder(assay_name: str | None, a: ArcAssay) -> IEncodable:
279
+ file_name: str = Assay_fileNameFromIdentifier(a.Identifier)
280
+ processes: FSharpList[Process] = ARCtrl_ArcTables__ArcTables_GetProcesses(a)
281
+ data_files: FSharpList[Data] = get_data(processes)
282
+ def chooser(tupled_arg: tuple[str, IEncodable | None], assay_name: Any=assay_name, a: Any=a) -> tuple[str, IEncodable] | None:
283
+ def mapping(v_1: IEncodable, tupled_arg: Any=tupled_arg) -> tuple[str, IEncodable]:
284
+ return (tupled_arg[0], v_1)
285
+
286
+ return map(mapping, tupled_arg[1])
287
+
288
+ def _arrow3611(__unit: None=None, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
289
+ value: str = ROCrate_genID(a)
290
+ class ObjectExpr3610(IEncodable):
291
+ def Encode(self, helpers: IEncoderHelpers_1[Any]) -> Any:
292
+ return helpers.encode_string(value)
293
+
294
+ return ObjectExpr3610()
295
+
296
+ class ObjectExpr3612(IEncodable):
297
+ def Encode(self, helpers_1: IEncoderHelpers_1[Any], assay_name: Any=assay_name, a: Any=a) -> Any:
298
+ return helpers_1.encode_string("Assay")
299
+
300
+ class ObjectExpr3613(IEncodable):
301
+ def Encode(self, helpers_2: IEncoderHelpers_1[Any], assay_name: Any=assay_name, a: Any=a) -> Any:
302
+ return helpers_2.encode_string("Assay")
303
+
304
+ def _arrow3615(__unit: None=None, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
305
+ value_3: str = a.Identifier
306
+ class ObjectExpr3614(IEncodable):
307
+ def Encode(self, helpers_3: IEncoderHelpers_1[Any]) -> Any:
308
+ return helpers_3.encode_string(value_3)
309
+
310
+ return ObjectExpr3614()
311
+
312
+ class ObjectExpr3616(IEncodable):
313
+ def Encode(self, helpers_4: IEncoderHelpers_1[Any], assay_name: Any=assay_name, a: Any=a) -> Any:
314
+ return helpers_4.encode_string(file_name)
315
+
316
+ def _arrow3618(value_5: str, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
317
+ class ObjectExpr3617(IEncodable):
318
+ def Encode(self, helpers_5: IEncoderHelpers_1[Any]) -> Any:
319
+ return helpers_5.encode_string(value_5)
320
+
321
+ return ObjectExpr3617()
322
+
323
+ def _arrow3620(value_7: str, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
324
+ class ObjectExpr3619(IEncodable):
325
+ def Encode(self, helpers_6: IEncoderHelpers_1[Any]) -> Any:
326
+ return helpers_6.encode_string(value_7)
327
+
328
+ return ObjectExpr3619()
329
+
330
+ def _arrow3621(oa: OntologyAnnotation, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
331
+ return OntologyAnnotation_ROCrate_encoderPropertyValue(oa)
332
+
333
+ def _arrow3622(oa_1: OntologyAnnotation, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
334
+ return OntologyAnnotation_ROCrate_encoderDefinedTerm(oa_1)
335
+
336
+ def _arrow3623(oa_2: OntologyAnnotation, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
337
+ return OntologyAnnotation_ROCrate_encoderDefinedTerm(oa_2)
338
+
339
+ def _arrow3624(oa_3: Person, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
340
+ return ROCrate_encoder_1(oa_3)
341
+
342
+ def _arrow3625(oa_4: Data, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
343
+ return ROCrate_encoder_2(oa_4)
344
+
345
+ def _arrow3627(__unit: None=None, assay_name: Any=assay_name, a: Any=a) -> Callable[[Process], IEncodable]:
346
+ assay_name_1: str | None = a.Identifier
347
+ def _arrow3626(oa_5: Process) -> IEncodable:
348
+ return ROCrate_encoder_3(assay_name, assay_name_1, oa_5)
349
+
350
+ return _arrow3626
351
+
352
+ def _arrow3628(comment: Comment, assay_name: Any=assay_name, a: Any=a) -> IEncodable:
353
+ return ROCrate_encoder_4(comment)
354
+
355
+ values: FSharpList[tuple[str, IEncodable]] = choose(chooser, of_array([("@id", _arrow3611()), ("@type", list_1_1(singleton(ObjectExpr3612()))), ("additionalType", ObjectExpr3613()), ("identifier", _arrow3615()), ("filename", ObjectExpr3616()), try_include("title", _arrow3618, a.Title), try_include("description", _arrow3620, a.Description), try_include("measurementType", _arrow3621, a.MeasurementType), try_include("technologyType", _arrow3622, a.TechnologyType), try_include("technologyPlatform", _arrow3623, a.TechnologyPlatform), try_include_seq("performers", _arrow3624, a.Performers), try_include_list("dataFiles", _arrow3625, data_files), try_include_list("processSequence", _arrow3627(), processes), try_include_seq("comments", _arrow3628, a.Comments), ("@context", context_jsonvalue)]))
356
+ class ObjectExpr3629(IEncodable):
357
+ def Encode(self, helpers_7: IEncoderHelpers_1[Any], assay_name: Any=assay_name, a: Any=a) -> Any:
358
+ def mapping_1(tupled_arg_1: tuple[str, IEncodable]) -> tuple[str, __A_]:
359
+ return (tupled_arg_1[0], tupled_arg_1[1].Encode(helpers_7))
360
+
361
+ arg: IEnumerable_1[tuple[str, __A_]] = map_1(mapping_1, values)
362
+ return helpers_7.encode_object(arg)
363
+
364
+ return ObjectExpr3629()
365
+
366
+
367
+ def _arrow3639(get: IGetters) -> ArcAssay:
368
+ def _arrow3630(__unit: None=None) -> str | None:
369
+ object_arg: IOptionalGetter = get.Optional
370
+ return object_arg.Field("identifier", string)
371
+
372
+ identifier: str = default_arg(_arrow3630(), create_missing_identifier())
373
+ def mapping(arg_4: FSharpList[Process]) -> Array[ArcTable]:
374
+ a: ArcTables = ARCtrl_ArcTables__ArcTables_fromProcesses_Static_62A3309D(arg_4)
375
+ return a.Tables
376
+
377
+ def _arrow3631(__unit: None=None) -> FSharpList[Process] | None:
378
+ arg_3: Decoder_1[FSharpList[Process]] = list_1_2(ROCrate_decoder_1)
379
+ object_arg_1: IOptionalGetter = get.Optional
380
+ return object_arg_1.Field("processSequence", arg_3)
381
+
382
+ tables: Array[ArcTable] | None = map(mapping, _arrow3631())
383
+ def _arrow3632(__unit: None=None) -> str | None:
384
+ object_arg_2: IOptionalGetter = get.Optional
385
+ return object_arg_2.Field("title", string)
386
+
387
+ def _arrow3633(__unit: None=None) -> str | None:
388
+ object_arg_3: IOptionalGetter = get.Optional
389
+ return object_arg_3.Field("description", string)
390
+
391
+ def _arrow3634(__unit: None=None) -> OntologyAnnotation | None:
392
+ object_arg_4: IOptionalGetter = get.Optional
393
+ return object_arg_4.Field("measurementType", OntologyAnnotation_ROCrate_decoderPropertyValue)
394
+
395
+ def _arrow3635(__unit: None=None) -> OntologyAnnotation | None:
396
+ object_arg_5: IOptionalGetter = get.Optional
397
+ return object_arg_5.Field("technologyType", OntologyAnnotation_ROCrate_decoderDefinedTerm)
398
+
399
+ def _arrow3636(__unit: None=None) -> OntologyAnnotation | None:
400
+ object_arg_6: IOptionalGetter = get.Optional
401
+ return object_arg_6.Field("technologyPlatform", OntologyAnnotation_ROCrate_decoderDefinedTerm)
402
+
403
+ def _arrow3637(__unit: None=None) -> Array[Person] | None:
404
+ arg_16: Decoder_1[Array[Person]] = resize_array(ROCrate_decoder_2)
405
+ object_arg_7: IOptionalGetter = get.Optional
406
+ return object_arg_7.Field("performers", arg_16)
407
+
408
+ def _arrow3638(__unit: None=None) -> Array[Comment] | None:
409
+ arg_18: Decoder_1[Array[Comment]] = resize_array(ROCrate_decoder_3)
410
+ object_arg_8: IOptionalGetter = get.Optional
411
+ return object_arg_8.Field("comments", arg_18)
412
+
413
+ return ArcAssay(identifier, _arrow3632(), _arrow3633(), _arrow3634(), _arrow3635(), _arrow3636(), tables, None, _arrow3637(), _arrow3638())
414
+
415
+
416
+ ROCrate_decoder: Decoder_1[ArcAssay] = object(_arrow3639)
417
+
418
+ def ISAJson_encoder(study_name: str | None, id_map: Any | None, a: ArcAssay) -> IEncodable:
419
+ def f(a_1: ArcAssay, study_name: Any=study_name, id_map: Any=id_map, a: Any=a) -> IEncodable:
420
+ file_name: str = Assay_fileNameFromIdentifier(a_1.Identifier)
421
+ processes: FSharpList[Process] = ARCtrl_ArcTables__ArcTables_GetProcesses(a_1)
422
+ def encoder_1(oa: OntologyAnnotation, a_1: Any=a_1) -> IEncodable:
423
+ return OntologyAnnotation_ISAJson_encoder(id_map, oa)
424
+
425
+ encoded_units: tuple[str, IEncodable | None] = try_include_list("unitCategories", encoder_1, get_units(processes))
426
+ def encoder_2(value_1: MaterialAttribute, a_1: Any=a_1) -> IEncodable:
427
+ return encoder_8(id_map, value_1)
428
+
429
+ encoded_characteristics: tuple[str, IEncodable | None] = try_include_list("characteristicCategories", encoder_2, get_characteristics(processes))
430
+ def _arrow3640(ps: FSharpList[Process], a_1: Any=a_1) -> IEncodable:
431
+ return encoder_9(id_map, ps)
432
+
433
+ encoded_materials: tuple[str, IEncodable | None] = try_include("materials", _arrow3640, Option_fromValueWithDefault(empty(), processes))
434
+ def encoder_3(oa_1: Data, a_1: Any=a_1) -> IEncodable:
435
+ return ISAJson_encoder_1(id_map, oa_1)
436
+
437
+ encoced_data_files: tuple[str, IEncodable | None] = try_include_list("dataFiles", encoder_3, get_data(processes))
438
+ units: FSharpList[OntologyAnnotation] = get_units(processes)
439
+ def _arrow3643(__unit: None=None, a_1: Any=a_1) -> IEnumerable_1[Comment]:
440
+ def _arrow3642(__unit: None=None) -> IEnumerable_1[Comment]:
441
+ def _arrow3641(__unit: None=None) -> IEnumerable_1[Comment]:
442
+ return singleton_1(Comment.create("description", value_9(a_1.Description))) if (a_1.Description is not None) else empty_1()
443
+
444
+ return append(singleton_1(Comment.create("title", value_9(a_1.Title))) if (a_1.Title is not None) else empty_1(), delay(_arrow3641))
445
+
446
+ return append(a_1.Comments if (len(a_1.Comments) > 0) else empty_1(), delay(_arrow3642))
447
+
448
+ comments: FSharpList[Comment] = to_list(delay(_arrow3643))
449
+ def chooser(tupled_arg: tuple[str, IEncodable | None], a_1: Any=a_1) -> tuple[str, IEncodable] | None:
450
+ def mapping_1(v_1: IEncodable, tupled_arg: Any=tupled_arg) -> tuple[str, IEncodable]:
451
+ return (tupled_arg[0], v_1)
452
+
453
+ return map(mapping_1, tupled_arg[1])
454
+
455
+ class ObjectExpr3645(IEncodable):
456
+ def Encode(self, helpers: IEncoderHelpers_1[Any], a_1: Any=a_1) -> Any:
457
+ return helpers.encode_string(file_name)
458
+
459
+ def _arrow3647(value_5: str, a_1: Any=a_1) -> IEncodable:
460
+ class ObjectExpr3646(IEncodable):
461
+ def Encode(self, helpers_1: IEncoderHelpers_1[Any]) -> Any:
462
+ return helpers_1.encode_string(value_5)
463
+
464
+ return ObjectExpr3646()
465
+
466
+ def _arrow3648(oa_2: OntologyAnnotation, a_1: Any=a_1) -> IEncodable:
467
+ return OntologyAnnotation_ISAJson_encoder(id_map, oa_2)
468
+
469
+ def _arrow3649(oa_3: OntologyAnnotation, a_1: Any=a_1) -> IEncodable:
470
+ return OntologyAnnotation_ISAJson_encoder(id_map, oa_3)
471
+
472
+ def _arrow3651(value_7: str, a_1: Any=a_1) -> IEncodable:
473
+ class ObjectExpr3650(IEncodable):
474
+ def Encode(self, helpers_2: IEncoderHelpers_1[Any]) -> Any:
475
+ return helpers_2.encode_string(value_7)
476
+
477
+ return ObjectExpr3650()
478
+
479
+ def mapping(tp: OntologyAnnotation, a_1: Any=a_1) -> str:
480
+ return JsonTypes_composeTechnologyPlatform(tp)
481
+
482
+ def _arrow3653(__unit: None=None, a_1: Any=a_1) -> Callable[[Process], IEncodable]:
483
+ assay_name: str | None = a_1.Identifier
484
+ def _arrow3652(oa_4: Process) -> IEncodable:
485
+ return ISAJson_encoder_2(study_name, assay_name, id_map, oa_4)
486
+
487
+ return _arrow3652
488
+
489
+ def _arrow3654(comment: Comment, a_1: Any=a_1) -> IEncodable:
490
+ return ISAJson_encoder_3(id_map, comment)
491
+
492
+ values: FSharpList[tuple[str, IEncodable]] = choose(chooser, of_array([("filename", ObjectExpr3645()), try_include("@id", _arrow3647, ROCrate_genID(a_1)), try_include("measurementType", _arrow3648, a_1.MeasurementType), try_include("technologyType", _arrow3649, a_1.TechnologyType), try_include("technologyPlatform", _arrow3651, map(mapping, a_1.TechnologyPlatform)), encoced_data_files, encoded_materials, encoded_characteristics, encoded_units, try_include_list("processSequence", _arrow3653(), processes), try_include_seq("comments", _arrow3654, comments)]))
493
+ class ObjectExpr3655(IEncodable):
494
+ def Encode(self, helpers_3: IEncoderHelpers_1[Any], a_1: Any=a_1) -> Any:
495
+ def mapping_2(tupled_arg_1: tuple[str, IEncodable]) -> tuple[str, __A_]:
496
+ return (tupled_arg_1[0], tupled_arg_1[1].Encode(helpers_3))
497
+
498
+ arg: IEnumerable_1[tuple[str, __A_]] = map_1(mapping_2, values)
499
+ return helpers_3.encode_object(arg)
500
+
501
+ return ObjectExpr3655()
502
+
503
+ if id_map is not None:
504
+ def _arrow3656(a_2: ArcAssay, study_name: Any=study_name, id_map: Any=id_map, a: Any=a) -> str:
505
+ return ROCrate_genID(a_2)
506
+
507
+ return encode(_arrow3656, f, a, id_map)
508
+
509
+ else:
510
+ return f(a)
511
+
512
+
513
+
514
+ ISAJson_allowedFields: FSharpList[str] = of_array(["@id", "filename", "measurementType", "technologyType", "technologyPlatform", "dataFiles", "materials", "characteristicCategories", "unitCategories", "processSequence", "comments", "@type", "@context"])
515
+
516
+ def _arrow3662(get: IGetters) -> ArcAssay:
517
+ def _arrow3657(__unit: None=None) -> str | None:
518
+ object_arg: IOptionalGetter = get.Optional
519
+ return object_arg.Field("filename", string)
520
+
521
+ identifier: str = default_arg(bind(Assay_tryIdentifierFromFileName, _arrow3657()), create_missing_identifier())
522
+ def mapping(arg_4: FSharpList[Process]) -> Array[ArcTable]:
523
+ a: ArcTables = ARCtrl_ArcTables__ArcTables_fromProcesses_Static_62A3309D(arg_4)
524
+ return a.Tables
525
+
526
+ def _arrow3658(__unit: None=None) -> FSharpList[Process] | None:
527
+ arg_3: Decoder_1[FSharpList[Process]] = list_1_2(ISAJson_decoder_1)
528
+ object_arg_1: IOptionalGetter = get.Optional
529
+ return object_arg_1.Field("processSequence", arg_3)
530
+
531
+ tables: Array[ArcTable] | None = map(mapping, _arrow3658())
532
+ comments: Array[Comment] | None
533
+ arg_6: Decoder_1[Array[Comment]] = resize_array(ISAJson_decoder_2)
534
+ object_arg_2: IOptionalGetter = get.Optional
535
+ comments = object_arg_2.Field("comments", arg_6)
536
+ def binder(c: Array[Comment]) -> str | None:
537
+ def chooser(x: Comment, c: Any=c) -> str | None:
538
+ if (value_9(x.Name) == "title") if (x.Name is not None) else False:
539
+ return x.Value
540
+
541
+ else:
542
+ return None
543
+
544
+
545
+ return try_pick(chooser, c)
546
+
547
+ title: str | None = bind(binder, comments)
548
+ def binder_1(c_1: Array[Comment]) -> str | None:
549
+ def chooser_1(x_1: Comment, c_1: Any=c_1) -> str | None:
550
+ if (value_9(x_1.Name) == "description") if (x_1.Name is not None) else False:
551
+ return x_1.Value
552
+
553
+ else:
554
+ return None
555
+
556
+
557
+ return try_pick(chooser_1, c_1)
558
+
559
+ description: str | None = bind(binder_1, comments)
560
+ def binder_2(c_2: Array[Comment]) -> Array[Comment] | None:
561
+ def f(x_2: Comment, c_2: Any=c_2) -> bool:
562
+ if x_2.Name is None:
563
+ return True
564
+
565
+ elif value_9(x_2.Name) != "title":
566
+ return value_9(x_2.Name) != "description"
567
+
568
+ else:
569
+ return False
570
+
571
+
572
+ match_value: Array[Comment] = ResizeArray_filter(f, c_2)
573
+ if length(match_value) == 0:
574
+ return None
575
+
576
+ else:
577
+ return match_value
578
+
579
+
580
+ comments_1: Array[Comment] | None = bind(binder_2, comments)
581
+ def _arrow3659(__unit: None=None) -> OntologyAnnotation | None:
582
+ object_arg_3: IOptionalGetter = get.Optional
583
+ return object_arg_3.Field("measurementType", OntologyAnnotation_ISAJson_decoder)
584
+
585
+ def _arrow3660(__unit: None=None) -> OntologyAnnotation | None:
586
+ object_arg_4: IOptionalGetter = get.Optional
587
+ return object_arg_4.Field("technologyType", OntologyAnnotation_ISAJson_decoder)
588
+
589
+ def _arrow3661(__unit: None=None) -> OntologyAnnotation | None:
590
+ arg_12: Decoder_1[OntologyAnnotation] = map_2(JsonTypes_decomposeTechnologyPlatform, string)
591
+ object_arg_5: IOptionalGetter = get.Optional
592
+ return object_arg_5.Field("technologyPlatform", arg_12)
593
+
594
+ return ArcAssay(identifier, title, description, _arrow3659(), _arrow3660(), _arrow3661(), tables, None, None, comments_1)
595
+
596
+
597
+ ISAJson_decoder: Decoder_1[ArcAssay] = Decode_objectNoAdditionalProperties(ISAJson_allowedFields, _arrow3662)
598
+
599
+ __all__ = ["encoder", "decoder", "encoder_compressed", "decoder_compressed", "ROCrate_genID", "ROCrate_encoder", "ROCrate_decoder", "ISAJson_encoder", "ISAJson_allowedFields", "ISAJson_decoder"]
600
+