arctrl 3.0.0a3__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 (456) hide show
  1. arctrl/__init__.py +18 -0
  2. arctrl/py/CWL/__init__.py +0 -0
  3. arctrl/py/CWL/cwltypes.py +150 -0
  4. arctrl/py/CWL/decode.py +973 -0
  5. arctrl/py/CWL/encode.py +1 -0
  6. arctrl/py/CWL/inputs.py +88 -0
  7. arctrl/py/CWL/outputs.py +85 -0
  8. arctrl/py/CWL/requirements.py +77 -0
  9. arctrl/py/CWL/tool_description.py +103 -0
  10. arctrl/py/CWL/workflow_description.py +104 -0
  11. arctrl/py/CWL/workflow_steps.py +113 -0
  12. arctrl/py/Contract/__init__.py +0 -0
  13. arctrl/py/Contract/arc.py +60 -0
  14. arctrl/py/Contract/arc_assay.py +125 -0
  15. arctrl/py/Contract/arc_investigation.py +88 -0
  16. arctrl/py/Contract/arc_run.py +125 -0
  17. arctrl/py/Contract/arc_study.py +126 -0
  18. arctrl/py/Contract/arc_workflow.py +125 -0
  19. arctrl/py/Contract/contract.py +153 -0
  20. arctrl/py/Contract/datamap.py +372 -0
  21. arctrl/py/Contract/git.py +118 -0
  22. arctrl/py/Contract/validation_packages_config.py +107 -0
  23. arctrl/py/ContractIO/__init__.py +0 -0
  24. arctrl/py/ContractIO/contract_io.py +344 -0
  25. arctrl/py/ContractIO/file_system_helper.py +264 -0
  26. arctrl/py/Core/Helper/__init__.py +0 -0
  27. arctrl/py/Core/Helper/collections_.py +438 -0
  28. arctrl/py/Core/Helper/date_time.py +26 -0
  29. arctrl/py/Core/Helper/hash_codes.py +60 -0
  30. arctrl/py/Core/Helper/identifier.py +248 -0
  31. arctrl/py/Core/Helper/orcid.py +42 -0
  32. arctrl/py/Core/Helper/printer.py +13 -0
  33. arctrl/py/Core/Helper/regex.py +554 -0
  34. arctrl/py/Core/Helper/sem_ver.py +71 -0
  35. arctrl/py/Core/Helper/url.py +148 -0
  36. arctrl/py/Core/Process/__init__.py +0 -0
  37. arctrl/py/Core/Process/column_index.py +280 -0
  38. arctrl/py/Core/Process/component.py +200 -0
  39. arctrl/py/Core/Process/factor.py +151 -0
  40. arctrl/py/Core/Process/factor_value.py +182 -0
  41. arctrl/py/Core/Process/material.py +74 -0
  42. arctrl/py/Core/Process/material_attribute.py +95 -0
  43. arctrl/py/Core/Process/material_attribute_value.py +184 -0
  44. arctrl/py/Core/Process/material_type.py +45 -0
  45. arctrl/py/Core/Process/process.py +477 -0
  46. arctrl/py/Core/Process/process_input.py +265 -0
  47. arctrl/py/Core/Process/process_output.py +235 -0
  48. arctrl/py/Core/Process/process_parameter_value.py +200 -0
  49. arctrl/py/Core/Process/process_sequence.py +435 -0
  50. arctrl/py/Core/Process/protocol.py +175 -0
  51. arctrl/py/Core/Process/protocol_parameter.py +98 -0
  52. arctrl/py/Core/Process/sample.py +82 -0
  53. arctrl/py/Core/Process/source.py +62 -0
  54. arctrl/py/Core/Table/__init__.py +0 -0
  55. arctrl/py/Core/Table/arc_table.py +1264 -0
  56. arctrl/py/Core/Table/arc_table_aux.py +575 -0
  57. arctrl/py/Core/Table/arc_tables.py +591 -0
  58. arctrl/py/Core/Table/composite_cell.py +319 -0
  59. arctrl/py/Core/Table/composite_column.py +73 -0
  60. arctrl/py/Core/Table/composite_header.py +739 -0
  61. arctrl/py/Core/__init__.py +0 -0
  62. arctrl/py/Core/arc_types.py +5064 -0
  63. arctrl/py/Core/comment.py +128 -0
  64. arctrl/py/Core/comment_list.py +127 -0
  65. arctrl/py/Core/conversion.py +1313 -0
  66. arctrl/py/Core/data.py +245 -0
  67. arctrl/py/Core/data_context.py +157 -0
  68. arctrl/py/Core/data_file.py +112 -0
  69. arctrl/py/Core/data_map.py +225 -0
  70. arctrl/py/Core/identifier_setters.py +31 -0
  71. arctrl/py/Core/iproperty_value.py +36 -0
  72. arctrl/py/Core/ontology_annotation.py +299 -0
  73. arctrl/py/Core/ontology_source_reference.py +114 -0
  74. arctrl/py/Core/person.py +259 -0
  75. arctrl/py/Core/publication.py +161 -0
  76. arctrl/py/Core/template.py +231 -0
  77. arctrl/py/Core/templates.py +148 -0
  78. arctrl/py/Core/uri.py +11 -0
  79. arctrl/py/Core/value.py +188 -0
  80. arctrl/py/FileSystem/__init__.py +0 -0
  81. arctrl/py/FileSystem/commit.py +21 -0
  82. arctrl/py/FileSystem/default_gitattributes.py +5 -0
  83. arctrl/py/FileSystem/default_gitignore.py +5 -0
  84. arctrl/py/FileSystem/file_system.py +58 -0
  85. arctrl/py/FileSystem/file_system_tree.py +426 -0
  86. arctrl/py/FileSystem/path.py +64 -0
  87. arctrl/py/Json/DataMap/__init__.py +0 -0
  88. arctrl/py/Json/DataMap/data_context.py +101 -0
  89. arctrl/py/Json/DataMap/data_map.py +53 -0
  90. arctrl/py/Json/Process/__init__.py +0 -0
  91. arctrl/py/Json/Process/assay_materials.py +46 -0
  92. arctrl/py/Json/Process/component.py +79 -0
  93. arctrl/py/Json/Process/factor.py +107 -0
  94. arctrl/py/Json/Process/factor_value.py +101 -0
  95. arctrl/py/Json/Process/material.py +226 -0
  96. arctrl/py/Json/Process/material_attribute.py +79 -0
  97. arctrl/py/Json/Process/material_attribute_value.py +101 -0
  98. arctrl/py/Json/Process/material_type.py +53 -0
  99. arctrl/py/Json/Process/process.py +296 -0
  100. arctrl/py/Json/Process/process_input.py +83 -0
  101. arctrl/py/Json/Process/process_output.py +67 -0
  102. arctrl/py/Json/Process/process_parameter_value.py +81 -0
  103. arctrl/py/Json/Process/protocol.py +354 -0
  104. arctrl/py/Json/Process/protocol_parameter.py +79 -0
  105. arctrl/py/Json/Process/sample.py +277 -0
  106. arctrl/py/Json/Process/source.py +214 -0
  107. arctrl/py/Json/Process/study_materials.py +52 -0
  108. arctrl/py/Json/Process/value.py +56 -0
  109. arctrl/py/Json/ROCrate/__init__.py +0 -0
  110. arctrl/py/Json/ROCrate/ldcontext.py +133 -0
  111. arctrl/py/Json/ROCrate/ldgraph.py +111 -0
  112. arctrl/py/Json/ROCrate/ldnode.py +290 -0
  113. arctrl/py/Json/ROCrate/ldref.py +44 -0
  114. arctrl/py/Json/ROCrate/ldvalue.py +102 -0
  115. arctrl/py/Json/Table/__init__.py +0 -0
  116. arctrl/py/Json/Table/arc_table.py +393 -0
  117. arctrl/py/Json/Table/cell_table.py +83 -0
  118. arctrl/py/Json/Table/composite_cell.py +136 -0
  119. arctrl/py/Json/Table/composite_header.py +67 -0
  120. arctrl/py/Json/Table/iotype.py +24 -0
  121. arctrl/py/Json/Table/oatable.py +82 -0
  122. arctrl/py/Json/Table/templates.py +281 -0
  123. arctrl/py/Json/__init__.py +0 -0
  124. arctrl/py/Json/assay.py +600 -0
  125. arctrl/py/Json/comment.py +206 -0
  126. arctrl/py/Json/context/rocrate/__init__.py +0 -0
  127. arctrl/py/Json/context/rocrate/isa_assay_context.py +101 -0
  128. arctrl/py/Json/context/rocrate/isa_comment_context.py +60 -0
  129. arctrl/py/Json/context/rocrate/isa_component_context.py +77 -0
  130. arctrl/py/Json/context/rocrate/isa_data_context.py +74 -0
  131. arctrl/py/Json/context/rocrate/isa_factor_context.py +74 -0
  132. arctrl/py/Json/context/rocrate/isa_factor_value_context.py +84 -0
  133. arctrl/py/Json/context/rocrate/isa_investigation_context.py +110 -0
  134. arctrl/py/Json/context/rocrate/isa_material_attribute_context.py +64 -0
  135. arctrl/py/Json/context/rocrate/isa_material_attribute_value_context.py +80 -0
  136. arctrl/py/Json/context/rocrate/isa_material_context.py +71 -0
  137. arctrl/py/Json/context/rocrate/isa_ontology_annotation_context.py +68 -0
  138. arctrl/py/Json/context/rocrate/isa_ontology_source_reference_context.py +75 -0
  139. arctrl/py/Json/context/rocrate/isa_organization_context.py +55 -0
  140. arctrl/py/Json/context/rocrate/isa_person_context.py +131 -0
  141. arctrl/py/Json/context/rocrate/isa_process_context.py +94 -0
  142. arctrl/py/Json/context/rocrate/isa_process_parameter_value_context.py +80 -0
  143. arctrl/py/Json/context/rocrate/isa_protocol_context.py +97 -0
  144. arctrl/py/Json/context/rocrate/isa_protocol_parameter_context.py +64 -0
  145. arctrl/py/Json/context/rocrate/isa_publication_context.py +78 -0
  146. arctrl/py/Json/context/rocrate/isa_sample_context.py +65 -0
  147. arctrl/py/Json/context/rocrate/isa_source_context.py +66 -0
  148. arctrl/py/Json/context/rocrate/isa_study_context.py +125 -0
  149. arctrl/py/Json/context/rocrate/property_value_context.py +73 -0
  150. arctrl/py/Json/context/rocrate/rocrate_context.py +81 -0
  151. arctrl/py/Json/converter_options.py +23 -0
  152. arctrl/py/Json/data.py +356 -0
  153. arctrl/py/Json/data_file.py +63 -0
  154. arctrl/py/Json/decode.py +155 -0
  155. arctrl/py/Json/encode.py +92 -0
  156. arctrl/py/Json/idtable.py +44 -0
  157. arctrl/py/Json/investigation.py +695 -0
  158. arctrl/py/Json/ontology_annotation.py +404 -0
  159. arctrl/py/Json/ontology_source_reference.py +255 -0
  160. arctrl/py/Json/person.py +658 -0
  161. arctrl/py/Json/property_value.py +359 -0
  162. arctrl/py/Json/publication.py +279 -0
  163. arctrl/py/Json/string_table.py +76 -0
  164. arctrl/py/Json/study.py +793 -0
  165. arctrl/py/JsonIO/DataMap/__init__.py +0 -0
  166. arctrl/py/JsonIO/DataMap/data_map.py +53 -0
  167. arctrl/py/JsonIO/Process/__init__.py +0 -0
  168. arctrl/py/JsonIO/Process/component.py +60 -0
  169. arctrl/py/JsonIO/Process/factor.py +36 -0
  170. arctrl/py/JsonIO/Process/factor_value.py +38 -0
  171. arctrl/py/JsonIO/Process/material.py +60 -0
  172. arctrl/py/JsonIO/Process/material_attribute.py +38 -0
  173. arctrl/py/JsonIO/Process/material_attribute_value.py +60 -0
  174. arctrl/py/JsonIO/Process/material_type.py +36 -0
  175. arctrl/py/JsonIO/Process/process.py +60 -0
  176. arctrl/py/JsonIO/Process/process_input.py +38 -0
  177. arctrl/py/JsonIO/Process/process_output.py +60 -0
  178. arctrl/py/JsonIO/Process/process_parameter_value.py +60 -0
  179. arctrl/py/JsonIO/Process/process_sequence.py +71 -0
  180. arctrl/py/JsonIO/Process/protocol.py +60 -0
  181. arctrl/py/JsonIO/Process/protocol_parameter.py +36 -0
  182. arctrl/py/JsonIO/Process/sample.py +60 -0
  183. arctrl/py/JsonIO/Process/source.py +60 -0
  184. arctrl/py/JsonIO/Process/study_materials.py +52 -0
  185. arctrl/py/JsonIO/Process/value.py +32 -0
  186. arctrl/py/JsonIO/Table/__init__.py +0 -0
  187. arctrl/py/JsonIO/Table/arc_table.py +121 -0
  188. arctrl/py/JsonIO/Table/composite_cell.py +36 -0
  189. arctrl/py/JsonIO/Table/composite_header.py +36 -0
  190. arctrl/py/JsonIO/Table/compression.py +85 -0
  191. arctrl/py/JsonIO/Table/iotype.py +36 -0
  192. arctrl/py/JsonIO/Table/templates.py +113 -0
  193. arctrl/py/JsonIO/__init__.py +0 -0
  194. arctrl/py/JsonIO/assay.py +113 -0
  195. arctrl/py/JsonIO/comment.py +80 -0
  196. arctrl/py/JsonIO/data.py +60 -0
  197. arctrl/py/JsonIO/data_file.py +58 -0
  198. arctrl/py/JsonIO/decode.py +9 -0
  199. arctrl/py/JsonIO/encode.py +1 -0
  200. arctrl/py/JsonIO/investigation.py +113 -0
  201. arctrl/py/JsonIO/ldobject.py +106 -0
  202. arctrl/py/JsonIO/ontology_annotation.py +80 -0
  203. arctrl/py/JsonIO/ontology_source_reference.py +80 -0
  204. arctrl/py/JsonIO/person.py +82 -0
  205. arctrl/py/JsonIO/publication.py +82 -0
  206. arctrl/py/JsonIO/study.py +114 -0
  207. arctrl/py/ROCrate/Generic/__init__.py +0 -0
  208. arctrl/py/ROCrate/Generic/comment.py +131 -0
  209. arctrl/py/ROCrate/Generic/dataset.py +817 -0
  210. arctrl/py/ROCrate/Generic/defined_term.py +131 -0
  211. arctrl/py/ROCrate/Generic/file.py +237 -0
  212. arctrl/py/ROCrate/Generic/lab_process.py +324 -0
  213. arctrl/py/ROCrate/Generic/lab_protocol.py +338 -0
  214. arctrl/py/ROCrate/Generic/organization.py +83 -0
  215. arctrl/py/ROCrate/Generic/person.py +484 -0
  216. arctrl/py/ROCrate/Generic/postal_address.py +195 -0
  217. arctrl/py/ROCrate/Generic/property_value.py +696 -0
  218. arctrl/py/ROCrate/Generic/sample.py +202 -0
  219. arctrl/py/ROCrate/Generic/scholarly_article.py +229 -0
  220. arctrl/py/ROCrate/ISAProfile/__init__.py +0 -0
  221. arctrl/py/ROCrate/ISAProfile/assay.py +70 -0
  222. arctrl/py/ROCrate/ISAProfile/data.py +65 -0
  223. arctrl/py/ROCrate/ISAProfile/dataset.py +24 -0
  224. arctrl/py/ROCrate/ISAProfile/investigation.py +73 -0
  225. arctrl/py/ROCrate/ISAProfile/lab_process.py +162 -0
  226. arctrl/py/ROCrate/ISAProfile/lab_protocol.py +37 -0
  227. arctrl/py/ROCrate/ISAProfile/person.py +72 -0
  228. arctrl/py/ROCrate/ISAProfile/property_value.py +98 -0
  229. arctrl/py/ROCrate/ISAProfile/sample.py +64 -0
  230. arctrl/py/ROCrate/ISAProfile/scholarly_article.py +98 -0
  231. arctrl/py/ROCrate/ISAProfile/study.py +74 -0
  232. arctrl/py/ROCrate/__init__.py +0 -0
  233. arctrl/py/ROCrate/arc_rocrate_metadata.py +39 -0
  234. arctrl/py/ROCrate/dyn_obj_extensions.py +1 -0
  235. arctrl/py/ROCrate/helper.py +8 -0
  236. arctrl/py/ROCrate/ldcontext.py +362 -0
  237. arctrl/py/ROCrate/ldobject.py +1247 -0
  238. arctrl/py/ROCrate/rocrate_context.py +51 -0
  239. arctrl/py/Spreadsheet/AnnotationTable/__init__.py +0 -0
  240. arctrl/py/Spreadsheet/AnnotationTable/arc_table.py +193 -0
  241. arctrl/py/Spreadsheet/AnnotationTable/composite_cell.py +78 -0
  242. arctrl/py/Spreadsheet/AnnotationTable/composite_column.py +210 -0
  243. arctrl/py/Spreadsheet/AnnotationTable/composite_header.py +623 -0
  244. arctrl/py/Spreadsheet/DataMapTable/__init__.py +0 -0
  245. arctrl/py/Spreadsheet/DataMapTable/data_map_column.py +114 -0
  246. arctrl/py/Spreadsheet/DataMapTable/data_map_header.py +618 -0
  247. arctrl/py/Spreadsheet/DataMapTable/data_map_table.py +119 -0
  248. arctrl/py/Spreadsheet/Metadata/__init__.py +0 -0
  249. arctrl/py/Spreadsheet/Metadata/assays.py +125 -0
  250. arctrl/py/Spreadsheet/Metadata/comment.py +77 -0
  251. arctrl/py/Spreadsheet/Metadata/contacts.py +134 -0
  252. arctrl/py/Spreadsheet/Metadata/conversions.py +190 -0
  253. arctrl/py/Spreadsheet/Metadata/design_descriptors.py +34 -0
  254. arctrl/py/Spreadsheet/Metadata/factors.py +107 -0
  255. arctrl/py/Spreadsheet/Metadata/ontology_annotation.py +88 -0
  256. arctrl/py/Spreadsheet/Metadata/ontology_source_reference.py +96 -0
  257. arctrl/py/Spreadsheet/Metadata/protocols.py +146 -0
  258. arctrl/py/Spreadsheet/Metadata/publication.py +122 -0
  259. arctrl/py/Spreadsheet/Metadata/run.py +122 -0
  260. arctrl/py/Spreadsheet/Metadata/sparse_table.py +508 -0
  261. arctrl/py/Spreadsheet/Metadata/study.py +312 -0
  262. arctrl/py/Spreadsheet/Metadata/workflow.py +151 -0
  263. arctrl/py/Spreadsheet/__init__.py +0 -0
  264. arctrl/py/Spreadsheet/arc_assay.py +233 -0
  265. arctrl/py/Spreadsheet/arc_investigation.py +418 -0
  266. arctrl/py/Spreadsheet/arc_run.py +190 -0
  267. arctrl/py/Spreadsheet/arc_study.py +144 -0
  268. arctrl/py/Spreadsheet/arc_workflow.py +176 -0
  269. arctrl/py/Spreadsheet/assembly_info.py +1 -0
  270. arctrl/py/Spreadsheet/collection_aux.py +167 -0
  271. arctrl/py/Spreadsheet/data_map.py +44 -0
  272. arctrl/py/Spreadsheet/template.py +460 -0
  273. arctrl/py/ValidationPackages/__init__.py +0 -0
  274. arctrl/py/ValidationPackages/validation_package.py +82 -0
  275. arctrl/py/ValidationPackages/validation_packages_config.py +132 -0
  276. arctrl/py/WebRequest/__init__.py +0 -0
  277. arctrl/py/WebRequest/web_request.py +9 -0
  278. arctrl/py/WebRequest/web_request_py.py +135 -0
  279. arctrl/py/Yaml/__init__.py +0 -0
  280. arctrl/py/Yaml/decode.py +1 -0
  281. arctrl/py/Yaml/encode.py +10 -0
  282. arctrl/py/Yaml/validation_package.py +77 -0
  283. arctrl/py/Yaml/validation_packages_config.py +86 -0
  284. arctrl/py/__init__.py +0 -0
  285. arctrl/py/arc.py +1400 -0
  286. arctrl/py/column_index.py +280 -0
  287. arctrl/py/conversion.py +2184 -0
  288. arctrl/py/cross_async.py +76 -0
  289. arctrl/py/fable_modules/dynamic_obj/__init__.py +0 -0
  290. arctrl/py/fable_modules/dynamic_obj/dyn_obj.py +136 -0
  291. arctrl/py/fable_modules/dynamic_obj/dynamic_obj.py +415 -0
  292. arctrl/py/fable_modules/dynamic_obj/fable_js.py +1 -0
  293. arctrl/py/fable_modules/dynamic_obj/fable_py.py +288 -0
  294. arctrl/py/fable_modules/dynamic_obj/hash_codes.py +82 -0
  295. arctrl/py/fable_modules/dynamic_obj/property_helper.py +25 -0
  296. arctrl/py/fable_modules/dynamic_obj/reflection_utils.py +87 -0
  297. arctrl/py/fable_modules/fable_library/__init__.py +0 -0
  298. arctrl/py/fable_modules/fable_library/array_.py +1528 -0
  299. arctrl/py/fable_modules/fable_library/async_.py +377 -0
  300. arctrl/py/fable_modules/fable_library/async_builder.py +379 -0
  301. arctrl/py/fable_modules/fable_library/big_int.py +330 -0
  302. arctrl/py/fable_modules/fable_library/bit_converter.py +131 -0
  303. arctrl/py/fable_modules/fable_library/boolean.py +26 -0
  304. arctrl/py/fable_modules/fable_library/char.py +237 -0
  305. arctrl/py/fable_modules/fable_library/choice.py +212 -0
  306. arctrl/py/fable_modules/fable_library/date.py +779 -0
  307. arctrl/py/fable_modules/fable_library/date_offset.py +79 -0
  308. arctrl/py/fable_modules/fable_library/decimal_.py +190 -0
  309. arctrl/py/fable_modules/fable_library/diagnostics.py +54 -0
  310. arctrl/py/fable_modules/fable_library/double.py +87 -0
  311. arctrl/py/fable_modules/fable_library/encoding.py +41 -0
  312. arctrl/py/fable_modules/fable_library/event.py +206 -0
  313. arctrl/py/fable_modules/fable_library/file.py +107 -0
  314. arctrl/py/fable_modules/fable_library/fsharp_collections.py +52 -0
  315. arctrl/py/fable_modules/fable_library/fsharp_core.py +123 -0
  316. arctrl/py/fable_modules/fable_library/global_.py +63 -0
  317. arctrl/py/fable_modules/fable_library/guid.py +41 -0
  318. arctrl/py/fable_modules/fable_library/int32.py +73 -0
  319. arctrl/py/fable_modules/fable_library/list.py +1788 -0
  320. arctrl/py/fable_modules/fable_library/long.py +240 -0
  321. arctrl/py/fable_modules/fable_library/mailbox_processor.py +179 -0
  322. arctrl/py/fable_modules/fable_library/map.py +1854 -0
  323. arctrl/py/fable_modules/fable_library/map_util.py +148 -0
  324. arctrl/py/fable_modules/fable_library/mutable_map.py +397 -0
  325. arctrl/py/fable_modules/fable_library/mutable_set.py +279 -0
  326. arctrl/py/fable_modules/fable_library/native.py +45 -0
  327. arctrl/py/fable_modules/fable_library/numeric.py +46 -0
  328. arctrl/py/fable_modules/fable_library/observable.py +222 -0
  329. arctrl/py/fable_modules/fable_library/option.py +128 -0
  330. arctrl/py/fable_modules/fable_library/path.py +62 -0
  331. arctrl/py/fable_modules/fable_library/range.py +117 -0
  332. arctrl/py/fable_modules/fable_library/reflection.py +463 -0
  333. arctrl/py/fable_modules/fable_library/reg_exp.py +137 -0
  334. arctrl/py/fable_modules/fable_library/resize_array.py +31 -0
  335. arctrl/py/fable_modules/fable_library/result.py +212 -0
  336. arctrl/py/fable_modules/fable_library/seq.py +1979 -0
  337. arctrl/py/fable_modules/fable_library/seq2.py +221 -0
  338. arctrl/py/fable_modules/fable_library/set.py +2414 -0
  339. arctrl/py/fable_modules/fable_library/singleton_local_time_zone.py +36 -0
  340. arctrl/py/fable_modules/fable_library/string_.py +573 -0
  341. arctrl/py/fable_modules/fable_library/system_collections_generic.py +462 -0
  342. arctrl/py/fable_modules/fable_library/system_text.py +237 -0
  343. arctrl/py/fable_modules/fable_library/task.py +116 -0
  344. arctrl/py/fable_modules/fable_library/task_builder.py +122 -0
  345. arctrl/py/fable_modules/fable_library/thread.py +5 -0
  346. arctrl/py/fable_modules/fable_library/time_span.py +283 -0
  347. arctrl/py/fable_modules/fable_library/timer.py +24 -0
  348. arctrl/py/fable_modules/fable_library/types.py +401 -0
  349. arctrl/py/fable_modules/fable_library/uri.py +109 -0
  350. arctrl/py/fable_modules/fable_library/util.py +2735 -0
  351. arctrl/py/fable_modules/fable_openpyxl/__init__.py +0 -0
  352. arctrl/py/fable_modules/fable_openpyxl/openpyxl.py +362 -0
  353. arctrl/py/fable_modules/fable_python/cognite-sdk/__init__.py +0 -0
  354. arctrl/py/fable_modules/fable_python/cognite-sdk/cognite_sdk.py +22 -0
  355. arctrl/py/fable_modules/fable_python/flask/__init__.py +0 -0
  356. arctrl/py/fable_modules/fable_python/flask/flask.py +34 -0
  357. arctrl/py/fable_modules/fable_python/jupyter/__init__.py +0 -0
  358. arctrl/py/fable_modules/fable_python/jupyter/ipy_widgets.py +47 -0
  359. arctrl/py/fable_modules/fable_python/jupyter/ipython.py +13 -0
  360. arctrl/py/fable_modules/fable_python/stdlib/__init__.py +0 -0
  361. arctrl/py/fable_modules/fable_python/stdlib/ast.py +1 -0
  362. arctrl/py/fable_modules/fable_python/stdlib/asyncio/__init__.py +0 -0
  363. arctrl/py/fable_modules/fable_python/stdlib/asyncio/events.py +17 -0
  364. arctrl/py/fable_modules/fable_python/stdlib/asyncio/futures.py +52 -0
  365. arctrl/py/fable_modules/fable_python/stdlib/asyncio/tasks.py +38 -0
  366. arctrl/py/fable_modules/fable_python/stdlib/base64_.py +1 -0
  367. arctrl/py/fable_modules/fable_python/stdlib/builtins_.py +38 -0
  368. arctrl/py/fable_modules/fable_python/stdlib/html.py +1 -0
  369. arctrl/py/fable_modules/fable_python/stdlib/json.py +1 -0
  370. arctrl/py/fable_modules/fable_python/stdlib/math_.py +1 -0
  371. arctrl/py/fable_modules/fable_python/stdlib/os_.py +1 -0
  372. arctrl/py/fable_modules/fable_python/stdlib/queue_.py +1 -0
  373. arctrl/py/fable_modules/fable_python/stdlib/string_.py +1 -0
  374. arctrl/py/fable_modules/fable_python/stdlib/sys_.py +30 -0
  375. arctrl/py/fable_modules/fable_python/stdlib/time_.py +1 -0
  376. arctrl/py/fable_modules/fable_python/stdlib/tk_inter.py +1 -0
  377. arctrl/py/fable_modules/fs_spreadsheet/Cells/__init__.py +0 -0
  378. arctrl/py/fable_modules/fs_spreadsheet/Cells/fs_cell.py +338 -0
  379. arctrl/py/fable_modules/fs_spreadsheet/Cells/fs_cells_collection.py +469 -0
  380. arctrl/py/fable_modules/fs_spreadsheet/DSL/__init__.py +0 -0
  381. arctrl/py/fable_modules/fs_spreadsheet/DSL/cell_builder.py +214 -0
  382. arctrl/py/fable_modules/fs_spreadsheet/DSL/column_builder.py +139 -0
  383. arctrl/py/fable_modules/fs_spreadsheet/DSL/dsl.py +50 -0
  384. arctrl/py/fable_modules/fs_spreadsheet/DSL/expression.py +65 -0
  385. arctrl/py/fable_modules/fs_spreadsheet/DSL/operators.py +9 -0
  386. arctrl/py/fable_modules/fs_spreadsheet/DSL/row_builder.py +139 -0
  387. arctrl/py/fable_modules/fs_spreadsheet/DSL/sheet_builder.py +118 -0
  388. arctrl/py/fable_modules/fs_spreadsheet/DSL/table_builder.py +122 -0
  389. arctrl/py/fable_modules/fs_spreadsheet/DSL/transform.py +464 -0
  390. arctrl/py/fable_modules/fs_spreadsheet/DSL/types.py +314 -0
  391. arctrl/py/fable_modules/fs_spreadsheet/DSL/workbook_builder.py +106 -0
  392. arctrl/py/fable_modules/fs_spreadsheet/Json/__init__.py +0 -0
  393. arctrl/py/fable_modules/fs_spreadsheet/Json/cell.py +103 -0
  394. arctrl/py/fable_modules/fs_spreadsheet/Json/column.py +70 -0
  395. arctrl/py/fable_modules/fs_spreadsheet/Json/row.py +70 -0
  396. arctrl/py/fable_modules/fs_spreadsheet/Json/table.py +57 -0
  397. arctrl/py/fable_modules/fs_spreadsheet/Json/value.py +93 -0
  398. arctrl/py/fable_modules/fs_spreadsheet/Json/workbook.py +71 -0
  399. arctrl/py/fable_modules/fs_spreadsheet/Json/worksheet.py +217 -0
  400. arctrl/py/fable_modules/fs_spreadsheet/Ranges/__init__.py +0 -0
  401. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range.py +47 -0
  402. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_address.py +186 -0
  403. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_base.py +90 -0
  404. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_column.py +78 -0
  405. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_row.py +48 -0
  406. arctrl/py/fable_modules/fs_spreadsheet/Tables/__init__.py +0 -0
  407. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table.py +393 -0
  408. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table_field.py +127 -0
  409. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table_row.py +23 -0
  410. arctrl/py/fable_modules/fs_spreadsheet/__init__.py +0 -0
  411. arctrl/py/fable_modules/fs_spreadsheet/fs_address.py +218 -0
  412. arctrl/py/fable_modules/fs_spreadsheet/fs_column.py +172 -0
  413. arctrl/py/fable_modules/fs_spreadsheet/fs_row.py +183 -0
  414. arctrl/py/fable_modules/fs_spreadsheet/fs_workbook.py +180 -0
  415. arctrl/py/fable_modules/fs_spreadsheet/fs_worksheet.py +600 -0
  416. arctrl/py/fable_modules/fs_spreadsheet/sheet_builder.py +330 -0
  417. arctrl/py/fable_modules/fs_spreadsheet_py/__init__.py +0 -0
  418. arctrl/py/fable_modules/fs_spreadsheet_py/cell.py +63 -0
  419. arctrl/py/fable_modules/fs_spreadsheet_py/cell_type.py +50 -0
  420. arctrl/py/fable_modules/fs_spreadsheet_py/fs_extension.py +60 -0
  421. arctrl/py/fable_modules/fs_spreadsheet_py/json.py +47 -0
  422. arctrl/py/fable_modules/fs_spreadsheet_py/table.py +53 -0
  423. arctrl/py/fable_modules/fs_spreadsheet_py/workbook.py +40 -0
  424. arctrl/py/fable_modules/fs_spreadsheet_py/worksheet.py +54 -0
  425. arctrl/py/fable_modules/fs_spreadsheet_py/xlsx.py +37 -0
  426. arctrl/py/fable_modules/thoth_json_core/__init__.py +0 -0
  427. arctrl/py/fable_modules/thoth_json_core/decode.py +1588 -0
  428. arctrl/py/fable_modules/thoth_json_core/encode.py +261 -0
  429. arctrl/py/fable_modules/thoth_json_core/types.py +181 -0
  430. arctrl/py/fable_modules/thoth_json_python/__init__.py +0 -0
  431. arctrl/py/fable_modules/thoth_json_python/decode.py +112 -0
  432. arctrl/py/fable_modules/thoth_json_python/encode.py +72 -0
  433. arctrl/py/fable_modules/thoth_json_python/python.py +1 -0
  434. arctrl/py/fable_modules/yamlicious/Interop/__init__.py +0 -0
  435. arctrl/py/fable_modules/yamlicious/Interop/js_interop.py +1 -0
  436. arctrl/py/fable_modules/yamlicious/Interop/py_interop.py +7 -0
  437. arctrl/py/fable_modules/yamlicious/__init__.py +0 -0
  438. arctrl/py/fable_modules/yamlicious/decode.py +1784 -0
  439. arctrl/py/fable_modules/yamlicious/encode.py +84 -0
  440. arctrl/py/fable_modules/yamlicious/library.py +10 -0
  441. arctrl/py/fable_modules/yamlicious/persil.py +57 -0
  442. arctrl/py/fable_modules/yamlicious/preprocessing.py +99 -0
  443. arctrl/py/fable_modules/yamlicious/reader.py +665 -0
  444. arctrl/py/fable_modules/yamlicious/regex.py +21 -0
  445. arctrl/py/fable_modules/yamlicious/regex_active_patterns.py +256 -0
  446. arctrl/py/fable_modules/yamlicious/writer.py +175 -0
  447. arctrl/py/fable_modules/yamlicious/yamlicious_types.py +128 -0
  448. arctrl/py/json.py +213 -0
  449. arctrl/py/rocrate_io.py +72 -0
  450. arctrl/py/template_web.py +23 -0
  451. arctrl/py/xlsx.py +148 -0
  452. arctrl/rocrate.py +21 -0
  453. arctrl-3.0.0a3.dist-info/LICENSE +21 -0
  454. arctrl-3.0.0a3.dist-info/METADATA +119 -0
  455. arctrl-3.0.0a3.dist-info/RECORD +456 -0
  456. arctrl-3.0.0a3.dist-info/WHEEL +4 -0
