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,575 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from typing import Any
4
+ from ...fable_modules.fable_library.array_ import (iterate_indexed, map)
5
+ from ...fable_modules.fable_library.int32 import op_unary_negation_int32
6
+ from ...fable_modules.fable_library.list import (cons, is_empty, tail as tail_1, head, FSharpList, empty, of_seq, exists, pick, map_indexed)
7
+ from ...fable_modules.fable_library.map import (of_array, try_find)
8
+ from ...fable_modules.fable_library.map_util import (get_item_from_dict, add_to_dict, remove_from_dict)
9
+ from ...fable_modules.fable_library.mutable_map import Dictionary
10
+ from ...fable_modules.fable_library.option import value as value_2
11
+ from ...fable_modules.fable_library.range import range_big_int
12
+ from ...fable_modules.fable_library.seq import (max_by, try_find_index, filter, to_array, head as head_1, to_list)
13
+ from ...fable_modules.fable_library.seq2 import Array_groupBy
14
+ from ...fable_modules.fable_library.set import (of_array as of_array_1, FSharpSet__Contains)
15
+ from ...fable_modules.fable_library.string_ import (to_console, printf)
16
+ from ...fable_modules.fable_library.types import (Array, Int32Array, to_string)
17
+ from ...fable_modules.fable_library.util import (compare_primitives, safe_hash, equals, IEnumerable_1, compare, ignore, get_enumerator, dispose, max, number_hash, equal_arrays, array_hash)
18
+ from ..Helper.collections_ import (Dictionary_tryFind, List_tryPickAndRemove)
19
+ from .composite_cell import CompositeCell
20
+ from .composite_column import CompositeColumn
21
+ from .composite_header import CompositeHeader
22
+
23
+ def get_column_count(headers: Array[CompositeHeader]) -> int:
24
+ return len(headers)
25
+
26
+
27
+ def get_row_count(values: Any) -> int:
28
+ if len(values) == 0:
29
+ return 0
30
+
31
+ else:
32
+ def projection(tuple: tuple[int, int], values: Any=values) -> int:
33
+ return tuple[1]
34
+
35
+ class ObjectExpr638:
36
+ @property
37
+ def Compare(self) -> Callable[[int, int], int]:
38
+ return compare_primitives
39
+
40
+ return 1 + max_by(projection, values.keys(), ObjectExpr638())[1]
41
+
42
+
43
+
44
+ def box_hash_values(col_count: int, values: Any) -> Any:
45
+ hash_1: int = 0
46
+ row_count: int = get_row_count(values) or 0
47
+ for col in range(0, (col_count - 1) + 1, 1):
48
+ for row in range(0, (row_count - 1) + 1, 1):
49
+ hash_1 = (((-1640531527 + safe_hash(get_item_from_dict(values, (col, row)))) + (hash_1 << 6)) + (hash_1 >> 2)) or 0
50
+ return hash_1
51
+
52
+
53
+ def _007CIsUniqueExistingHeader_007C__007C(existing_headers: IEnumerable_1[CompositeHeader], input: CompositeHeader) -> int | None:
54
+ if ((((input.tag == 3) or (input.tag == 2)) or (input.tag == 1)) or (input.tag == 0)) or (input.tag == 13):
55
+ return None
56
+
57
+ elif input.tag == 12:
58
+ def _arrow639(h: CompositeHeader, existing_headers: Any=existing_headers, input: Any=input) -> bool:
59
+ return True if (h.tag == 12) else False
60
+
61
+ return try_find_index(_arrow639, existing_headers)
62
+
63
+ elif input.tag == 11:
64
+ def _arrow640(h_1: CompositeHeader, existing_headers: Any=existing_headers, input: Any=input) -> bool:
65
+ return True if (h_1.tag == 11) else False
66
+
67
+ return try_find_index(_arrow640, existing_headers)
68
+
69
+ else:
70
+ def _arrow641(h_2: CompositeHeader, existing_headers: Any=existing_headers, input: Any=input) -> bool:
71
+ return equals(h_2, input)
72
+
73
+ return try_find_index(_arrow641, existing_headers)
74
+
75
+
76
+
77
+ def try_find_duplicate_unique(new_header: CompositeHeader, existing_headers: IEnumerable_1[CompositeHeader]) -> int | None:
78
+ active_pattern_result: int | None = _007CIsUniqueExistingHeader_007C__007C(existing_headers, new_header)
79
+ if active_pattern_result is not None:
80
+ index: int = active_pattern_result or 0
81
+ return index
82
+
83
+ else:
84
+ return None
85
+
86
+
87
+
88
+ def try_find_duplicate_unique_in_array(existing_headers: IEnumerable_1[CompositeHeader]) -> FSharpList[dict[str, Any]]:
89
+ def loop(i_mut: int, duplicate_list_mut: FSharpList[dict[str, Any]], header_list_mut: FSharpList[CompositeHeader], existing_headers: Any=existing_headers) -> FSharpList[dict[str, Any]]:
90
+ while True:
91
+ (i, duplicate_list, header_list) = (i_mut, duplicate_list_mut, header_list_mut)
92
+ (pattern_matching_result, header, tail) = (None, None, None)
93
+ if is_empty(header_list):
94
+ pattern_matching_result = 0
95
+
96
+ elif is_empty(tail_1(header_list)):
97
+ pattern_matching_result = 0
98
+
99
+ else:
100
+ pattern_matching_result = 1
101
+ header = head(header_list)
102
+ tail = tail_1(header_list)
103
+
104
+ if pattern_matching_result == 0:
105
+ return duplicate_list
106
+
107
+ elif pattern_matching_result == 1:
108
+ has_duplicate: int | None = try_find_duplicate_unique(header, tail)
109
+ i_mut = i + 1
110
+ duplicate_list_mut = cons({
111
+ "HeaderType": header,
112
+ "Index1": i,
113
+ "Index2": value_2(has_duplicate)
114
+ }, duplicate_list) if (has_duplicate is not None) else duplicate_list
115
+ header_list_mut = tail
116
+ continue
117
+
118
+ break
119
+
120
+ def predicate(x: CompositeHeader, existing_headers: Any=existing_headers) -> bool:
121
+ return not x.IsTermColumn
122
+
123
+ return loop(0, empty(), of_seq(filter(predicate, existing_headers)))
124
+
125
+
126
+ def SanityChecks_validateColumnIndex(index: int, column_count: int, allow_append: bool) -> None:
127
+ if index < 0:
128
+ raise Exception("Cannot insert CompositeColumn at index < 0.")
129
+
130
+ def _arrow642(__unit: None=None, index: Any=index, column_count: Any=column_count, allow_append: Any=allow_append) -> bool:
131
+ x: int = index or 0
132
+ y: int = column_count or 0
133
+ return (compare(x, y) > 0) if allow_append else (compare(x, y) >= 0)
134
+
135
+ if _arrow642():
136
+ raise Exception(("Specified index is out of table range! Table contains only " + str(column_count)) + " columns.")
137
+
138
+
139
+
140
+ def SanityChecks_validateRowIndex(index: int, row_count: int, allow_append: bool) -> None:
141
+ if index < 0:
142
+ raise Exception("Cannot insert CompositeColumn at index < 0.")
143
+
144
+ def _arrow643(__unit: None=None, index: Any=index, row_count: Any=row_count, allow_append: Any=allow_append) -> bool:
145
+ x: int = index or 0
146
+ y: int = row_count or 0
147
+ return (compare(x, y) > 0) if allow_append else (compare(x, y) >= 0)
148
+
149
+ if _arrow643():
150
+ raise Exception(("Specified index is out of table range! Table contains only " + str(row_count)) + " rows.")
151
+
152
+
153
+
154
+ def SanityChecks_validateColumn(column: CompositeColumn) -> None:
155
+ ignore(column.Validate(True))
156
+
157
+
158
+ def SanityChecks_validate(headers: Array[CompositeHeader], values: Any, raise_exception: bool) -> bool:
159
+ is_valid: bool = True
160
+ en: Any = get_enumerator(values)
161
+ while en.System_Collections_IEnumerator_MoveNext() if is_valid else False:
162
+ matchValue: tuple[int, int]
163
+ copy_of_struct: Any = en.System_Collections_Generic_IEnumerator_1_get_Current()
164
+ match_value = copy_of_struct[0]
165
+ cell: CompositeCell
166
+ copy_of_struct_1: Any = en.System_Collections_Generic_IEnumerator_1_get_Current()
167
+ cell = copy_of_struct_1[1]
168
+ header: CompositeHeader = headers[match_value[0]]
169
+ header_is_data: bool = header.IsDataColumn
170
+ header_is_freetext: bool = (not header.IsDataColumn) if (not header.IsTermColumn) else False
171
+ cell_is_not_freetext: bool = not cell.is_free_text
172
+ if (cell_is_not_freetext if (not cell.is_data) else False) if header_is_data else False:
173
+ def _arrow644(message: str, headers: Any=headers, values: Any=values, raise_exception: Any=raise_exception) -> None:
174
+ raise Exception(message)
175
+
176
+ def _arrow646(__unit: None=None, headers: Any=headers, values: Any=values, raise_exception: Any=raise_exception) -> Callable[[str], None]:
177
+ clo: Callable[[str], None] = to_console(printf("%s"))
178
+ def _arrow645(arg: str) -> None:
179
+ clo(arg)
180
+
181
+ return _arrow645
182
+
183
+ (_arrow644 if raise_exception else _arrow646())(((("Invalid combination of header `" + str(header)) + "` and cell `") + str(cell)) + "`. Data header should contain either Data or Freetext cells.")
184
+ is_valid = False
185
+
186
+ if cell_is_not_freetext if header_is_freetext else False:
187
+ def _arrow647(message_1: str, headers: Any=headers, values: Any=values, raise_exception: Any=raise_exception) -> None:
188
+ raise Exception(message_1)
189
+
190
+ def _arrow649(__unit: None=None, headers: Any=headers, values: Any=values, raise_exception: Any=raise_exception) -> Callable[[str], None]:
191
+ clo_1: Callable[[str], None] = to_console(printf("%s"))
192
+ def _arrow648(arg_1: str) -> None:
193
+ clo_1(arg_1)
194
+
195
+ return _arrow648
196
+
197
+ (_arrow647 if raise_exception else _arrow649())(((("Invalid combination of header `" + str(header)) + "` and cell `") + str(cell)) + "`. Freetext header should not contain non-freetext cells.")
198
+ is_valid = False
199
+
200
+ return is_valid
201
+
202
+
203
+ def Unchecked_tryGetCellAt(column: int, row: int, cells: Any) -> CompositeCell | None:
204
+ return Dictionary_tryFind((column, row), cells)
205
+
206
+
207
+ def Unchecked_setCellAt(column_index: int, row_index: int, c: CompositeCell, cells: Any) -> None:
208
+ cells[column_index, row_index] = c
209
+
210
+
211
+ def Unchecked_addCellAt(column_index: int, row_index: int, c: CompositeCell, cells: Any) -> None:
212
+ add_to_dict(cells, (column_index, row_index), c)
213
+
214
+
215
+ def Unchecked_moveCellTo(from_col: int, from_row: int, to_col: int, to_row: int, cells: Any) -> None:
216
+ match_value: CompositeCell | None = Dictionary_tryFind((from_col, from_row), cells)
217
+ if match_value is None:
218
+ pass
219
+
220
+ else:
221
+ c: CompositeCell = match_value
222
+ ignore(remove_from_dict(cells, (from_col, from_row)))
223
+ value_1: None = Unchecked_setCellAt(to_col, to_row, c, cells)
224
+ ignore(None)
225
+
226
+
227
+
228
+ def Unchecked_removeHeader(index: int, headers: Array[CompositeHeader]) -> None:
229
+ headers.pop(index)
230
+
231
+
232
+ def Unchecked_removeColumnCells(index: int, cells: Any) -> None:
233
+ enumerator: Any = get_enumerator(cells)
234
+ try:
235
+ while enumerator.System_Collections_IEnumerator_MoveNext():
236
+ active_pattern_result: tuple[tuple[int, int], CompositeCell] = enumerator.System_Collections_Generic_IEnumerator_1_get_Current()
237
+ c: int = active_pattern_result[0][0] or 0
238
+ if c == index:
239
+ ignore(remove_from_dict(cells, (c, active_pattern_result[0][1])))
240
+
241
+
242
+ finally:
243
+ dispose(enumerator)
244
+
245
+
246
+
247
+ def Unchecked_removeColumnCells_withIndexChange(index: int, column_count: int, row_count: int, cells: Any) -> None:
248
+ for col in range(index, (column_count - 1) + 1, 1):
249
+ for row in range(0, (row_count - 1) + 1, 1):
250
+ if col == index:
251
+ ignore(remove_from_dict(cells, (col, row)))
252
+
253
+ elif col > index:
254
+ Unchecked_moveCellTo(col, row, col - 1, row, cells)
255
+
256
+
257
+
258
+ def Unchecked_removeRowCells(row_index: int, cells: Any) -> None:
259
+ enumerator: Any = get_enumerator(cells)
260
+ try:
261
+ while enumerator.System_Collections_IEnumerator_MoveNext():
262
+ active_pattern_result: tuple[tuple[int, int], CompositeCell] = enumerator.System_Collections_Generic_IEnumerator_1_get_Current()
263
+ r: int = active_pattern_result[0][1] or 0
264
+ if r == row_index:
265
+ ignore(remove_from_dict(cells, (active_pattern_result[0][0], r)))
266
+
267
+
268
+ finally:
269
+ dispose(enumerator)
270
+
271
+
272
+
273
+ def Unchecked_removeRowCells_withIndexChange(row_index: int, column_count: int, row_count: int, cells: Any) -> None:
274
+ for row in range(row_index, (row_count - 1) + 1, 1):
275
+ for col in range(0, (column_count - 1) + 1, 1):
276
+ if row == row_index:
277
+ ignore(remove_from_dict(cells, (col, row)))
278
+
279
+ elif row > row_index:
280
+ Unchecked_moveCellTo(col, row, col, row - 1, cells)
281
+
282
+
283
+
284
+ def Unchecked_getEmptyCellForHeader(header: CompositeHeader, colum_cell_option: CompositeCell | None=None) -> CompositeCell:
285
+ match_value: bool = header.IsTermColumn
286
+ if match_value:
287
+ (pattern_matching_result,) = (None,)
288
+ if colum_cell_option is None:
289
+ pattern_matching_result = 0
290
+
291
+ elif colum_cell_option.tag == 0:
292
+ pattern_matching_result = 0
293
+
294
+ elif colum_cell_option.tag == 2:
295
+ pattern_matching_result = 1
296
+
297
+ else:
298
+ pattern_matching_result = 2
299
+
300
+ if pattern_matching_result == 0:
301
+ return CompositeCell.empty_term()
302
+
303
+ elif pattern_matching_result == 1:
304
+ return CompositeCell.empty_unitized()
305
+
306
+ elif pattern_matching_result == 2:
307
+ raise Exception("[extendBodyCells] This should never happen, IsTermColumn header must be paired with either term or unitized cell.")
308
+
309
+
310
+ else:
311
+ return CompositeCell.empty_free_text()
312
+
313
+
314
+
315
+ def Unchecked_addColumn(new_header: CompositeHeader, new_cells: Array[CompositeCell], index: int, force_replace: bool, only_headers: bool, headers: Array[CompositeHeader], values: Any) -> None:
316
+ number_of_new_columns: int = 1
317
+ index_1: int = index or 0
318
+ has_duplicate_unique: int | None = try_find_duplicate_unique(new_header, headers)
319
+ if (has_duplicate_unique is not None) if (not force_replace) else False:
320
+ raise Exception(((("Invalid new column `" + str(new_header)) + "`. Table already contains header of the same type on index `") + str(value_2(has_duplicate_unique))) + "`")
321
+
322
+ if has_duplicate_unique is not None:
323
+ number_of_new_columns = 0
324
+ index_1 = value_2(has_duplicate_unique) or 0
325
+
326
+ match_value: int = get_column_count(headers) or 0
327
+ match_value_1: int = get_row_count(values) or 0
328
+ start_col_count: int = match_value or 0
329
+ if has_duplicate_unique is not None:
330
+ Unchecked_removeHeader(index_1, headers)
331
+
332
+ headers.insert(index_1, new_header)
333
+ if (has_duplicate_unique is None) if (index_1 < start_col_count) else False:
334
+ def _arrow650(x: int, y: int, new_header: Any=new_header, new_cells: Any=new_cells, index: Any=index, force_replace: Any=force_replace, only_headers: Any=only_headers, headers: Any=headers, values: Any=values) -> int:
335
+ return compare_primitives(x, y)
336
+
337
+ last_column_index: int = max(_arrow650, start_col_count - 1, 0) or 0
338
+ for column_index in range(last_column_index, index_1 - 1, -1):
339
+ for row_index in range(0, match_value_1 + 1, 1):
340
+ Unchecked_moveCellTo(column_index, row_index, column_index + number_of_new_columns, row_index, values)
341
+
342
+ if not only_headers:
343
+ if has_duplicate_unique is not None:
344
+ Unchecked_removeColumnCells(index_1, values)
345
+
346
+ def _arrow652(tupled_arg: tuple[int, int, CompositeCell], new_header: Any=new_header, new_cells: Any=new_cells, index: Any=index, force_replace: Any=force_replace, only_headers: Any=only_headers, headers: Any=headers, values: Any=values) -> Callable[[Any], None]:
347
+ def _arrow651(values_1: Any) -> None:
348
+ value: None = add_to_dict(values_1, (tupled_arg[0], tupled_arg[1]), tupled_arg[2])
349
+ ignore(None)
350
+
351
+ return _arrow651
352
+
353
+ def _arrow654(tupled_arg_1: tuple[int, int, CompositeCell], new_header: Any=new_header, new_cells: Any=new_cells, index: Any=index, force_replace: Any=force_replace, only_headers: Any=only_headers, headers: Any=headers, values: Any=values) -> Callable[[Any], None]:
354
+ def _arrow653(cells: Any) -> None:
355
+ Unchecked_setCellAt(tupled_arg_1[0], tupled_arg_1[1], tupled_arg_1[2], cells)
356
+
357
+ return _arrow653
358
+
359
+ f: Callable[[tuple[int, int, CompositeCell], Any], None] = _arrow652 if (index_1 >= start_col_count) else _arrow654
360
+ def action(row_index_3: int, cell_1: CompositeCell, new_header: Any=new_header, new_cells: Any=new_cells, index: Any=index, force_replace: Any=force_replace, only_headers: Any=only_headers, headers: Any=headers, values: Any=values) -> None:
361
+ f((index_1, row_index_3, cell_1))(values)
362
+
363
+ iterate_indexed(action, new_cells)
364
+
365
+
366
+
367
+ def Unchecked_fillMissingCells(headers: Array[CompositeHeader], values: Any) -> None:
368
+ row_count: int = get_row_count(values) or 0
369
+ column_count: int = get_column_count(headers) or 0
370
+ def projection(tuple: tuple[int, int], headers: Any=headers, values: Any=values) -> int:
371
+ return tuple[0]
372
+
373
+ class ObjectExpr656:
374
+ @property
375
+ def Equals(self) -> Callable[[int, int], bool]:
376
+ def _arrow655(x: int, y: int) -> bool:
377
+ return x == y
378
+
379
+ return _arrow655
380
+
381
+ @property
382
+ def GetHashCode(self) -> Callable[[int], int]:
383
+ return number_hash
384
+
385
+ class ObjectExpr657:
386
+ @property
387
+ def Compare(self) -> Callable[[int, int], int]:
388
+ return compare_primitives
389
+
390
+ column_key_groups: Any = of_array(Array_groupBy(projection, to_array(values.keys()), ObjectExpr656()), ObjectExpr657())
391
+ for column_index in range(0, (column_count - 1) + 1, 1):
392
+ header: CompositeHeader = headers[column_index]
393
+ match_value: Array[tuple[int, int]] | None = try_find(column_index, column_key_groups)
394
+ if match_value is None:
395
+ default_cell_1: CompositeCell = Unchecked_getEmptyCellForHeader(header, None)
396
+ for row_index_1 in range(0, (row_count - 1) + 1, 1):
397
+ Unchecked_addCellAt(column_index, row_index_1, default_cell_1.Copy(), values)
398
+
399
+ elif len(match_value) == row_count:
400
+ col_1: Array[tuple[int, int]] = match_value
401
+
402
+ else:
403
+ col_2: Array[tuple[int, int]] = match_value
404
+ default_cell: CompositeCell = Unchecked_getEmptyCellForHeader(header, get_item_from_dict(values, head_1(col_2)))
405
+ def _arrow658(tuple_1: tuple[int, int], headers: Any=headers, values: Any=values) -> int:
406
+ return tuple_1[1]
407
+
408
+ class ObjectExpr659:
409
+ @property
410
+ def Compare(self) -> Callable[[int, int], int]:
411
+ return compare_primitives
412
+
413
+ row_keys: Any = of_array_1(map(_arrow658, col_2, Int32Array), ObjectExpr659())
414
+ for row_index in range(0, (row_count - 1) + 1, 1):
415
+ if not FSharpSet__Contains(row_keys, row_index):
416
+ Unchecked_addCellAt(column_index, row_index, default_cell.Copy(), values)
417
+
418
+
419
+
420
+
421
+ def Unchecked_extendToRowCount(row_count: int, headers: Array[CompositeHeader], values: Any) -> None:
422
+ column_count: int = get_column_count(headers) or 0
423
+ previous_row_count: int = get_row_count(values) or 0
424
+ for column_index in range(0, (column_count - 1) + 1, 1):
425
+ last_value: CompositeCell = get_item_from_dict(values, (column_index, previous_row_count - 1))
426
+ for row_index in range(previous_row_count - 1, (row_count - 1) + 1, 1):
427
+ Unchecked_setCellAt(column_index, row_index, last_value, values)
428
+
429
+
430
+ def Unchecked_addRow(index: int, new_cells: Array[CompositeCell], headers: Array[CompositeHeader], values: Any) -> None:
431
+ row_count: int = get_row_count(values) or 0
432
+ column_count: int = get_column_count(headers) or 0
433
+ increase_row_indices: None
434
+ if index < row_count:
435
+ def _arrow660(x: int, y: int, index: Any=index, new_cells: Any=new_cells, headers: Any=headers, values: Any=values) -> int:
436
+ return compare_primitives(x, y)
437
+
438
+ last_row_index: int = max(_arrow660, row_count - 1, 0) or 0
439
+ for row_index in range(last_row_index, index - 1, -1):
440
+ for column_index in range(0, (column_count - 1) + 1, 1):
441
+ Unchecked_moveCellTo(column_index, row_index, column_index, row_index + 1, values)
442
+
443
+ else:
444
+ increase_row_indices = None
445
+
446
+ def action(column_index_1: int, cell: CompositeCell, index: Any=index, new_cells: Any=new_cells, headers: Any=headers, values: Any=values) -> None:
447
+ Unchecked_setCellAt(column_index_1, index, cell, values)
448
+
449
+ set_new_cells: None = iterate_indexed(action, new_cells)
450
+
451
+
452
+ def Unchecked_addRows(index: int, new_rows: Array[Array[CompositeCell]], headers: Array[CompositeHeader], values: Any) -> None:
453
+ row_count: int = get_row_count(values) or 0
454
+ column_count: int = get_column_count(headers) or 0
455
+ num_new_rows: int = len(new_rows) or 0
456
+ increase_row_indices: None
457
+ if index < row_count:
458
+ def _arrow661(x: int, y: int, index: Any=index, new_rows: Any=new_rows, headers: Any=headers, values: Any=values) -> int:
459
+ return compare_primitives(x, y)
460
+
461
+ last_row_index: int = max(_arrow661, row_count - 1, 0) or 0
462
+ for row_index in range(last_row_index, index - 1, -1):
463
+ for column_index in range(0, (column_count - 1) + 1, 1):
464
+ Unchecked_moveCellTo(column_index, row_index, column_index, row_index + num_new_rows, values)
465
+
466
+ else:
467
+ increase_row_indices = None
468
+
469
+ current_row_index: int = index or 0
470
+ for idx in range(0, (len(new_rows) - 1) + 1, 1):
471
+ def action(column_index_1: int, cell: CompositeCell, index: Any=index, new_rows: Any=new_rows, headers: Any=headers, values: Any=values) -> None:
472
+ Unchecked_setCellAt(column_index_1, current_row_index, cell, values)
473
+
474
+ set_new_cells: None = iterate_indexed(action, new_rows[idx])
475
+ current_row_index = (current_row_index + 1) or 0
476
+
477
+
478
+ def Unchecked_compositeHeaderMainColumnEqual(ch1: CompositeHeader, ch2: CompositeHeader) -> bool:
479
+ return to_string(ch1) == to_string(ch2)
480
+
481
+
482
+ def Unchecked_moveColumnTo(row_count: int, from_col: int, to_col: int, headers: Array[CompositeHeader], values: Any) -> None:
483
+ pattern_input: tuple[int, int, int] = ((-1, from_col + 1, to_col)) if (from_col < to_col) else ((1, from_col - 1, to_col))
484
+ shift_start: int = pattern_input[1] or 0
485
+ shift_end: int = pattern_input[2] or 0
486
+ shift: int = pattern_input[0] or 0
487
+ header: CompositeHeader = headers[from_col]
488
+ with get_enumerator(to_list(range_big_int(shift_start, op_unary_negation_int32(shift), shift_end))) as enumerator:
489
+ while enumerator.System_Collections_IEnumerator_MoveNext():
490
+ c: int = enumerator.System_Collections_Generic_IEnumerator_1_get_Current() or 0
491
+ headers[c + shift] = headers[c]
492
+ headers[to_col] = header
493
+ for r in range(0, (row_count - 1) + 1, 1):
494
+ cell: CompositeCell = get_item_from_dict(values, (from_col, r))
495
+ with get_enumerator(to_list(range_big_int(shift_start, op_unary_negation_int32(shift), shift_end))) as enumerator_1:
496
+ while enumerator_1.System_Collections_IEnumerator_MoveNext():
497
+ c_1: int = enumerator_1.System_Collections_Generic_IEnumerator_1_get_Current() or 0
498
+ values[c_1 + shift, r] = get_item_from_dict(values, (c_1, r))
499
+ values[to_col, r] = cell
500
+
501
+
502
+ def Unchecked_alignByHeaders(keep_order: bool, rows: FSharpList[FSharpList[tuple[CompositeHeader, CompositeCell]]]) -> tuple[Array[CompositeHeader], Any]:
503
+ headers: Array[CompositeHeader] = []
504
+ class ObjectExpr662:
505
+ @property
506
+ def Equals(self) -> Callable[[tuple[int, int], tuple[int, int]], bool]:
507
+ return equal_arrays
508
+
509
+ @property
510
+ def GetHashCode(self) -> Callable[[tuple[int, int]], int]:
511
+ return array_hash
512
+
513
+ values: Any = Dictionary([], ObjectExpr662())
514
+ def loop(col_i_mut: int, rows_2_mut: FSharpList[FSharpList[tuple[CompositeHeader, CompositeCell]]], keep_order: Any=keep_order, rows: Any=rows) -> tuple[Array[CompositeHeader], Any]:
515
+ while True:
516
+ (col_i, rows_2) = (col_i_mut, rows_2_mut)
517
+ def _arrow663(arg: FSharpList[tuple[CompositeHeader, CompositeCell]], col_i: Any=col_i, rows_2: Any=rows_2) -> bool:
518
+ return not is_empty(arg)
519
+
520
+ if not exists(_arrow663, rows_2):
521
+ return (headers, values)
522
+
523
+ else:
524
+ def _arrow664(l: FSharpList[tuple[CompositeHeader, CompositeCell]], col_i: Any=col_i, rows_2: Any=rows_2) -> tuple[CompositeHeader, CompositeCell] | None:
525
+ return None if is_empty(l) else head(l)
526
+
527
+ first_elem: CompositeHeader = pick(_arrow664, rows_2)[0]
528
+ (headers.append(first_elem))
529
+ col_i_mut = col_i + 1
530
+ def mapping(row_i: int, l_1: FSharpList[tuple[CompositeHeader, CompositeCell]], col_i: Any=col_i, rows_2: Any=rows_2) -> FSharpList[tuple[CompositeHeader, CompositeCell]]:
531
+ if keep_order:
532
+ if not is_empty(l_1):
533
+ if Unchecked_compositeHeaderMainColumnEqual(head(l_1)[0], first_elem):
534
+ add_to_dict(values, (col_i, row_i), head(l_1)[1])
535
+ return tail_1(l_1)
536
+
537
+ else:
538
+ return l_1
539
+
540
+
541
+ else:
542
+ return empty()
543
+
544
+
545
+ else:
546
+ def f(tupled_arg: tuple[CompositeHeader, CompositeCell], row_i: Any=row_i, l_1: Any=l_1) -> CompositeCell | None:
547
+ if Unchecked_compositeHeaderMainColumnEqual(tupled_arg[0], first_elem):
548
+ return tupled_arg[1]
549
+
550
+ else:
551
+ return None
552
+
553
+
554
+ pattern_input: tuple[CompositeCell | None, FSharpList[tuple[CompositeHeader, CompositeCell]]] = List_tryPickAndRemove(f, l_1)
555
+ new_l: FSharpList[tuple[CompositeHeader, CompositeCell]] = pattern_input[1]
556
+ first_match: CompositeCell | None = pattern_input[0]
557
+ if first_match is None:
558
+ return new_l
559
+
560
+ else:
561
+ add_to_dict(values, (col_i, row_i), first_match)
562
+ return new_l
563
+
564
+
565
+
566
+ rows_2_mut = map_indexed(mapping, rows_2)
567
+ continue
568
+
569
+ break
570
+
571
+ return loop(0, rows)
572
+
573
+
574
+ __all__ = ["get_column_count", "get_row_count", "box_hash_values", "_007CIsUniqueExistingHeader_007C__007C", "try_find_duplicate_unique", "try_find_duplicate_unique_in_array", "SanityChecks_validateColumnIndex", "SanityChecks_validateRowIndex", "SanityChecks_validateColumn", "SanityChecks_validate", "Unchecked_tryGetCellAt", "Unchecked_setCellAt", "Unchecked_addCellAt", "Unchecked_moveCellTo", "Unchecked_removeHeader", "Unchecked_removeColumnCells", "Unchecked_removeColumnCells_withIndexChange", "Unchecked_removeRowCells", "Unchecked_removeRowCells_withIndexChange", "Unchecked_getEmptyCellForHeader", "Unchecked_addColumn", "Unchecked_fillMissingCells", "Unchecked_extendToRowCount", "Unchecked_addRow", "Unchecked_addRows", "Unchecked_compositeHeaderMainColumnEqual", "Unchecked_moveColumnTo", "Unchecked_alignByHeaders"]
575
+