@@ -0,0 +1,122 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from typing import Any
4
+ from ...fable_modules.fable_library.list import (of_array, FSharpList, map as map_1, empty, cons, reverse)
5
+ from ...fable_modules.fable_library.map_util import add_to_dict
6
+ from ...fable_modules.fable_library.option import (map, default_arg)
7
+ from ...fable_modules.fable_library.seq2 import List_distinct
8
+ from ...fable_modules.fable_library.string_ import (starts_with_exact, join)
9
+ from ...fable_modules.fable_library.types import Array
10
+ from ...fable_modules.fable_library.util import (string_hash, IEnumerable_1, IEnumerator)
11
+ from ...Core.arc_types import ArcRun
12
+ from ...Core.comment import (Comment, Remark)
13
+ from ...Core.conversion import (JsonTypes_decomposeTechnologyPlatform, JsonTypes_composeTechnologyPlatform)
14
+ from ...Core.Helper.collections_ import (Option_fromValueWithDefault, ResizeArray_iter)
15
+ from ...Core.Helper.identifier import (create_missing_identifier, Assay_tryIdentifierFromFileName, Run_fileNameFromIdentifier)
16
+ from ...Core.ontology_annotation import OntologyAnnotation
17
+ from .comment import (Comment_fromString, Comment_toString)
18
+ from .sparse_table import (SparseTable__TryGetValueDefault_5BAE6133, SparseTable__TryGetValue_11FD62A8, SparseTable, SparseTable_Create_Z2192E64B, SparseTable_FromRows_Z5579EC29, SparseTable_ToRows_759CAFC1)
19
+
20
+ labels: FSharpList[str] = of_array(["Identifier", "Title", "Description", "Workflow Identifiers", "Measurement Type", "Measurement Type Term Accession Number", "Measurement Type Term Source REF", "Technology Type", "Technology Type Term Accession Number", "Technology Type Term Source REF", "Technology Platform", "File Name"])
21
+
22
+ def from_string(identifier: str | None, title: str | None, description: str | None, workflow_identifiers: str | None, measurement_type: str | None, measurement_type_term_source_ref: str | None, measurement_type_term_accession_number: str | None, technology_type: str | None, technology_type_term_source_ref: str | None, technology_type_term_accession_number: str | None, technology_platform: str | None, file_name: str | None, comments: Array[Comment]) -> ArcRun:
23
+ workflow_identifiers_1: Array[str]
24
+ if workflow_identifiers is None:
25
+ workflow_identifiers_1 = []
26
+
27
+ else:
28
+ wi: str = workflow_identifiers
29
+ workflow_identifiers_1 = list(wi.split(";"))
30
+
31
+ measurement_type_1: OntologyAnnotation = OntologyAnnotation.create(measurement_type, measurement_type_term_source_ref, measurement_type_term_accession_number)
32
+ technology_type_1: OntologyAnnotation = OntologyAnnotation.create(technology_type, technology_type_term_source_ref, technology_type_term_accession_number)
33
+ identifier_4: str
34
+ if identifier is None:
35
+ if file_name is None:
36
+ identifier_4 = create_missing_identifier()
37
+
38
+ else:
39
+ match_value: str | None = Assay_tryIdentifierFromFileName(file_name)
40
+ identifier_4 = match_value if (match_value is not None) else create_missing_identifier()
41
+
42
+
43
+ else:
44
+ identifier_4 = identifier
45
+
46
+ measurement_type_2: OntologyAnnotation | None = Option_fromValueWithDefault(OntologyAnnotation(), measurement_type_1)
47
+ technology_type_2: OntologyAnnotation | None = Option_fromValueWithDefault(OntologyAnnotation(), technology_type_1)
48
+ def _arrow1235(name: str, identifier: Any=identifier, title: Any=title, description: Any=description, workflow_identifiers: Any=workflow_identifiers, measurement_type: Any=measurement_type, measurement_type_term_source_ref: Any=measurement_type_term_source_ref, measurement_type_term_accession_number: Any=measurement_type_term_accession_number, technology_type: Any=technology_type, technology_type_term_source_ref: Any=technology_type_term_source_ref, technology_type_term_accession_number: Any=technology_type_term_accession_number, technology_platform: Any=technology_platform, file_name: Any=file_name, comments: Any=comments) -> OntologyAnnotation:
49
+ return JsonTypes_decomposeTechnologyPlatform(name)
50
+
51
+ technology_platform_1: OntologyAnnotation | None = map(_arrow1235, technology_platform)
52
+ return ArcRun.make(identifier_4, title, description, measurement_type_2, technology_type_2, technology_platform_1, workflow_identifiers_1, [], None, [], comments)
53
+
54
+
55
+ def from_sparse_table(matrix: SparseTable) -> ArcRun:
56
+ def mapping(k: str, matrix: Any=matrix) -> Comment:
57
+ return Comment_fromString(k, SparseTable__TryGetValueDefault_5BAE6133(matrix, "", (k, 0)))
58
+
59
+ comments: Array[Comment] = list(map_1(mapping, matrix.CommentKeys))
60
+ return from_string(SparseTable__TryGetValue_11FD62A8(matrix, ("Identifier", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Title", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Description", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Workflow Identifiers", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Measurement Type", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Measurement Type Term Source REF", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Measurement Type Term Accession Number", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Technology Type", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Technology Type Term Source REF", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Technology Type Term Accession Number", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("Technology Platform", 0)), SparseTable__TryGetValue_11FD62A8(matrix, ("File Name", 0)), comments)
61
+
62
+
63
+ def to_sparse_table(run: ArcRun) -> SparseTable:
64
+ matrix: SparseTable = SparseTable_Create_Z2192E64B(None, labels, None, 2)
65
+ comment_keys: FSharpList[str] = empty()
66
+ pattern_input: tuple[str, str] = (("", "")) if starts_with_exact(run.Identifier, "MISSING_IDENTIFIER_") else ((run.Identifier, Run_fileNameFromIdentifier(run.Identifier)))
67
+ workflow_identifiers: str = join(";", run.WorkflowIdentifiers)
68
+ mt_1: dict[str, Any]
69
+ mt: OntologyAnnotation = default_arg(run.MeasurementType, OntologyAnnotation())
70
+ mt_1 = OntologyAnnotation.to_string_object(mt, True)
71
+ tt_1: dict[str, Any]
72
+ tt: OntologyAnnotation = default_arg(run.TechnologyType, OntologyAnnotation())
73
+ tt_1 = OntologyAnnotation.to_string_object(tt, True)
74
+ add_to_dict(matrix.Matrix, ("Identifier", 1), pattern_input[0])
75
+ add_to_dict(matrix.Matrix, ("Title", 1), default_arg(run.Title, ""))
76
+ add_to_dict(matrix.Matrix, ("Description", 1), default_arg(run.Description, ""))
77
+ add_to_dict(matrix.Matrix, ("Workflow Identifiers", 1), workflow_identifiers)
78
+ add_to_dict(matrix.Matrix, ("Measurement Type", 1), mt_1["TermName"])
79
+ add_to_dict(matrix.Matrix, ("Measurement Type Term Accession Number", 1), mt_1["TermAccessionNumber"])
80
+ add_to_dict(matrix.Matrix, ("Measurement Type Term Source REF", 1), mt_1["TermSourceREF"])
81
+ add_to_dict(matrix.Matrix, ("Technology Type", 1), tt_1["TermName"])
82
+ add_to_dict(matrix.Matrix, ("Technology Type Term Accession Number", 1), tt_1["TermAccessionNumber"])
83
+ add_to_dict(matrix.Matrix, ("Technology Type Term Source REF", 1), tt_1["TermSourceREF"])
84
+ def mapping(tp: OntologyAnnotation, run: Any=run) -> str:
85
+ return JsonTypes_composeTechnologyPlatform(tp)
86
+
87
+ add_to_dict(matrix.Matrix, ("Technology Platform", 1), default_arg(map(mapping, run.TechnologyPlatform), ""))
88
+ add_to_dict(matrix.Matrix, ("File Name", 1), pattern_input[1])
89
+ def f(comment: Comment, run: Any=run) -> None:
90
+ nonlocal comment_keys
91
+ pattern_input_1: tuple[str, str] = Comment_toString(comment)
92
+ n: str = pattern_input_1[0]
93
+ comment_keys = cons(n, comment_keys)
94
+ add_to_dict(matrix.Matrix, (n, 1), pattern_input_1[1])
95
+
96
+ ResizeArray_iter(f, run.Comments)
97
+ class ObjectExpr1237:
98
+ @property
99
+ def Equals(self) -> Callable[[str, str], bool]:
100
+ def _arrow1236(x: str, y: str) -> bool:
101
+ return x == y
102
+
103
+ return _arrow1236
104
+
105
+ @property
106
+ def GetHashCode(self) -> Callable[[str], int]:
107
+ return string_hash
108
+
109
+ return SparseTable(matrix.Matrix, matrix.Keys, reverse(List_distinct(comment_keys, ObjectExpr1237())), matrix.ColumnCount)
110
+
111
+
112
+ def from_rows(line_number: int, rows: IEnumerator[IEnumerable_1[tuple[int, str]]]) -> tuple[str | None, int, FSharpList[Remark], ArcRun]:
113
+ tupled_arg: tuple[str | None, int, FSharpList[Remark], SparseTable] = SparseTable_FromRows_Z5579EC29(rows, labels, line_number, "Run")
114
+ return (tupled_arg[0], tupled_arg[1], tupled_arg[2], from_sparse_table(tupled_arg[3]))
115
+
116
+
117
+ def to_rows(run: ArcRun) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
118
+ return SparseTable_ToRows_759CAFC1(to_sparse_table(run), "Run")
119
+
120
+
121
+ __all__ = ["labels", "from_string", "from_sparse_table", "to_sparse_table", "from_rows", "to_rows"]
122
+
@@ -0,0 +1,508 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from dataclasses import dataclass
4
+ from typing import Any
5
+ from ...fable_modules.fable_library.list import (FSharpList, singleton, empty, append, cons, find, exists, initialize as initialize_1, map as map_2)
6
+ from ...fable_modules.fable_library.map import (of_seq, try_find)
7
+ from ...fable_modules.fable_library.map_util import (get_item_from_dict, add_to_dict)
8
+ from ...fable_modules.fable_library.mutable_map import Dictionary
9
+ from ...fable_modules.fable_library.option import (map as map_1, default_arg)
10
+ from ...fable_modules.fable_library.reflection import (TypeInfo, string_type, int32_type, tuple_type, class_type, list_type, record_type)
11
+ from ...fable_modules.fable_library.seq import (indexed, map, choose, initialize, max_by, try_pick, fold, iterate, is_empty, length as length_1, try_item, delay, append as append_1)
12
+ from ...fable_modules.fable_library.string_ import (to_fail, printf)
13
+ from ...fable_modules.fable_library.types import (Record, Array)
14
+ from ...fable_modules.fable_library.util import (IEnumerable_1, compare_primitives, equals, equal_arrays, array_hash, IEnumerator)
15
+ from ...fable_modules.fs_spreadsheet.Cells.fs_cell import (FsCell, DataType)
16
+ from ...fable_modules.fs_spreadsheet.DSL.cell_builder import (CellBuilder__AsCellElement_6F87C2ED, CellBuilder__ctor)
17
+ from ...fable_modules.fs_spreadsheet.DSL.row_builder import (RowBuilder__ctor, RowBuilder__Combine_19F30600, RowBuilder_get_Empty)
18
+ from ...fable_modules.fs_spreadsheet.DSL.types import (SheetEntity_1_some_2B595, Messages_format)
19
+ from ...fable_modules.fs_spreadsheet.DSL.row_builder import RowBuilder
20
+ from ...fable_modules.fs_spreadsheet.DSL.types import (SheetEntity_1, RowElement, ColumnIndex)
21
+ from ...fable_modules.fs_spreadsheet.fs_address import FsAddress__ctor_Z37302880
22
+ from ...fable_modules.fs_spreadsheet.fs_row import FsRow
23
+ from ...fable_modules.fs_spreadsheet.fs_worksheet import FsWorksheet
24
+ from ...fable_modules.fs_spreadsheet.Ranges.fs_range_address import FsRangeAddress__ctor_7E77A4A0
25
+ from ...Core.comment import (Remark, Comment)
26
+ from ..collection_aux import (Dictionary_tryGetValue, Seq_trySkip)
27
+ from .comment import (Remark__007CRemark_007C__007C, Comment__007CComment_007C__007C, Comment_wrapCommentKey)
28
+
29
+ def SparseRowModule_fromValues(v: IEnumerable_1[str]) -> IEnumerable_1[tuple[int, str]]:
30
+ return indexed(v)
31
+
32
+
33
+ def SparseRowModule_getValues(i: IEnumerable_1[tuple[int, str]]) -> IEnumerable_1[str]:
34
+ def mapping(tuple: tuple[int, str], i: Any=i) -> str:
35
+ return tuple[1]
36
+
37
+ return map(mapping, i)
38
+
39
+
40
+ def SparseRowModule_fromAllValues(v: IEnumerable_1[str | None]) -> IEnumerable_1[tuple[int, str]]:
41
+ def chooser(tupled_arg: tuple[int, str | None], v: Any=v) -> tuple[int, str] | None:
42
+ def _arrow819(v_1: str, tupled_arg: Any=tupled_arg) -> tuple[int, str]:
43
+ return (tupled_arg[0], v_1)
44
+
45
+ return map_1(_arrow819, tupled_arg[1])
46
+
47
+ return choose(chooser, indexed(v))
48
+
49
+
50
+ def SparseRowModule_getAllValues(i: IEnumerable_1[tuple[int, str]]) -> IEnumerable_1[str | None]:
51
+ class ObjectExpr820:
52
+ @property
53
+ def Compare(self) -> Callable[[int, int], int]:
54
+ return compare_primitives
55
+
56
+ m: Any = of_seq(i, ObjectExpr820())
57
+ def projection(tuple: tuple[int, str], i: Any=i) -> int:
58
+ return tuple[0]
59
+
60
+ class ObjectExpr821:
61
+ @property
62
+ def Compare(self) -> Callable[[int, int], int]:
63
+ return compare_primitives
64
+
65
+ def _arrow822(i_1: int, i: Any=i) -> str | None:
66
+ return try_find(i_1, m)
67
+
68
+ return initialize(max_by(projection, i, ObjectExpr821())[0] + 1, _arrow822)
69
+
70
+
71
+ def SparseRowModule_fromFsRow(r: FsRow) -> IEnumerable_1[tuple[int, str]]:
72
+ def chooser(c: FsCell, r: Any=r) -> tuple[int, str] | None:
73
+ if equals(c.Value, ""):
74
+ return None
75
+
76
+ else:
77
+ return (c.ColumnNumber - 1, c.ValueAsString())
78
+
79
+
80
+ return choose(chooser, r.Cells)
81
+
82
+
83
+ def SparseRowModule_tryGetValueAt(i: int, vs: IEnumerable_1[tuple[int, str]]) -> str | None:
84
+ def chooser(tupled_arg: tuple[int, str], i: Any=i, vs: Any=vs) -> str | None:
85
+ if tupled_arg[0] == i:
86
+ return tupled_arg[1]
87
+
88
+ else:
89
+ return None
90
+
91
+
92
+ return try_pick(chooser, vs)
93
+
94
+
95
+ def SparseRowModule_toDSLRow(vs: IEnumerable_1[tuple[int, str]]) -> FSharpList[RowElement]:
96
+ _builder: RowBuilder = RowBuilder__ctor()
97
+ this_9: SheetEntity_1[FSharpList[RowElement]]
98
+ def f_2(_arg: str | None=None, vs: Any=vs) -> SheetEntity_1[FSharpList[RowElement]]:
99
+ v: str | None = _arg
100
+ if v is None:
101
+ c_1: tuple[tuple[DataType, Any], int | None]
102
+ this_5: SheetEntity_1[tuple[tuple[DataType, Any], int | None]] = CellBuilder__AsCellElement_6F87C2ED(CellBuilder__ctor(), SheetEntity_1_some_2B595(singleton((DataType(0), ""))))
103
+ (pattern_matching_result, errs_1, f_1) = (None, None, None)
104
+ if this_5.tag == 1:
105
+ if equals(this_5.fields[0], empty()):
106
+ pattern_matching_result = 1
107
+
108
+ else:
109
+ pattern_matching_result = 2
110
+
111
+
112
+ elif this_5.tag == 2:
113
+ if equals(this_5.fields[0], empty()):
114
+ pattern_matching_result = 1
115
+
116
+ else:
117
+ pattern_matching_result = 2
118
+
119
+
120
+ else:
121
+ pattern_matching_result = 0
122
+ errs_1 = this_5.fields[1]
123
+ f_1 = this_5.fields[0]
124
+
125
+ if pattern_matching_result == 0:
126
+ c_1 = f_1
127
+
128
+ elif pattern_matching_result == 1:
129
+ raise Exception("SheetEntity does not contain Value.")
130
+
131
+ elif pattern_matching_result == 2:
132
+ (pattern_matching_result_1, ms_3_1) = (None, None)
133
+ if this_5.tag == 1:
134
+ pattern_matching_result_1 = 0
135
+ ms_3_1 = this_5.fields[0]
136
+
137
+ elif this_5.tag == 2:
138
+ pattern_matching_result_1 = 0
139
+ ms_3_1 = this_5.fields[0]
140
+
141
+ else:
142
+ pattern_matching_result_1 = 1
143
+
144
+ if pattern_matching_result_1 == 0:
145
+ raise Exception(("SheetEntity does not contain Value: \n\t" + Messages_format(ms_3_1)) + "")
146
+
147
+ elif pattern_matching_result_1 == 1:
148
+ raise Exception("Match failure: FsSpreadsheet.DSL.SheetEntity`1")
149
+
150
+
151
+ return SheetEntity_1_some_2B595(singleton(RowElement(1, c_1[0]) if (c_1[1] is None) else RowElement(0, ColumnIndex(0, c_1[1]), c_1[0])))
152
+
153
+ else:
154
+ v_1: str = v
155
+ c: tuple[tuple[DataType, Any], int | None]
156
+ this_2: SheetEntity_1[tuple[tuple[DataType, Any], int | None]] = CellBuilder__AsCellElement_6F87C2ED(CellBuilder__ctor(), SheetEntity_1_some_2B595(singleton((DataType(0), v_1))))
157
+ (pattern_matching_result_2, errs, f) = (None, None, None)
158
+ if this_2.tag == 1:
159
+ if equals(this_2.fields[0], empty()):
160
+ pattern_matching_result_2 = 1
161
+
162
+ else:
163
+ pattern_matching_result_2 = 2
164
+
165
+
166
+ elif this_2.tag == 2:
167
+ if equals(this_2.fields[0], empty()):
168
+ pattern_matching_result_2 = 1
169
+
170
+ else:
171
+ pattern_matching_result_2 = 2
172
+
173
+
174
+ else:
175
+ pattern_matching_result_2 = 0
176
+ errs = this_2.fields[1]
177
+ f = this_2.fields[0]
178
+
179
+ if pattern_matching_result_2 == 0:
180
+ c = f
181
+
182
+ elif pattern_matching_result_2 == 1:
183
+ raise Exception("SheetEntity does not contain Value.")
184
+
185
+ elif pattern_matching_result_2 == 2:
186
+ (pattern_matching_result_3, ms_3) = (None, None)
187
+ if this_2.tag == 1:
188
+ pattern_matching_result_3 = 0
189
+ ms_3 = this_2.fields[0]
190
+
191
+ elif this_2.tag == 2:
192
+ pattern_matching_result_3 = 0
193
+ ms_3 = this_2.fields[0]
194
+
195
+ else:
196
+ pattern_matching_result_3 = 1
197
+
198
+ if pattern_matching_result_3 == 0:
199
+ raise Exception(("SheetEntity does not contain Value: \n\t" + Messages_format(ms_3)) + "")
200
+
201
+ elif pattern_matching_result_3 == 1:
202
+ raise Exception("Match failure: FsSpreadsheet.DSL.SheetEntity`1")
203
+
204
+
205
+ return SheetEntity_1_some_2B595(singleton(RowElement(1, c[0]) if (c[1] is None) else RowElement(0, ColumnIndex(0, c[1]), c[0])))
206
+
207
+
208
+ ns: IEnumerable_1[SheetEntity_1[FSharpList[RowElement]]] = map(f_2, SparseRowModule_getAllValues(vs))
209
+ def folder(state: SheetEntity_1[FSharpList[RowElement]], we: SheetEntity_1[FSharpList[RowElement]], vs: Any=vs) -> SheetEntity_1[FSharpList[RowElement]]:
210
+ return RowBuilder__Combine_19F30600(_builder, state, we)
211
+
212
+ this_9 = fold(folder, RowBuilder_get_Empty(), ns)
213
+ (pattern_matching_result_4, errs_2, f_3) = (None, None, None)
214
+ if this_9.tag == 1:
215
+ if equals(this_9.fields[0], empty()):
216
+ pattern_matching_result_4 = 1
217
+
218
+ else:
219
+ pattern_matching_result_4 = 2
220
+
221
+
222
+ elif this_9.tag == 2:
223
+ if equals(this_9.fields[0], empty()):
224
+ pattern_matching_result_4 = 1
225
+
226
+ else:
227
+ pattern_matching_result_4 = 2
228
+
229
+
230
+ else:
231
+ pattern_matching_result_4 = 0
232
+ errs_2 = this_9.fields[1]
233
+ f_3 = this_9.fields[0]
234
+
235
+ if pattern_matching_result_4 == 0:
236
+ return f_3
237
+
238
+ elif pattern_matching_result_4 == 1:
239
+ raise Exception("SheetEntity does not contain Value.")
240
+
241
+ elif pattern_matching_result_4 == 2:
242
+ (pattern_matching_result_5, ms_3_2) = (None, None)
243
+ if this_9.tag == 1:
244
+ pattern_matching_result_5 = 0
245
+ ms_3_2 = this_9.fields[0]
246
+
247
+ elif this_9.tag == 2:
248
+ pattern_matching_result_5 = 0
249
+ ms_3_2 = this_9.fields[0]
250
+
251
+ else:
252
+ pattern_matching_result_5 = 1
253
+
254
+ if pattern_matching_result_5 == 0:
255
+ raise Exception(("SheetEntity does not contain Value: \n\t" + Messages_format(ms_3_2)) + "")
256
+
257
+ elif pattern_matching_result_5 == 1:
258
+ raise Exception("Match failure: FsSpreadsheet.DSL.SheetEntity`1")
259
+
260
+
261
+
262
+
263
+ def SparseRowModule_readFromSheet(sheet: FsWorksheet) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
264
+ def mapping(r: FsRow, sheet: Any=sheet) -> IEnumerable_1[tuple[int, str]]:
265
+ return SparseRowModule_fromFsRow(r)
266
+
267
+ return map(mapping, sheet.Rows)
268
+
269
+
270
+ def SparseRowModule_writeToSheet(row_i: int, row: IEnumerable_1[tuple[int, str]], sheet: FsWorksheet) -> None:
271
+ fs_row: FsRow = sheet.RowWithRange(FsRangeAddress__ctor_7E77A4A0(FsAddress__ctor_Z37302880(row_i, 1), FsAddress__ctor_Z37302880(row_i, 1)), True)
272
+ def action(tupled_arg: tuple[int, str], row_i: Any=row_i, row: Any=row, sheet: Any=sheet) -> None:
273
+ v: str = tupled_arg[1]
274
+ if v.strip() != "":
275
+ fs_row.Item(tupled_arg[0] + 1).SetValueAs(v)
276
+
277
+
278
+ iterate(action, row)
279
+
280
+
281
+ def _expr823() -> TypeInfo:
282
+ return record_type("ARCtrl.Spreadsheet.SparseTable", [], SparseTable, lambda: [("Matrix", class_type("System.Collections.Generic.Dictionary`2", [tuple_type(string_type, int32_type), string_type])), ("Keys", list_type(string_type)), ("CommentKeys", list_type(string_type)), ("ColumnCount", int32_type)])
283
+
284
+
285
+ @dataclass(eq = False, repr = False, slots = True)
286
+ class SparseTable(Record):
287
+ Matrix: Any
288
+ Keys: FSharpList[str]
289
+ CommentKeys: FSharpList[str]
290
+ ColumnCount: int
291
+
292
+ SparseTable_reflection = _expr823
293
+
294
+ def SparseTable__TryGetValue_11FD62A8(this: SparseTable, key: tuple[str, int]) -> str | None:
295
+ return Dictionary_tryGetValue(key, this.Matrix)
296
+
297
+
298
+ def SparseTable__TryGetValueDefault_5BAE6133(this: SparseTable, default_value: str, key: tuple[str, int]) -> str:
299
+ if key in this.Matrix:
300
+ return get_item_from_dict(this.Matrix, key)
301
+
302
+ else:
303
+ return default_value
304
+
305
+
306
+
307
+ def SparseTable_Create_Z2192E64B(matrix: Any | None=None, keys: FSharpList[str] | None=None, comment_keys: FSharpList[str] | None=None, length: int | None=None) -> SparseTable:
308
+ class ObjectExpr824:
309
+ @property
310
+ def Equals(self) -> Callable[[tuple[str, int], tuple[str, int]], bool]:
311
+ return equal_arrays
312
+
313
+ @property
314
+ def GetHashCode(self) -> Callable[[tuple[str, int]], int]:
315
+ return array_hash
316
+
317
+ return SparseTable(default_arg(matrix, Dictionary([], ObjectExpr824())), default_arg(keys, empty()), default_arg(comment_keys, empty()), default_arg(length, 0))
318
+
319
+
320
+ def SparseTable_AddRow(key: str, values: IEnumerable_1[tuple[int, str]], matrix: SparseTable) -> SparseTable:
321
+ def action(tupled_arg: tuple[int, str], key: Any=key, values: Any=values, matrix: Any=matrix) -> None:
322
+ add_to_dict(matrix.Matrix, (key, tupled_arg[0]), tupled_arg[1])
323
+
324
+ iterate(action, values)
325
+ def _arrow825(tuple: tuple[int, str], key: Any=key, values: Any=values, matrix: Any=matrix) -> int:
326
+ return tuple[0]
327
+
328
+ class ObjectExpr826:
329
+ @property
330
+ def Compare(self) -> Callable[[int, int], int]:
331
+ return compare_primitives
332
+
333
+ length: int = (0 if is_empty(values) else (1 + max_by(_arrow825, values, ObjectExpr826())[0])) or 0
334
+ return SparseTable(matrix.Matrix, append(matrix.Keys, singleton(key)), matrix.CommentKeys, length if (length > matrix.ColumnCount) else matrix.ColumnCount)
335
+
336
+
337
+ def SparseTable_AddEmptyComment(key: str, matrix: SparseTable) -> SparseTable:
338
+ return SparseTable(matrix.Matrix, matrix.Keys, append(matrix.CommentKeys, singleton(key)), matrix.ColumnCount)
339
+
340
+
341
+ def SparseTable_AddComment(key: str, values: IEnumerable_1[tuple[int, str]], matrix: SparseTable) -> SparseTable:
342
+ if length_1(values) == 0:
343
+ return SparseTable_AddEmptyComment(key, matrix)
344
+
345
+ else:
346
+ def action(tupled_arg: tuple[int, str], key: Any=key, values: Any=values, matrix: Any=matrix) -> None:
347
+ add_to_dict(matrix.Matrix, (key, tupled_arg[0]), tupled_arg[1])
348
+
349
+ iterate(action, values)
350
+ def _arrow827(tuple: tuple[int, str], key: Any=key, values: Any=values, matrix: Any=matrix) -> int:
351
+ return tuple[0]
352
+
353
+ class ObjectExpr828:
354
+ @property
355
+ def Compare(self) -> Callable[[int, int], int]:
356
+ return compare_primitives
357
+
358
+ length: int = (0 if is_empty(values) else (1 + max_by(_arrow827, values, ObjectExpr828())[0])) or 0
359
+ return SparseTable(matrix.Matrix, matrix.Keys, append(matrix.CommentKeys, singleton(key)), length if (length > matrix.ColumnCount) else matrix.ColumnCount)
360
+
361
+
362
+
363
+ def SparseTable_FromRows_Z5579EC29(en: IEnumerator[IEnumerable_1[tuple[int, str]]], labels: FSharpList[str], line_number: int, prefix: str | None=None) -> tuple[str | None, int, FSharpList[Remark], SparseTable]:
364
+ try:
365
+ prefix_1: str = "" if (prefix is None) else (prefix + " ")
366
+ def loop(matrix_mut: SparseTable, remarks_mut: FSharpList[Remark], line_number_1_mut: int) -> tuple[str | None, int, FSharpList[Remark], SparseTable]:
367
+ while True:
368
+ (matrix, remarks, line_number_1) = (matrix_mut, remarks_mut, line_number_1_mut)
369
+ if en.System_Collections_IEnumerator_MoveNext():
370
+ def mapping(tupled_arg: tuple[int, str], matrix: Any=matrix, remarks: Any=remarks, line_number_1: Any=line_number_1) -> tuple[int, str]:
371
+ return (tupled_arg[0] - 1, tupled_arg[1])
372
+
373
+ row: IEnumerable_1[tuple[int, str]] = map(mapping, en.System_Collections_Generic_IEnumerator_1_get_Current())
374
+ def mapping_1(tuple: tuple[int, str], matrix: Any=matrix, remarks: Any=remarks, line_number_1: Any=line_number_1) -> str:
375
+ return tuple[1]
376
+
377
+ match_value: str | None = map_1(mapping_1, try_item(0, row))
378
+ vals: IEnumerable_1[tuple[int, str]] | None = Seq_trySkip(1, row)
379
+ key: str | None = match_value
380
+ (pattern_matching_result, k, v_1) = (None, None, None)
381
+ if key is not None:
382
+ active_pattern_result: str | None = Comment__007CComment_007C__007C(key)
383
+ if active_pattern_result is not None:
384
+ if vals is not None:
385
+ pattern_matching_result = 0
386
+ k = active_pattern_result
387
+ v_1 = vals
388
+
389
+ else:
390
+ pattern_matching_result = 1
391
+
392
+
393
+ else:
394
+ pattern_matching_result = 1
395
+
396
+
397
+ else:
398
+ pattern_matching_result = 1
399
+
400
+ if pattern_matching_result == 0:
401
+ matrix_mut = SparseTable_AddComment(k, v_1, matrix)
402
+ remarks_mut = remarks
403
+ line_number_1_mut = line_number_1 + 1
404
+ continue
405
+
406
+ elif pattern_matching_result == 1:
407
+ (pattern_matching_result_1, k_2, k_3, v_3, k_4) = (None, None, None, None, None)
408
+ active_pattern_result_1: str | None = Remark__007CRemark_007C__007C(key)
409
+ if active_pattern_result_1 is not None:
410
+ pattern_matching_result_1 = 0
411
+ k_2 = active_pattern_result_1
412
+
413
+ elif key is not None:
414
+ if vals is not None:
415
+ def _arrow836(__unit: None=None, matrix: Any=matrix, remarks: Any=remarks, line_number_1: Any=line_number_1) -> bool:
416
+ v_2: IEnumerable_1[tuple[int, str]] = vals
417
+ k_1: str = key
418
+ def _arrow835(label: str) -> bool:
419
+ return k_1 == (prefix_1 + label)
420
+
421
+ return exists(_arrow835, labels)
422
+
423
+ if _arrow836():
424
+ pattern_matching_result_1 = 1
425
+ k_3 = key
426
+ v_3 = vals
427
+
428
+ else:
429
+ pattern_matching_result_1 = 2
430
+ k_4 = key
431
+
432
+
433
+ else:
434
+ pattern_matching_result_1 = 2
435
+ k_4 = key
436
+
437
+
438
+ else:
439
+ pattern_matching_result_1 = 3
440
+
441
+ if pattern_matching_result_1 == 0:
442
+ matrix_mut = matrix
443
+ remarks_mut = cons(Remark.make(line_number_1, k_2), remarks)
444
+ line_number_1_mut = line_number_1 + 1
445
+ continue
446
+
447
+ elif pattern_matching_result_1 == 1:
448
+ def _arrow833(label_1: str, matrix: Any=matrix, remarks: Any=remarks, line_number_1: Any=line_number_1) -> bool:
449
+ return k_3 == (prefix_1 + label_1)
450
+
451
+ matrix_mut = SparseTable_AddRow(find(_arrow833, labels), v_3, matrix)
452
+ remarks_mut = remarks
453
+ line_number_1_mut = line_number_1 + 1
454
+ continue
455
+
456
+ elif pattern_matching_result_1 == 2:
457
+ return (k_4, line_number_1, remarks, matrix)
458
+
459
+ elif pattern_matching_result_1 == 3:
460
+ return (None, line_number_1, remarks, matrix)
461
+
462
+
463
+
464
+ else:
465
+ return (None, line_number_1, remarks, matrix)
466
+
467
+ break
468
+
469
+ return loop(SparseTable_Create_Z2192E64B(), empty(), line_number)
470
+
471
+ except Exception as err:
472
+ arg_1: str = str(err)
473
+ return to_fail(printf("Error parsing block in investigation file starting from line number %i: %s"))(line_number)(arg_1)
474
+
475
+
476
+
477
+ def SparseTable_ToRows_759CAFC1(matrix: SparseTable, prefix: str | None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
478
+ prefix_1: str = "" if (prefix is None) else (prefix + " ")
479
+ def _arrow849(__unit: None=None, matrix: Any=matrix, prefix: Any=prefix) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
480
+ def _arrow844(key: str) -> IEnumerable_1[tuple[int, str]]:
481
+ def _arrow843(i: int) -> str:
482
+ return SparseTable__TryGetValueDefault_5BAE6133(matrix, "", (key, i + 1))
483
+
484
+ return SparseRowModule_fromValues(cons(prefix_1 + key, initialize_1(matrix.ColumnCount - 1, _arrow843)))
485
+
486
+ def _arrow848(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
487
+ def _arrow847(key_1: str) -> IEnumerable_1[tuple[int, str]]:
488
+ def _arrow846(i_1: int) -> str:
489
+ return SparseTable__TryGetValueDefault_5BAE6133(matrix, "", (key_1, i_1 + 1))
490
+
491
+ return SparseRowModule_fromValues(cons(Comment_wrapCommentKey(key_1), initialize_1(matrix.ColumnCount - 1, _arrow846)))
492
+
493
+ return map(_arrow847, matrix.CommentKeys)
494
+
495
+ return append_1(map(_arrow844, matrix.Keys), delay(_arrow848))
496
+
497
+ return delay(_arrow849)
498
+
499
+
500
+ def SparseTable_GetEmptyComments_3ECCA699(matrix: SparseTable) -> Array[Comment]:
501
+ def mapping(key: str, matrix: Any=matrix) -> Comment:
502
+ return Comment.create(key)
503
+
504
+ return list(map_2(mapping, matrix.CommentKeys))
505
+
506
+
507
+ __all__ = ["SparseRowModule_fromValues", "SparseRowModule_getValues", "SparseRowModule_fromAllValues", "SparseRowModule_getAllValues", "SparseRowModule_fromFsRow", "SparseRowModule_tryGetValueAt", "SparseRowModule_toDSLRow", "SparseRowModule_readFromSheet", "SparseRowModule_writeToSheet", "SparseTable_reflection", "SparseTable__TryGetValue_11FD62A8", "SparseTable__TryGetValueDefault_5BAE6133", "SparseTable_Create_Z2192E64B", "SparseTable_AddRow", "SparseTable_AddEmptyComment", "SparseTable_AddComment", "SparseTable_FromRows_Z5579EC29", "SparseTable_ToRows_759CAFC1", "SparseTable_GetEmptyComments_3ECCA699"]
508
+