arctrl 3.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- arctrl/__init__.py +23 -0
- arctrl/cwl.py +12 -0
- arctrl/py/CWL/__init__.py +0 -0
- arctrl/py/CWL/cwlprocessing_unit.py +221 -0
- arctrl/py/CWL/cwltypes.py +364 -0
- arctrl/py/CWL/decode.py +3532 -0
- arctrl/py/CWL/encode.py +1905 -0
- arctrl/py/CWL/expression_tool_description.py +192 -0
- arctrl/py/CWL/hash_helpers.py +60 -0
- arctrl/py/CWL/inputs.py +122 -0
- arctrl/py/CWL/operation_description.py +169 -0
- arctrl/py/CWL/outputs.py +171 -0
- arctrl/py/CWL/parameter_reference.py +74 -0
- arctrl/py/CWL/requirements.py +350 -0
- arctrl/py/CWL/tool_description.py +192 -0
- arctrl/py/CWL/workflow_description.py +181 -0
- arctrl/py/CWL/workflow_steps.py +354 -0
- arctrl/py/Contract/__init__.py +0 -0
- arctrl/py/Contract/arc.py +89 -0
- arctrl/py/Contract/arc_assay.py +125 -0
- arctrl/py/Contract/arc_investigation.py +88 -0
- arctrl/py/Contract/arc_run.py +291 -0
- arctrl/py/Contract/arc_study.py +126 -0
- arctrl/py/Contract/arc_workflow.py +213 -0
- arctrl/py/Contract/contract.py +153 -0
- arctrl/py/Contract/datamap.py +396 -0
- arctrl/py/Contract/git.py +116 -0
- arctrl/py/Contract/license.py +58 -0
- arctrl/py/Contract/validation_packages_config.py +107 -0
- arctrl/py/ContractIO/__init__.py +0 -0
- arctrl/py/ContractIO/contract_io.py +350 -0
- arctrl/py/ContractIO/file_system_helper.py +264 -0
- arctrl/py/Conversion/__init__.py +0 -0
- arctrl/py/Conversion/assay.py +151 -0
- arctrl/py/Conversion/basic.py +559 -0
- arctrl/py/Conversion/column_index.py +91 -0
- arctrl/py/Conversion/datamap.py +36 -0
- arctrl/py/Conversion/date_time.py +32 -0
- arctrl/py/Conversion/investigation.py +171 -0
- arctrl/py/Conversion/person.py +148 -0
- arctrl/py/Conversion/process.py +828 -0
- arctrl/py/Conversion/run.py +367 -0
- arctrl/py/Conversion/scholarly_article.py +163 -0
- arctrl/py/Conversion/study.py +99 -0
- arctrl/py/Conversion/table.py +229 -0
- arctrl/py/Conversion/workflow.py +680 -0
- arctrl/py/Core/Helper/__init__.py +0 -0
- arctrl/py/Core/Helper/collections_.py +512 -0
- arctrl/py/Core/Helper/date_time.py +26 -0
- arctrl/py/Core/Helper/hash_codes.py +60 -0
- arctrl/py/Core/Helper/identifier.py +290 -0
- arctrl/py/Core/Helper/orcid.py +42 -0
- arctrl/py/Core/Helper/printer.py +13 -0
- arctrl/py/Core/Helper/regex.py +554 -0
- arctrl/py/Core/Helper/sem_ver.py +71 -0
- arctrl/py/Core/Helper/url.py +148 -0
- arctrl/py/Core/Process/__init__.py +0 -0
- arctrl/py/Core/Process/column_index.py +280 -0
- arctrl/py/Core/Process/component.py +200 -0
- arctrl/py/Core/Process/factor.py +151 -0
- arctrl/py/Core/Process/factor_value.py +182 -0
- arctrl/py/Core/Process/material.py +74 -0
- arctrl/py/Core/Process/material_attribute.py +95 -0
- arctrl/py/Core/Process/material_attribute_value.py +184 -0
- arctrl/py/Core/Process/material_type.py +45 -0
- arctrl/py/Core/Process/process.py +477 -0
- arctrl/py/Core/Process/process_input.py +265 -0
- arctrl/py/Core/Process/process_output.py +235 -0
- arctrl/py/Core/Process/process_parameter_value.py +200 -0
- arctrl/py/Core/Process/process_sequence.py +435 -0
- arctrl/py/Core/Process/protocol.py +175 -0
- arctrl/py/Core/Process/protocol_parameter.py +98 -0
- arctrl/py/Core/Process/sample.py +82 -0
- arctrl/py/Core/Process/source.py +62 -0
- arctrl/py/Core/Table/__init__.py +0 -0
- arctrl/py/Core/Table/arc_table.py +1206 -0
- arctrl/py/Core/Table/arc_table_aux.py +1308 -0
- arctrl/py/Core/Table/arc_tables.py +574 -0
- arctrl/py/Core/Table/composite_cell.py +319 -0
- arctrl/py/Core/Table/composite_column.py +73 -0
- arctrl/py/Core/Table/composite_header.py +739 -0
- arctrl/py/Core/__init__.py +0 -0
- arctrl/py/Core/arc_types.py +5312 -0
- arctrl/py/Core/comment.py +128 -0
- arctrl/py/Core/comment_list.py +127 -0
- arctrl/py/Core/conversion.py +1375 -0
- arctrl/py/Core/data.py +247 -0
- arctrl/py/Core/data_context.py +157 -0
- arctrl/py/Core/data_file.py +112 -0
- arctrl/py/Core/datamap.py +217 -0
- arctrl/py/Core/identifier_setters.py +43 -0
- arctrl/py/Core/iproperty_value.py +36 -0
- arctrl/py/Core/ontology_annotation.py +298 -0
- arctrl/py/Core/ontology_source_reference.py +114 -0
- arctrl/py/Core/person.py +259 -0
- arctrl/py/Core/publication.py +161 -0
- arctrl/py/Core/template.py +231 -0
- arctrl/py/Core/templates.py +148 -0
- arctrl/py/Core/uri.py +11 -0
- arctrl/py/Core/value.py +188 -0
- arctrl/py/FileSystem/__init__.py +0 -0
- arctrl/py/FileSystem/commit.py +21 -0
- arctrl/py/FileSystem/default_gitattributes.py +1 -0
- arctrl/py/FileSystem/default_gitignore.py +1 -0
- arctrl/py/FileSystem/default_license.py +1 -0
- arctrl/py/FileSystem/file_system.py +58 -0
- arctrl/py/FileSystem/file_system_tree.py +483 -0
- arctrl/py/FileSystem/path.py +266 -0
- arctrl/py/Json/Datamap/__init__.py +0 -0
- arctrl/py/Json/Datamap/data_context.py +101 -0
- arctrl/py/Json/Datamap/datamap.py +53 -0
- arctrl/py/Json/Process/__init__.py +0 -0
- arctrl/py/Json/Process/assay_materials.py +46 -0
- arctrl/py/Json/Process/component.py +125 -0
- arctrl/py/Json/Process/factor.py +107 -0
- arctrl/py/Json/Process/factor_value.py +101 -0
- arctrl/py/Json/Process/material.py +226 -0
- arctrl/py/Json/Process/material_attribute.py +79 -0
- arctrl/py/Json/Process/material_attribute_value.py +101 -0
- arctrl/py/Json/Process/material_type.py +53 -0
- arctrl/py/Json/Process/process.py +296 -0
- arctrl/py/Json/Process/process_input.py +83 -0
- arctrl/py/Json/Process/process_output.py +67 -0
- arctrl/py/Json/Process/process_parameter_value.py +81 -0
- arctrl/py/Json/Process/protocol.py +354 -0
- arctrl/py/Json/Process/protocol_parameter.py +91 -0
- arctrl/py/Json/Process/sample.py +277 -0
- arctrl/py/Json/Process/source.py +214 -0
- arctrl/py/Json/Process/study_materials.py +52 -0
- arctrl/py/Json/Process/value.py +56 -0
- arctrl/py/Json/ROCrate/__init__.py +0 -0
- arctrl/py/Json/ROCrate/ldcontext.py +143 -0
- arctrl/py/Json/ROCrate/ldgraph.py +117 -0
- arctrl/py/Json/ROCrate/ldnode.py +304 -0
- arctrl/py/Json/ROCrate/ldref.py +44 -0
- arctrl/py/Json/ROCrate/ldvalue.py +102 -0
- arctrl/py/Json/Table/__init__.py +0 -0
- arctrl/py/Json/Table/arc_table.py +375 -0
- arctrl/py/Json/Table/cell_table.py +83 -0
- arctrl/py/Json/Table/composite_cell.py +136 -0
- arctrl/py/Json/Table/composite_header.py +67 -0
- arctrl/py/Json/Table/iotype.py +24 -0
- arctrl/py/Json/Table/oatable.py +82 -0
- arctrl/py/Json/Table/templates.py +281 -0
- arctrl/py/Json/__init__.py +0 -0
- arctrl/py/Json/assay.py +600 -0
- arctrl/py/Json/comment.py +206 -0
- arctrl/py/Json/context/rocrate/__init__.py +0 -0
- arctrl/py/Json/context/rocrate/isa_assay_context.py +101 -0
- arctrl/py/Json/context/rocrate/isa_comment_context.py +60 -0
- arctrl/py/Json/context/rocrate/isa_component_context.py +77 -0
- arctrl/py/Json/context/rocrate/isa_data_context.py +74 -0
- arctrl/py/Json/context/rocrate/isa_factor_context.py +74 -0
- arctrl/py/Json/context/rocrate/isa_factor_value_context.py +84 -0
- arctrl/py/Json/context/rocrate/isa_investigation_context.py +110 -0
- arctrl/py/Json/context/rocrate/isa_material_attribute_context.py +64 -0
- arctrl/py/Json/context/rocrate/isa_material_attribute_value_context.py +80 -0
- arctrl/py/Json/context/rocrate/isa_material_context.py +71 -0
- arctrl/py/Json/context/rocrate/isa_ontology_annotation_context.py +68 -0
- arctrl/py/Json/context/rocrate/isa_ontology_source_reference_context.py +75 -0
- arctrl/py/Json/context/rocrate/isa_organization_context.py +55 -0
- arctrl/py/Json/context/rocrate/isa_person_context.py +131 -0
- arctrl/py/Json/context/rocrate/isa_process_context.py +94 -0
- arctrl/py/Json/context/rocrate/isa_process_parameter_value_context.py +80 -0
- arctrl/py/Json/context/rocrate/isa_protocol_context.py +97 -0
- arctrl/py/Json/context/rocrate/isa_protocol_parameter_context.py +64 -0
- arctrl/py/Json/context/rocrate/isa_publication_context.py +78 -0
- arctrl/py/Json/context/rocrate/isa_sample_context.py +65 -0
- arctrl/py/Json/context/rocrate/isa_source_context.py +66 -0
- arctrl/py/Json/context/rocrate/isa_study_context.py +125 -0
- arctrl/py/Json/context/rocrate/property_value_context.py +73 -0
- arctrl/py/Json/context/rocrate/rocrate_context.py +81 -0
- arctrl/py/Json/converter_options.py +23 -0
- arctrl/py/Json/data.py +356 -0
- arctrl/py/Json/data_file.py +63 -0
- arctrl/py/Json/decode.py +271 -0
- arctrl/py/Json/encode.py +140 -0
- arctrl/py/Json/idtable.py +44 -0
- arctrl/py/Json/investigation.py +695 -0
- arctrl/py/Json/ontology_annotation.py +404 -0
- arctrl/py/Json/ontology_source_reference.py +255 -0
- arctrl/py/Json/person.py +658 -0
- arctrl/py/Json/property_value.py +359 -0
- arctrl/py/Json/publication.py +279 -0
- arctrl/py/Json/run.py +275 -0
- arctrl/py/Json/string_table.py +87 -0
- arctrl/py/Json/study.py +793 -0
- arctrl/py/Json/workflow.py +307 -0
- arctrl/py/JsonIO/Process/__init__.py +0 -0
- arctrl/py/JsonIO/Process/component.py +60 -0
- arctrl/py/JsonIO/Process/factor.py +36 -0
- arctrl/py/JsonIO/Process/factor_value.py +38 -0
- arctrl/py/JsonIO/Process/material.py +60 -0
- arctrl/py/JsonIO/Process/material_attribute.py +38 -0
- arctrl/py/JsonIO/Process/material_attribute_value.py +60 -0
- arctrl/py/JsonIO/Process/material_type.py +36 -0
- arctrl/py/JsonIO/Process/process.py +60 -0
- arctrl/py/JsonIO/Process/process_input.py +38 -0
- arctrl/py/JsonIO/Process/process_output.py +60 -0
- arctrl/py/JsonIO/Process/process_parameter_value.py +60 -0
- arctrl/py/JsonIO/Process/process_sequence.py +71 -0
- arctrl/py/JsonIO/Process/protocol.py +60 -0
- arctrl/py/JsonIO/Process/protocol_parameter.py +36 -0
- arctrl/py/JsonIO/Process/sample.py +60 -0
- arctrl/py/JsonIO/Process/source.py +60 -0
- arctrl/py/JsonIO/Process/study_materials.py +52 -0
- arctrl/py/JsonIO/Process/value.py +32 -0
- arctrl/py/JsonIO/Table/__init__.py +0 -0
- arctrl/py/JsonIO/Table/arc_table.py +103 -0
- arctrl/py/JsonIO/Table/composite_cell.py +36 -0
- arctrl/py/JsonIO/Table/composite_header.py +36 -0
- arctrl/py/JsonIO/Table/compression.py +67 -0
- arctrl/py/JsonIO/Table/iotype.py +36 -0
- arctrl/py/JsonIO/Table/templates.py +113 -0
- arctrl/py/JsonIO/__init__.py +0 -0
- arctrl/py/JsonIO/assay.py +113 -0
- arctrl/py/JsonIO/comment.py +80 -0
- arctrl/py/JsonIO/data.py +60 -0
- arctrl/py/JsonIO/data_file.py +58 -0
- arctrl/py/JsonIO/datamap.py +36 -0
- arctrl/py/JsonIO/decode.py +9 -0
- arctrl/py/JsonIO/encode.py +1 -0
- arctrl/py/JsonIO/investigation.py +91 -0
- arctrl/py/JsonIO/ldobject.py +106 -0
- arctrl/py/JsonIO/ontology_annotation.py +80 -0
- arctrl/py/JsonIO/ontology_source_reference.py +80 -0
- arctrl/py/JsonIO/person.py +82 -0
- arctrl/py/JsonIO/publication.py +82 -0
- arctrl/py/JsonIO/run.py +68 -0
- arctrl/py/JsonIO/study.py +114 -0
- arctrl/py/JsonIO/workflow.py +68 -0
- arctrl/py/ROCrate/ISAProfile/__init__.py +0 -0
- arctrl/py/ROCrate/ISAProfile/assay.py +70 -0
- arctrl/py/ROCrate/ISAProfile/data.py +65 -0
- arctrl/py/ROCrate/ISAProfile/dataset.py +24 -0
- arctrl/py/ROCrate/ISAProfile/investigation.py +73 -0
- arctrl/py/ROCrate/ISAProfile/lab_process.py +162 -0
- arctrl/py/ROCrate/ISAProfile/lab_protocol.py +37 -0
- arctrl/py/ROCrate/ISAProfile/person.py +72 -0
- arctrl/py/ROCrate/ISAProfile/property_value.py +98 -0
- arctrl/py/ROCrate/ISAProfile/sample.py +64 -0
- arctrl/py/ROCrate/ISAProfile/scholarly_article.py +98 -0
- arctrl/py/ROCrate/ISAProfile/study.py +74 -0
- arctrl/py/ROCrate/LDTypes/__init__.py +0 -0
- arctrl/py/ROCrate/LDTypes/comment.py +131 -0
- arctrl/py/ROCrate/LDTypes/computational_workflow.py +455 -0
- arctrl/py/ROCrate/LDTypes/computer_language.py +269 -0
- arctrl/py/ROCrate/LDTypes/create_action.py +303 -0
- arctrl/py/ROCrate/LDTypes/creative_work.py +566 -0
- arctrl/py/ROCrate/LDTypes/dataset.py +943 -0
- arctrl/py/ROCrate/LDTypes/defined_term.py +131 -0
- arctrl/py/ROCrate/LDTypes/file.py +281 -0
- arctrl/py/ROCrate/LDTypes/formal_parameter.py +431 -0
- arctrl/py/ROCrate/LDTypes/lab_process.py +352 -0
- arctrl/py/ROCrate/LDTypes/lab_protocol.py +395 -0
- arctrl/py/ROCrate/LDTypes/organization.py +83 -0
- arctrl/py/ROCrate/LDTypes/person.py +484 -0
- arctrl/py/ROCrate/LDTypes/postal_address.py +195 -0
- arctrl/py/ROCrate/LDTypes/property_value.py +952 -0
- arctrl/py/ROCrate/LDTypes/sample.py +202 -0
- arctrl/py/ROCrate/LDTypes/scholarly_article.py +229 -0
- arctrl/py/ROCrate/LDTypes/software_source_code.py +310 -0
- arctrl/py/ROCrate/LDTypes/workflow_invocation.py +48 -0
- arctrl/py/ROCrate/LDTypes/workflow_protocol.py +52 -0
- arctrl/py/ROCrate/__init__.py +0 -0
- arctrl/py/ROCrate/arc_rocrate_metadata.py +39 -0
- arctrl/py/ROCrate/dyn_obj_extensions.py +1 -0
- arctrl/py/ROCrate/helper.py +8 -0
- arctrl/py/ROCrate/ldcontext.py +406 -0
- arctrl/py/ROCrate/ldobject.py +1247 -0
- arctrl/py/ROCrate/rocrate_context.py +51 -0
- arctrl/py/Spreadsheet/AnnotationTable/__init__.py +0 -0
- arctrl/py/Spreadsheet/AnnotationTable/arc_table.py +203 -0
- arctrl/py/Spreadsheet/AnnotationTable/composite_cell.py +78 -0
- arctrl/py/Spreadsheet/AnnotationTable/composite_column.py +305 -0
- arctrl/py/Spreadsheet/AnnotationTable/composite_header.py +623 -0
- arctrl/py/Spreadsheet/DatamapTable/__init__.py +0 -0
- arctrl/py/Spreadsheet/DatamapTable/datamap_column.py +114 -0
- arctrl/py/Spreadsheet/DatamapTable/datamap_header.py +621 -0
- arctrl/py/Spreadsheet/DatamapTable/datamap_table.py +118 -0
- arctrl/py/Spreadsheet/Metadata/__init__.py +0 -0
- arctrl/py/Spreadsheet/Metadata/assays.py +125 -0
- arctrl/py/Spreadsheet/Metadata/comment.py +77 -0
- arctrl/py/Spreadsheet/Metadata/contacts.py +134 -0
- arctrl/py/Spreadsheet/Metadata/conversions.py +190 -0
- arctrl/py/Spreadsheet/Metadata/design_descriptors.py +34 -0
- arctrl/py/Spreadsheet/Metadata/factors.py +107 -0
- arctrl/py/Spreadsheet/Metadata/ontology_annotation.py +88 -0
- arctrl/py/Spreadsheet/Metadata/ontology_source_reference.py +96 -0
- arctrl/py/Spreadsheet/Metadata/protocols.py +146 -0
- arctrl/py/Spreadsheet/Metadata/publication.py +122 -0
- arctrl/py/Spreadsheet/Metadata/run.py +122 -0
- arctrl/py/Spreadsheet/Metadata/sparse_table.py +499 -0
- arctrl/py/Spreadsheet/Metadata/study.py +312 -0
- arctrl/py/Spreadsheet/Metadata/workflow.py +159 -0
- arctrl/py/Spreadsheet/__init__.py +0 -0
- arctrl/py/Spreadsheet/arc_assay.py +233 -0
- arctrl/py/Spreadsheet/arc_investigation.py +435 -0
- arctrl/py/Spreadsheet/arc_run.py +190 -0
- arctrl/py/Spreadsheet/arc_study.py +144 -0
- arctrl/py/Spreadsheet/arc_workflow.py +177 -0
- arctrl/py/Spreadsheet/assembly_info.py +1 -0
- arctrl/py/Spreadsheet/collection_aux.py +167 -0
- arctrl/py/Spreadsheet/datamap.py +43 -0
- arctrl/py/Spreadsheet/template.py +460 -0
- arctrl/py/ValidationPackages/__init__.py +0 -0
- arctrl/py/ValidationPackages/validation_package.py +82 -0
- arctrl/py/ValidationPackages/validation_packages_config.py +132 -0
- arctrl/py/WebRequest/__init__.py +0 -0
- arctrl/py/WebRequest/web_request.py +9 -0
- arctrl/py/WebRequest/web_request_py.py +135 -0
- arctrl/py/WorkflowGraph/__init__.py +0 -0
- arctrl/py/WorkflowGraph/adapters.py +141 -0
- arctrl/py/WorkflowGraph/build_options.py +45 -0
- arctrl/py/WorkflowGraph/builder.py +720 -0
- arctrl/py/WorkflowGraph/graph_types.py +260 -0
- arctrl/py/WorkflowGraph/query_helpers.py +76 -0
- arctrl/py/WorkflowGraph/reference_parsing.py +59 -0
- arctrl/py/WorkflowGraph/visualization_siren.py +574 -0
- arctrl/py/WorkflowGraph/workflow_graph.py +119 -0
- arctrl/py/Yaml/__init__.py +0 -0
- arctrl/py/Yaml/decode.py +1 -0
- arctrl/py/Yaml/encode.py +10 -0
- arctrl/py/Yaml/validation_package.py +77 -0
- arctrl/py/Yaml/validation_packages_config.py +86 -0
- arctrl/py/__init__.py +0 -0
- arctrl/py/arc.py +1891 -0
- arctrl/py/column_index.py +280 -0
- arctrl/py/conversion.py +142 -0
- arctrl/py/cross_async.py +76 -0
- arctrl/py/cwlrun_resolver.py +228 -0
- arctrl/py/fable_modules/dynamic_obj/__init__.py +0 -0
- arctrl/py/fable_modules/dynamic_obj/dyn_obj.py +136 -0
- arctrl/py/fable_modules/dynamic_obj/dynamic_obj.py +415 -0
- arctrl/py/fable_modules/dynamic_obj/fable_js.py +1 -0
- arctrl/py/fable_modules/dynamic_obj/fable_py.py +288 -0
- arctrl/py/fable_modules/dynamic_obj/hash_codes.py +82 -0
- arctrl/py/fable_modules/dynamic_obj/property_helper.py +25 -0
- arctrl/py/fable_modules/dynamic_obj/reflection_utils.py +87 -0
- arctrl/py/fable_modules/fable_library/__init__.py +0 -0
- arctrl/py/fable_modules/fable_library/array_.py +1528 -0
- arctrl/py/fable_modules/fable_library/async_.py +377 -0
- arctrl/py/fable_modules/fable_library/async_builder.py +379 -0
- arctrl/py/fable_modules/fable_library/big_int.py +330 -0
- arctrl/py/fable_modules/fable_library/bit_converter.py +131 -0
- arctrl/py/fable_modules/fable_library/boolean.py +26 -0
- arctrl/py/fable_modules/fable_library/char.py +237 -0
- arctrl/py/fable_modules/fable_library/choice.py +212 -0
- arctrl/py/fable_modules/fable_library/date.py +779 -0
- arctrl/py/fable_modules/fable_library/date_offset.py +79 -0
- arctrl/py/fable_modules/fable_library/decimal_.py +190 -0
- arctrl/py/fable_modules/fable_library/diagnostics.py +54 -0
- arctrl/py/fable_modules/fable_library/double.py +87 -0
- arctrl/py/fable_modules/fable_library/encoding.py +41 -0
- arctrl/py/fable_modules/fable_library/event.py +206 -0
- arctrl/py/fable_modules/fable_library/file.py +107 -0
- arctrl/py/fable_modules/fable_library/fsharp_collections.py +52 -0
- arctrl/py/fable_modules/fable_library/fsharp_core.py +123 -0
- arctrl/py/fable_modules/fable_library/global_.py +63 -0
- arctrl/py/fable_modules/fable_library/guid.py +41 -0
- arctrl/py/fable_modules/fable_library/int32.py +73 -0
- arctrl/py/fable_modules/fable_library/list.py +1788 -0
- arctrl/py/fable_modules/fable_library/long.py +240 -0
- arctrl/py/fable_modules/fable_library/mailbox_processor.py +179 -0
- arctrl/py/fable_modules/fable_library/map.py +1854 -0
- arctrl/py/fable_modules/fable_library/map_util.py +148 -0
- arctrl/py/fable_modules/fable_library/mutable_map.py +397 -0
- arctrl/py/fable_modules/fable_library/mutable_set.py +279 -0
- arctrl/py/fable_modules/fable_library/native.py +45 -0
- arctrl/py/fable_modules/fable_library/numeric.py +46 -0
- arctrl/py/fable_modules/fable_library/observable.py +222 -0
- arctrl/py/fable_modules/fable_library/option.py +128 -0
- arctrl/py/fable_modules/fable_library/path.py +62 -0
- arctrl/py/fable_modules/fable_library/range.py +117 -0
- arctrl/py/fable_modules/fable_library/reflection.py +463 -0
- arctrl/py/fable_modules/fable_library/reg_exp.py +137 -0
- arctrl/py/fable_modules/fable_library/resize_array.py +31 -0
- arctrl/py/fable_modules/fable_library/result.py +212 -0
- arctrl/py/fable_modules/fable_library/seq.py +1979 -0
- arctrl/py/fable_modules/fable_library/seq2.py +221 -0
- arctrl/py/fable_modules/fable_library/set.py +2414 -0
- arctrl/py/fable_modules/fable_library/singleton_local_time_zone.py +36 -0
- arctrl/py/fable_modules/fable_library/string_.py +573 -0
- arctrl/py/fable_modules/fable_library/system_collections_generic.py +462 -0
- arctrl/py/fable_modules/fable_library/system_text.py +237 -0
- arctrl/py/fable_modules/fable_library/task.py +116 -0
- arctrl/py/fable_modules/fable_library/task_builder.py +122 -0
- arctrl/py/fable_modules/fable_library/thread.py +5 -0
- arctrl/py/fable_modules/fable_library/time_span.py +283 -0
- arctrl/py/fable_modules/fable_library/timer.py +24 -0
- arctrl/py/fable_modules/fable_library/types.py +401 -0
- arctrl/py/fable_modules/fable_library/uri.py +109 -0
- arctrl/py/fable_modules/fable_library/util.py +2735 -0
- arctrl/py/fable_modules/fable_openpyxl/__init__.py +0 -0
- arctrl/py/fable_modules/fable_openpyxl/openpyxl.py +362 -0
- arctrl/py/fable_modules/fable_python/cognite-sdk/__init__.py +0 -0
- arctrl/py/fable_modules/fable_python/cognite-sdk/cognite_sdk.py +22 -0
- arctrl/py/fable_modules/fable_python/flask/__init__.py +0 -0
- arctrl/py/fable_modules/fable_python/flask/flask.py +34 -0
- arctrl/py/fable_modules/fable_python/jupyter/__init__.py +0 -0
- arctrl/py/fable_modules/fable_python/jupyter/ipy_widgets.py +47 -0
- arctrl/py/fable_modules/fable_python/jupyter/ipython.py +13 -0
- arctrl/py/fable_modules/fable_python/stdlib/__init__.py +0 -0
- arctrl/py/fable_modules/fable_python/stdlib/ast.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/asyncio/__init__.py +0 -0
- arctrl/py/fable_modules/fable_python/stdlib/asyncio/events.py +17 -0
- arctrl/py/fable_modules/fable_python/stdlib/asyncio/futures.py +52 -0
- arctrl/py/fable_modules/fable_python/stdlib/asyncio/tasks.py +38 -0
- arctrl/py/fable_modules/fable_python/stdlib/base64_.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/builtins_.py +38 -0
- arctrl/py/fable_modules/fable_python/stdlib/html.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/json.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/math_.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/os_.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/queue_.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/string_.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/sys_.py +30 -0
- arctrl/py/fable_modules/fable_python/stdlib/time_.py +1 -0
- arctrl/py/fable_modules/fable_python/stdlib/tk_inter.py +1 -0
- arctrl/py/fable_modules/fs_spreadsheet/Cells/__init__.py +0 -0
- arctrl/py/fable_modules/fs_spreadsheet/Cells/fs_cell.py +340 -0
- arctrl/py/fable_modules/fs_spreadsheet/Cells/fs_cells_collection.py +466 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/__init__.py +0 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/cell_builder.py +214 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/column_builder.py +139 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/dsl.py +50 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/expression.py +65 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/operators.py +9 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/row_builder.py +139 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/sheet_builder.py +118 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/table_builder.py +122 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/transform.py +463 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/types.py +314 -0
- arctrl/py/fable_modules/fs_spreadsheet/DSL/workbook_builder.py +106 -0
- arctrl/py/fable_modules/fs_spreadsheet/Json/__init__.py +0 -0
- arctrl/py/fable_modules/fs_spreadsheet/Json/cell.py +103 -0
- arctrl/py/fable_modules/fs_spreadsheet/Json/column.py +70 -0
- arctrl/py/fable_modules/fs_spreadsheet/Json/row.py +70 -0
- arctrl/py/fable_modules/fs_spreadsheet/Json/table.py +54 -0
- arctrl/py/fable_modules/fs_spreadsheet/Json/value.py +93 -0
- arctrl/py/fable_modules/fs_spreadsheet/Json/workbook.py +71 -0
- arctrl/py/fable_modules/fs_spreadsheet/Json/worksheet.py +216 -0
- arctrl/py/fable_modules/fs_spreadsheet/Ranges/__init__.py +0 -0
- arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range.py +43 -0
- arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_address.py +190 -0
- arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_base.py +92 -0
- arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_column.py +77 -0
- arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_row.py +48 -0
- arctrl/py/fable_modules/fs_spreadsheet/Tables/__init__.py +0 -0
- arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table.py +461 -0
- arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table_field.py +117 -0
- arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table_row.py +23 -0
- arctrl/py/fable_modules/fs_spreadsheet/__init__.py +0 -0
- arctrl/py/fable_modules/fs_spreadsheet/fs_address.py +236 -0
- arctrl/py/fable_modules/fs_spreadsheet/fs_column.py +172 -0
- arctrl/py/fable_modules/fs_spreadsheet/fs_row.py +183 -0
- arctrl/py/fable_modules/fs_spreadsheet/fs_workbook.py +192 -0
- arctrl/py/fable_modules/fs_spreadsheet/fs_worksheet.py +610 -0
- arctrl/py/fable_modules/fs_spreadsheet/hash_codes.py +60 -0
- arctrl/py/fable_modules/fs_spreadsheet/sheet_builder.py +329 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/__init__.py +0 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/cell.py +60 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/cell_type.py +50 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/fs_extension.py +60 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/json.py +47 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/table.py +54 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/workbook.py +41 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/worksheet.py +52 -0
- arctrl/py/fable_modules/fs_spreadsheet_py/xlsx.py +37 -0
- arctrl/py/fable_modules/siren/__init__.py +0 -0
- arctrl/py/fable_modules/siren/config.py +1038 -0
- arctrl/py/fable_modules/siren/formatting.py +1121 -0
- arctrl/py/fable_modules/siren/siren.py +1941 -0
- arctrl/py/fable_modules/siren/siren_types.py +1229 -0
- arctrl/py/fable_modules/siren/theme_variables.py +517 -0
- arctrl/py/fable_modules/siren/util.py +37 -0
- arctrl/py/fable_modules/siren/yaml.py +101 -0
- arctrl/py/fable_modules/thoth_json_core/__init__.py +0 -0
- arctrl/py/fable_modules/thoth_json_core/decode.py +1614 -0
- arctrl/py/fable_modules/thoth_json_core/encode.py +305 -0
- arctrl/py/fable_modules/thoth_json_core/types.py +181 -0
- arctrl/py/fable_modules/thoth_json_python/__init__.py +0 -0
- arctrl/py/fable_modules/thoth_json_python/decode.py +112 -0
- arctrl/py/fable_modules/thoth_json_python/encode.py +72 -0
- arctrl/py/fable_modules/thoth_json_python/python.py +1 -0
- arctrl/py/fable_modules/yamlicious/Interop/__init__.py +0 -0
- arctrl/py/fable_modules/yamlicious/Interop/js_interop.py +1 -0
- arctrl/py/fable_modules/yamlicious/Interop/py_interop.py +7 -0
- arctrl/py/fable_modules/yamlicious/__init__.py +0 -0
- arctrl/py/fable_modules/yamlicious/decode.py +1784 -0
- arctrl/py/fable_modules/yamlicious/encode.py +84 -0
- arctrl/py/fable_modules/yamlicious/flow_to_block.py +994 -0
- arctrl/py/fable_modules/yamlicious/library.py +10 -0
- arctrl/py/fable_modules/yamlicious/persil.py +57 -0
- arctrl/py/fable_modules/yamlicious/preprocessing.py +99 -0
- arctrl/py/fable_modules/yamlicious/reader.py +739 -0
- arctrl/py/fable_modules/yamlicious/regex.py +29 -0
- arctrl/py/fable_modules/yamlicious/regex_active_patterns.py +265 -0
- arctrl/py/fable_modules/yamlicious/writer.py +175 -0
- arctrl/py/fable_modules/yamlicious/yamlicious_types.py +128 -0
- arctrl/py/json.py +389 -0
- arctrl/py/license.py +169 -0
- arctrl/py/rocrate_io.py +242 -0
- arctrl/py/template_web.py +23 -0
- arctrl/py/xlsx.py +212 -0
- arctrl/py/yaml.py +79 -0
- arctrl/rocrate.py +21 -0
- arctrl-3.0.0.dist-info/METADATA +157 -0
- arctrl-3.0.0.dist-info/RECORD +511 -0
- arctrl-3.0.0.dist-info/WHEEL +4 -0
- arctrl-3.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import Any
|
|
3
|
+
from ...fable_library.reflection import (TypeInfo, class_type)
|
|
4
|
+
from ...fable_library.string_ import (to_fail, printf)
|
|
5
|
+
from ...fable_library.util import (equals, ignore, IEnumerable_1)
|
|
6
|
+
from ..Cells.fs_cell import FsCell
|
|
7
|
+
from ..Cells.fs_cells_collection import FsCellsCollection
|
|
8
|
+
from ..fs_address import FsAddress
|
|
9
|
+
from .fs_range_address import FsRangeAddress
|
|
10
|
+
|
|
11
|
+
def _expr372() -> TypeInfo:
|
|
12
|
+
return class_type("FsSpreadsheet.FsRangeBase", None, FsRangeBase)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class FsRangeBase:
|
|
16
|
+
def __init__(self, range_address: FsRangeAddress) -> None:
|
|
17
|
+
self._sortRows: Any = None
|
|
18
|
+
self._sortColumns: Any = None
|
|
19
|
+
self._rangeAddress: FsRangeAddress = range_address
|
|
20
|
+
_id: int
|
|
21
|
+
FsRangeBase.IdCounter = (FsRangeBase.IdCounter + 1) or 0
|
|
22
|
+
_id = FsRangeBase.IdCounter
|
|
23
|
+
|
|
24
|
+
def Extend(self, address: FsAddress) -> None:
|
|
25
|
+
this: FsRangeBase = self
|
|
26
|
+
this._rangeAddress.Extend(address)
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def RangeAddress(self, __unit: None=None) -> FsRangeAddress:
|
|
30
|
+
this: FsRangeBase = self
|
|
31
|
+
return this._rangeAddress
|
|
32
|
+
|
|
33
|
+
@RangeAddress.setter
|
|
34
|
+
def RangeAddress(self, range_adress: FsRangeAddress) -> None:
|
|
35
|
+
this: FsRangeBase = self
|
|
36
|
+
if not equals(range_adress, this._rangeAddress):
|
|
37
|
+
old_address: FsRangeAddress = this._rangeAddress
|
|
38
|
+
this._rangeAddress = range_adress
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def Cell(self, cell_address_in_range: FsAddress, cells: FsCellsCollection) -> FsCell:
|
|
42
|
+
this: FsRangeBase = self
|
|
43
|
+
abs_row: int = ((cell_address_in_range.RowNumber + this.RangeAddress.FirstAddress.RowNumber) - 1) or 0
|
|
44
|
+
abs_column: int = ((cell_address_in_range.ColumnNumber + this.RangeAddress.FirstAddress.ColumnNumber) - 1) or 0
|
|
45
|
+
if True if (abs_row <= 0) else (abs_row > 1048576):
|
|
46
|
+
arg: int = cells.MaxRowNumber or 0
|
|
47
|
+
to_fail(printf("Row number must be between 1 and %i"))(arg)
|
|
48
|
+
|
|
49
|
+
if True if (abs_column <= 0) else (abs_column > 16384):
|
|
50
|
+
arg_1: int = cells.MaxColumnNumber or 0
|
|
51
|
+
to_fail(printf("Column number must be between 1 and %i"))(arg_1)
|
|
52
|
+
|
|
53
|
+
cell: FsCell | None = cells.TryGetCell(abs_row, abs_column)
|
|
54
|
+
if cell is None:
|
|
55
|
+
absolute_address: FsAddress = FsAddress(abs_row, abs_column, cell_address_in_range.FixedRow, cell_address_in_range.FixedColumn)
|
|
56
|
+
new_cell: FsCell = FsCell.create_empty_with_adress(absolute_address)
|
|
57
|
+
this.Extend(absolute_address)
|
|
58
|
+
value: None = cells.Add(new_cell, abs_row, abs_column)
|
|
59
|
+
ignore(None)
|
|
60
|
+
return new_cell
|
|
61
|
+
|
|
62
|
+
else:
|
|
63
|
+
return cell
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def Cells(self, cells: FsCellsCollection) -> IEnumerable_1[FsCell]:
|
|
67
|
+
this: FsRangeBase = self
|
|
68
|
+
return cells.GetCellsInStringRange(this.RangeAddress.FirstAddress, this.RangeAddress.LastAddress)
|
|
69
|
+
|
|
70
|
+
def ColumnCount(self, __unit: None=None) -> int:
|
|
71
|
+
this: FsRangeBase = self
|
|
72
|
+
return (this._rangeAddress.LastAddress.ColumnNumber - this._rangeAddress.FirstAddress.ColumnNumber) + 1
|
|
73
|
+
|
|
74
|
+
def RowCount(self, __unit: None=None) -> int:
|
|
75
|
+
this: FsRangeBase = self
|
|
76
|
+
return (this._rangeAddress.LastAddress.RowNumber - this._rangeAddress.FirstAddress.RowNumber) + 1
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
FsRangeBase_reflection = _expr372
|
|
80
|
+
|
|
81
|
+
def FsRangeBase__ctor_6A2513BC(range_address: FsRangeAddress) -> FsRangeBase:
|
|
82
|
+
return FsRangeBase(range_address)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def FsRangeBase__cctor(__unit: None=None) -> None:
|
|
86
|
+
FsRangeBase.IdCounter = 0
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
FsRangeBase__cctor()
|
|
90
|
+
|
|
91
|
+
__all__ = ["FsRangeBase_reflection"]
|
|
92
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import Any
|
|
3
|
+
from ...fable_library.list import FSharpList
|
|
4
|
+
from ...fable_library.range import range_big_int
|
|
5
|
+
from ...fable_library.reflection import (TypeInfo, class_type)
|
|
6
|
+
from ...fable_library.seq import (to_list, map)
|
|
7
|
+
from ...fable_library.util import IEnumerable_1
|
|
8
|
+
from ..Cells.fs_cell import FsCell
|
|
9
|
+
from ..Cells.fs_cells_collection import FsCellsCollection
|
|
10
|
+
from ..fs_address import FsAddress
|
|
11
|
+
from .fs_range_address import FsRangeAddress
|
|
12
|
+
from .fs_range_base import (FsRangeBase, FsRangeBase_reflection)
|
|
13
|
+
|
|
14
|
+
def _expr391() -> TypeInfo:
|
|
15
|
+
return class_type("FsSpreadsheet.FsRangeColumn", None, FsRangeColumn, FsRangeBase_reflection())
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class FsRangeColumn(FsRangeBase):
|
|
19
|
+
def __init__(self, range_address: FsRangeAddress) -> None:
|
|
20
|
+
super().__init__(range_address)
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
@staticmethod
|
|
24
|
+
def from_index(index: int) -> FsRangeColumn:
|
|
25
|
+
return FsRangeColumn(FsRangeAddress(FsAddress(0, index), FsAddress(0, index)))
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def Index(self, __unit: None=None) -> int:
|
|
29
|
+
self_1: FsRangeColumn = self
|
|
30
|
+
return self_1.RangeAddress.FirstAddress.ColumnNumber
|
|
31
|
+
|
|
32
|
+
@Index.setter
|
|
33
|
+
def Index(self, i: int) -> None:
|
|
34
|
+
self_1: FsRangeColumn = self
|
|
35
|
+
self_1.RangeAddress.FirstAddress.ColumnNumber = i or 0
|
|
36
|
+
self_1.RangeAddress.LastAddress.ColumnNumber = i or 0
|
|
37
|
+
|
|
38
|
+
def Cell(self, row_index: int, cells_collection: FsCellsCollection) -> FsCell:
|
|
39
|
+
return super().Cell(FsAddress((row_index - super().RangeAddress.FirstAddress.RowNumber) + 1, 1), cells_collection)
|
|
40
|
+
|
|
41
|
+
def FirstCell(self, cells: FsCellsCollection) -> FsCell:
|
|
42
|
+
return super().Cell(FsAddress(1, 1), cells)
|
|
43
|
+
|
|
44
|
+
def Cells(self, cells_collection: FsCellsCollection) -> IEnumerable_1[FsCell]:
|
|
45
|
+
return super().Cells(cells_collection)
|
|
46
|
+
|
|
47
|
+
@staticmethod
|
|
48
|
+
def from_range_address(range_address: FsRangeAddress) -> FsRangeColumn:
|
|
49
|
+
return FsRangeColumn(range_address)
|
|
50
|
+
|
|
51
|
+
def Copy(self, __unit: None=None) -> FsRangeColumn:
|
|
52
|
+
self_1: FsRangeColumn = self
|
|
53
|
+
return FsRangeColumn(self_1.RangeAddress.Copy())
|
|
54
|
+
|
|
55
|
+
@staticmethod
|
|
56
|
+
def copy(range_column: FsRangeColumn) -> FsRangeColumn:
|
|
57
|
+
return range_column.Copy()
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
FsRangeColumn_reflection = _expr391
|
|
61
|
+
|
|
62
|
+
def FsRangeColumn__ctor_6A2513BC(range_address: FsRangeAddress) -> FsRangeColumn:
|
|
63
|
+
return FsRangeColumn(range_address)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def FsSpreadsheet_FsRangeAddress__FsRangeAddress_toRangeColumns_Static_6A2513BC(range_address: FsRangeAddress) -> IEnumerable_1[FsRangeColumn]:
|
|
67
|
+
columns: FSharpList[int] = to_list(range_big_int(range_address.FirstAddress.ColumnNumber, 1, range_address.LastAddress.ColumnNumber))
|
|
68
|
+
fst_row: int = range_address.FirstAddress.RowNumber or 0
|
|
69
|
+
lst_row: int = range_address.LastAddress.RowNumber or 0
|
|
70
|
+
def mapping(c: int, range_address: Any=range_address) -> FsRangeColumn:
|
|
71
|
+
return FsRangeColumn(FsRangeAddress(FsAddress(fst_row, c), FsAddress(lst_row, c)))
|
|
72
|
+
|
|
73
|
+
return map(mapping, columns)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
__all__ = ["FsRangeColumn_reflection", "FsSpreadsheet_FsRangeAddress__FsRangeAddress_toRangeColumns_Static_6A2513BC"]
|
|
77
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from ...fable_library.reflection import (TypeInfo, class_type)
|
|
3
|
+
from ...fable_library.util import IEnumerable_1
|
|
4
|
+
from ..Cells.fs_cell import FsCell
|
|
5
|
+
from ..Cells.fs_cells_collection import FsCellsCollection
|
|
6
|
+
from ..fs_address import FsAddress
|
|
7
|
+
from .fs_range_address import FsRangeAddress
|
|
8
|
+
from .fs_range_base import (FsRangeBase, FsRangeBase_reflection)
|
|
9
|
+
|
|
10
|
+
def _expr373() -> TypeInfo:
|
|
11
|
+
return class_type("FsSpreadsheet.FsRangeRow", None, FsRangeRow, FsRangeBase_reflection())
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class FsRangeRow(FsRangeBase):
|
|
15
|
+
def __init__(self, range_address: FsRangeAddress) -> None:
|
|
16
|
+
super().__init__(range_address)
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
@staticmethod
|
|
20
|
+
def from_index(index: int) -> FsRangeRow:
|
|
21
|
+
return FsRangeRow(FsRangeAddress(FsAddress(index, 0), FsAddress(index, 0)))
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def Index(self, __unit: None=None) -> int:
|
|
25
|
+
self_1: FsRangeRow = self
|
|
26
|
+
return self_1.RangeAddress.FirstAddress.RowNumber
|
|
27
|
+
|
|
28
|
+
@Index.setter
|
|
29
|
+
def Index(self, i: int) -> None:
|
|
30
|
+
self_1: FsRangeRow = self
|
|
31
|
+
self_1.RangeAddress.FirstAddress.RowNumber = i or 0
|
|
32
|
+
self_1.RangeAddress.LastAddress.RowNumber = i or 0
|
|
33
|
+
|
|
34
|
+
def Cell(self, column_index: int, cells: FsCellsCollection) -> FsCell:
|
|
35
|
+
return super().Cell(FsAddress(1, (column_index - super().RangeAddress.FirstAddress.ColumnNumber) + 1), cells)
|
|
36
|
+
|
|
37
|
+
def Cells(self, cells: FsCellsCollection) -> IEnumerable_1[FsCell]:
|
|
38
|
+
return super().Cells(cells)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
FsRangeRow_reflection = _expr373
|
|
42
|
+
|
|
43
|
+
def FsRangeRow__ctor_6A2513BC(range_address: FsRangeAddress) -> FsRangeRow:
|
|
44
|
+
return FsRangeRow(range_address)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
__all__ = ["FsRangeRow_reflection"]
|
|
48
|
+
|
|
File without changes
|
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from typing import Any
|
|
4
|
+
from ...fable_library.map_util import (add_to_set, add_to_dict, get_item_from_dict, remove_from_dict)
|
|
5
|
+
from ...fable_library.option import (some, value as value_2, default_arg)
|
|
6
|
+
from ...fable_library.range import range_big_int
|
|
7
|
+
from ...fable_library.reflection import (TypeInfo, class_type)
|
|
8
|
+
from ...fable_library.seq import (initialize, delay, collect, singleton, reduce, map, iterate_indexed, iterate, length, max, find, try_find, try_pick, choose, to_list, exists)
|
|
9
|
+
from ...fable_library.string_ import (to_text, printf, replace)
|
|
10
|
+
from ...fable_library.util import (equals, IEnumerable_1, int32_to_string, ignore, compare_primitives, get_enumerator)
|
|
11
|
+
from ..Cells.fs_cell import (FsCell, DataType)
|
|
12
|
+
from ..Cells.fs_cells_collection import (FsCellsCollection, Dictionary_tryGet)
|
|
13
|
+
from ..fs_address import FsAddress
|
|
14
|
+
from ..fs_column import FsColumn
|
|
15
|
+
from ..fs_row import FsRow
|
|
16
|
+
from ..Ranges.fs_range import FsRange
|
|
17
|
+
from ..Ranges.fs_range_address import FsRangeAddress
|
|
18
|
+
from ..Ranges.fs_range_base import (FsRangeBase, FsRangeBase_reflection)
|
|
19
|
+
from ..Ranges.fs_range_column import FsRangeColumn
|
|
20
|
+
from ..Ranges.fs_range_row import FsRangeRow
|
|
21
|
+
from .fs_table_field import FsTableField
|
|
22
|
+
|
|
23
|
+
def _expr425() -> TypeInfo:
|
|
24
|
+
return class_type("FsSpreadsheet.FsTable", None, FsTable, FsRangeBase_reflection())
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class FsTable(FsRangeBase):
|
|
28
|
+
def __init__(self, name: str, range_address: FsRangeAddress, show_totals_row: bool | None=None, show_header_row: bool | None=None, field_names: IEnumerable_1[str] | None=None) -> None:
|
|
29
|
+
super().__init__(range_address)
|
|
30
|
+
self._name: str = replace(name.strip(), " ", "_")
|
|
31
|
+
self._lastRangeAddress: FsRangeAddress = range_address
|
|
32
|
+
self._showTotalsRow: bool = default_arg(show_totals_row, False)
|
|
33
|
+
self._showHeaderRow: bool = default_arg(show_header_row, True)
|
|
34
|
+
def _arrow424(__unit: None=None) -> Any:
|
|
35
|
+
fns: IEnumerable_1[str] = field_names
|
|
36
|
+
if length(fns) != super().ColumnCount():
|
|
37
|
+
def _arrow423(__unit: None=None) -> str:
|
|
38
|
+
arg: int = length(fns) or 0
|
|
39
|
+
arg_1: int = super().ColumnCount() or 0
|
|
40
|
+
return to_text(printf("The number of field names (%i) must match the number of columns (%i) in the range."))(arg)(arg_1)
|
|
41
|
+
|
|
42
|
+
raise Exception(_arrow423(), "fieldNames")
|
|
43
|
+
|
|
44
|
+
dict_1: Any = dict([])
|
|
45
|
+
def action(i: int, fn: str) -> None:
|
|
46
|
+
col_i: int = (range_address.FirstAddress.ColumnNumber + i) or 0
|
|
47
|
+
add_to_dict(dict_1, fn, FsTableField(fn, i, FsRangeColumn(FsRangeAddress(FsAddress(range_address.FirstAddress.RowNumber, col_i), FsAddress(range_address.LastAddress.RowNumber, col_i)))))
|
|
48
|
+
|
|
49
|
+
iterate_indexed(action, fns)
|
|
50
|
+
return dict_1
|
|
51
|
+
|
|
52
|
+
self._fieldNames: Any = dict([]) if (field_names is None) else _arrow424()
|
|
53
|
+
self._uniqueNames: Any = set([])
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def Name(self, __unit: None=None) -> str:
|
|
57
|
+
this: FsTable = self
|
|
58
|
+
return this._name
|
|
59
|
+
|
|
60
|
+
def GetFieldNames(self, cells_collection: FsCellsCollection) -> Any:
|
|
61
|
+
this: FsTable = self
|
|
62
|
+
if equals(this._lastRangeAddress, this.RangeAddress) if ((not equals(this._lastRangeAddress, None)) if (not equals(this._fieldNames, None)) else False) else False:
|
|
63
|
+
return this._fieldNames
|
|
64
|
+
|
|
65
|
+
else:
|
|
66
|
+
this._lastRangeAddress = this.RangeAddress
|
|
67
|
+
return this._fieldNames
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def GetFields(self, cells_collection: FsCellsCollection) -> IEnumerable_1[FsTableField]:
|
|
71
|
+
this: FsTable = self
|
|
72
|
+
def _arrow411(i: int) -> FsTableField:
|
|
73
|
+
return this.GetFieldAt(i, cells_collection)
|
|
74
|
+
|
|
75
|
+
return initialize(super().ColumnCount(), _arrow411)
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def ShowHeaderRow(self, __unit: None=None) -> bool:
|
|
79
|
+
this: FsTable = self
|
|
80
|
+
return this._showHeaderRow
|
|
81
|
+
|
|
82
|
+
@ShowHeaderRow.setter
|
|
83
|
+
def ShowHeaderRow(self, show_header_row: bool) -> None:
|
|
84
|
+
this: FsTable = self
|
|
85
|
+
this._showHeaderRow = show_header_row
|
|
86
|
+
|
|
87
|
+
def HeadersRow(self, __unit: None=None) -> FsRangeRow:
|
|
88
|
+
this: FsTable = self
|
|
89
|
+
return None if (not this.ShowHeaderRow) else FsRange(super().RangeAddress).FirstRow()
|
|
90
|
+
|
|
91
|
+
def TryGetHeaderRow(self, cells_collection: FsCellsCollection) -> FsRow | None:
|
|
92
|
+
this: FsTable = self
|
|
93
|
+
match_value: bool = this.ShowHeaderRow
|
|
94
|
+
if match_value:
|
|
95
|
+
row_index: int = this.RangeAddress.FirstAddress.RowNumber or 0
|
|
96
|
+
return FsRow(FsRangeAddress(FsAddress(row_index, this.RangeAddress.FirstAddress.ColumnNumber), FsAddress(row_index, this.RangeAddress.LastAddress.ColumnNumber)), cells_collection)
|
|
97
|
+
|
|
98
|
+
else:
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def GetHeaderRow(self, cells_collection: FsCellsCollection) -> FsRow:
|
|
103
|
+
this: FsTable = self
|
|
104
|
+
match_value: FsRow | None = this.TryGetHeaderRow(cells_collection)
|
|
105
|
+
if match_value is None:
|
|
106
|
+
raise Exception(("Error. Unable to get header row for table \"" + this.Name) + "\" as `ShowHeaderRow` is set to `false`.")
|
|
107
|
+
|
|
108
|
+
else:
|
|
109
|
+
return match_value
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def GetColumns(self, cells_collection: FsCellsCollection) -> IEnumerable_1[FsColumn]:
|
|
113
|
+
this: FsTable = self
|
|
114
|
+
def _arrow413(__unit: None=None) -> IEnumerable_1[FsColumn]:
|
|
115
|
+
def _arrow412(i: int) -> IEnumerable_1[FsColumn]:
|
|
116
|
+
return singleton(FsColumn(FsRangeAddress(FsAddress(this.RangeAddress.FirstAddress.RowNumber, i), FsAddress(this.RangeAddress.LastAddress.RowNumber, i)), cells_collection))
|
|
117
|
+
|
|
118
|
+
return collect(_arrow412, range_big_int(this.RangeAddress.FirstAddress.ColumnNumber, 1, this.RangeAddress.LastAddress.ColumnNumber))
|
|
119
|
+
|
|
120
|
+
return delay(_arrow413)
|
|
121
|
+
|
|
122
|
+
def GetRows(self, cells_collection: FsCellsCollection) -> IEnumerable_1[FsRow]:
|
|
123
|
+
this: FsTable = self
|
|
124
|
+
def _arrow415(__unit: None=None) -> IEnumerable_1[FsRow]:
|
|
125
|
+
def _arrow414(i: int) -> IEnumerable_1[FsRow]:
|
|
126
|
+
return singleton(FsRow(FsRangeAddress(FsAddress(i, this.RangeAddress.FirstAddress.ColumnNumber), FsAddress(i, this.RangeAddress.LastAddress.ColumnNumber)), cells_collection))
|
|
127
|
+
|
|
128
|
+
return collect(_arrow414, range_big_int(this.RangeAddress.FirstAddress.RowNumber, 1, this.RangeAddress.LastAddress.RowNumber))
|
|
129
|
+
|
|
130
|
+
return delay(_arrow415)
|
|
131
|
+
|
|
132
|
+
def GetBodyRows(self, cells_collection: FsCellsCollection) -> IEnumerable_1[FsRow]:
|
|
133
|
+
this: FsTable = self
|
|
134
|
+
first_row_index: int = ((this.RangeAddress.FirstAddress.RowNumber + 1) if this.ShowHeaderRow else this.RangeAddress.FirstAddress.RowNumber) or 0
|
|
135
|
+
def _arrow417(__unit: None=None) -> IEnumerable_1[FsRow]:
|
|
136
|
+
def _arrow416(i: int) -> IEnumerable_1[FsRow]:
|
|
137
|
+
return singleton(FsRow(FsRangeAddress(FsAddress(i, this.RangeAddress.FirstAddress.ColumnNumber), FsAddress(i, this.RangeAddress.LastAddress.ColumnNumber)), cells_collection))
|
|
138
|
+
|
|
139
|
+
return collect(_arrow416, range_big_int(first_row_index, 1, this.RangeAddress.LastAddress.RowNumber))
|
|
140
|
+
|
|
141
|
+
return delay(_arrow417)
|
|
142
|
+
|
|
143
|
+
def GetRowAt(self, index: int, cells_collection: FsCellsCollection) -> FsRow:
|
|
144
|
+
this: FsTable = self
|
|
145
|
+
if True if (index <= 0) else (index > super().RowCount()):
|
|
146
|
+
def _arrow418(__unit: None=None) -> str:
|
|
147
|
+
arg: int = super().RowCount() or 0
|
|
148
|
+
return to_text(printf("Row index must be between 1 and %i"))(arg)
|
|
149
|
+
|
|
150
|
+
raise Exception(int32_to_string(index), _arrow418())
|
|
151
|
+
|
|
152
|
+
row_i: int = ((this.RangeAddress.FirstAddress.RowNumber + index) - 1) or 0
|
|
153
|
+
return FsRow(FsRangeAddress(FsAddress(row_i, this.RangeAddress.FirstAddress.ColumnNumber), FsAddress(row_i, this.RangeAddress.LastAddress.ColumnNumber)), cells_collection)
|
|
154
|
+
|
|
155
|
+
def GetBodyRowAt(self, index: int, cells_collection: FsCellsCollection) -> FsRow:
|
|
156
|
+
this: FsTable = self
|
|
157
|
+
return this.GetRowAt(index + 1, cells_collection) if this.ShowHeaderRow else this.GetRowAt(index, cells_collection)
|
|
158
|
+
|
|
159
|
+
def RescanRange(self, __unit: None=None) -> None:
|
|
160
|
+
this: FsTable = self
|
|
161
|
+
def reduction(r1: FsRangeAddress, r2: FsRangeAddress) -> FsRangeAddress:
|
|
162
|
+
return r1.Union(r2)
|
|
163
|
+
|
|
164
|
+
def mapping(v: FsTableField) -> FsRangeAddress:
|
|
165
|
+
return v.Column.RangeAddress
|
|
166
|
+
|
|
167
|
+
range_address: FsRangeAddress = reduce(reduction, map(mapping, this._fieldNames.values()))
|
|
168
|
+
this.RangeAddress = range_address
|
|
169
|
+
|
|
170
|
+
@staticmethod
|
|
171
|
+
def rescan_range(table: FsTable) -> FsTable:
|
|
172
|
+
table.RescanRange()
|
|
173
|
+
return table
|
|
174
|
+
|
|
175
|
+
def GetUniqueName(self, original_name: str, initial_offset: int, enforce_offset: bool) -> str:
|
|
176
|
+
this: FsTable = self
|
|
177
|
+
name: str = original_name + (int32_to_string(initial_offset) if enforce_offset else "")
|
|
178
|
+
if name in this._uniqueNames:
|
|
179
|
+
i: int = initial_offset or 0
|
|
180
|
+
name = original_name + int32_to_string(i)
|
|
181
|
+
while name in this._uniqueNames:
|
|
182
|
+
i = (i + 1) or 0
|
|
183
|
+
name = original_name + int32_to_string(i)
|
|
184
|
+
|
|
185
|
+
ignore(add_to_set(name, this._uniqueNames))
|
|
186
|
+
return name
|
|
187
|
+
|
|
188
|
+
@staticmethod
|
|
189
|
+
def get_unique_names(original_name: str, initial_offset: int, enforce_offset: bool, table: FsTable) -> str:
|
|
190
|
+
return table.GetUniqueName(original_name, initial_offset, enforce_offset)
|
|
191
|
+
|
|
192
|
+
def InitFields(self, field_names: IEnumerable_1[str]) -> None:
|
|
193
|
+
this: FsTable = self
|
|
194
|
+
def action(i: int, fn: str) -> None:
|
|
195
|
+
table_field: FsTableField = FsTableField(fn, i, FsRangeColumn.from_index(i))
|
|
196
|
+
add_to_dict(this._fieldNames, fn, table_field)
|
|
197
|
+
|
|
198
|
+
iterate_indexed(action, field_names)
|
|
199
|
+
|
|
200
|
+
@staticmethod
|
|
201
|
+
def init_fields(field_names: IEnumerable_1[str], table: FsTable) -> FsTable:
|
|
202
|
+
table.InitFields(field_names)
|
|
203
|
+
return table
|
|
204
|
+
|
|
205
|
+
def AddFields(self, table_fields: IEnumerable_1[FsTableField]) -> None:
|
|
206
|
+
this: FsTable = self
|
|
207
|
+
def action(tf: FsTableField) -> None:
|
|
208
|
+
add_to_dict(this._fieldNames, tf.Name, tf)
|
|
209
|
+
|
|
210
|
+
iterate(action, table_fields)
|
|
211
|
+
|
|
212
|
+
@staticmethod
|
|
213
|
+
def add_fields(table_fields: IEnumerable_1[FsTableField], table: FsTable) -> FsTable:
|
|
214
|
+
table.AddFields(table_fields)
|
|
215
|
+
return table
|
|
216
|
+
|
|
217
|
+
def Field(self, name: str, cells_collection: FsCellsCollection) -> FsTableField:
|
|
218
|
+
this: FsTable = self
|
|
219
|
+
match_value: FsTableField | None = Dictionary_tryGet(name, this._fieldNames)
|
|
220
|
+
if match_value is None:
|
|
221
|
+
def _arrow420(__unit: None=None) -> int:
|
|
222
|
+
def mapping(v: FsTableField) -> int:
|
|
223
|
+
return v.Index
|
|
224
|
+
|
|
225
|
+
s: IEnumerable_1[int] = map(mapping, this._fieldNames.values())
|
|
226
|
+
class ObjectExpr419:
|
|
227
|
+
@property
|
|
228
|
+
def Compare(self) -> Callable[[int, int], int]:
|
|
229
|
+
return compare_primitives
|
|
230
|
+
|
|
231
|
+
return 0 if (length(s) == 0) else max(s, ObjectExpr419())
|
|
232
|
+
|
|
233
|
+
def _arrow421(__unit: None=None) -> FsRangeAddress:
|
|
234
|
+
offset: int = len(this._fieldNames) or 0
|
|
235
|
+
return FsRangeAddress(FsAddress(this.RangeAddress.FirstAddress.RowNumber, this.RangeAddress.FirstAddress.ColumnNumber + offset), FsAddress(this.RangeAddress.LastAddress.RowNumber, this.RangeAddress.FirstAddress.ColumnNumber + offset))
|
|
236
|
+
|
|
237
|
+
new_field: FsTableField = FsTableField(name, _arrow420() + 1, FsRangeColumn(_arrow421()), some(None), some(None))
|
|
238
|
+
if this.ShowHeaderRow:
|
|
239
|
+
value: None = new_field.HeaderCell(cells_collection, True).SetValueAs(name)
|
|
240
|
+
ignore(None)
|
|
241
|
+
|
|
242
|
+
add_to_dict(this._fieldNames, name, new_field)
|
|
243
|
+
this.RescanRange()
|
|
244
|
+
return new_field
|
|
245
|
+
|
|
246
|
+
else:
|
|
247
|
+
return match_value
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
def GetField(self, name: str, cells_collection: FsCellsCollection) -> FsTableField:
|
|
251
|
+
this: FsTable = self
|
|
252
|
+
name_1: str = replace(name, "\r\n", "\n")
|
|
253
|
+
try:
|
|
254
|
+
return get_item_from_dict(this.GetFieldNames(cells_collection), name_1)
|
|
255
|
+
|
|
256
|
+
except Exception as match_value:
|
|
257
|
+
raise Exception(("The header row doesn\'t contain field name \'" + name_1) + "\'.")
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
@staticmethod
|
|
261
|
+
def get_field(name: str, cells_collection: FsCellsCollection, table: FsTable) -> FsTableField:
|
|
262
|
+
return table.GetField(name, cells_collection)
|
|
263
|
+
|
|
264
|
+
def GetFieldAt(self, index: int, cells_collection: FsCellsCollection) -> FsTableField:
|
|
265
|
+
this: FsTable = self
|
|
266
|
+
try:
|
|
267
|
+
def predicate(ftf: FsTableField) -> bool:
|
|
268
|
+
return ftf.Index == index
|
|
269
|
+
|
|
270
|
+
return find(predicate, this.GetFieldNames(cells_collection).values())
|
|
271
|
+
|
|
272
|
+
except Exception as match_value:
|
|
273
|
+
raise Exception(("FsTableField with index " + str(index)) + " does not exist in the FsTable.")
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def GetFieldIndex(self, name: str, cells_collection: FsCellsCollection) -> int:
|
|
277
|
+
this: FsTable = self
|
|
278
|
+
return this.GetField(name, cells_collection).Index
|
|
279
|
+
|
|
280
|
+
def RenameField(self, old_name: str, new_name: str) -> None:
|
|
281
|
+
this: FsTable = self
|
|
282
|
+
match_value: FsTableField | None = Dictionary_tryGet(old_name, this._fieldNames)
|
|
283
|
+
if match_value is None:
|
|
284
|
+
raise Exception("The FsTabelField does not exist in this FsTable", "oldName")
|
|
285
|
+
|
|
286
|
+
else:
|
|
287
|
+
field: FsTableField = match_value
|
|
288
|
+
ignore(remove_from_dict(this._fieldNames, old_name))
|
|
289
|
+
add_to_dict(this._fieldNames, new_name, field)
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
@staticmethod
|
|
293
|
+
def rename_field(old_name: str, new_name: str, table: FsTable) -> FsTable:
|
|
294
|
+
table.RenameField(old_name, new_name)
|
|
295
|
+
return table
|
|
296
|
+
|
|
297
|
+
def TryGetHeaderCellOfColumnAt(self, cells_collection: FsCellsCollection, col_index: int) -> FsCell | None:
|
|
298
|
+
this: FsTable = self
|
|
299
|
+
fst_row_index: int = this.RangeAddress.FirstAddress.RowNumber or 0
|
|
300
|
+
def predicate(c: FsCell) -> bool:
|
|
301
|
+
return c.RowNumber == fst_row_index
|
|
302
|
+
|
|
303
|
+
return try_find(predicate, cells_collection.GetCellsInColumn(col_index))
|
|
304
|
+
|
|
305
|
+
@staticmethod
|
|
306
|
+
def try_get_header_cell_of_column_index_at(cells_collection: FsCellsCollection, col_index: int, table: FsTable) -> FsCell | None:
|
|
307
|
+
return table.TryGetHeaderCellOfColumnAt(cells_collection, col_index)
|
|
308
|
+
|
|
309
|
+
def TryGetHeaderCellOfColumn(self, cells_collection: FsCellsCollection, column: FsRangeColumn) -> FsCell | None:
|
|
310
|
+
this: FsTable = self
|
|
311
|
+
return this.TryGetHeaderCellOfColumnAt(cells_collection, column.Index)
|
|
312
|
+
|
|
313
|
+
@staticmethod
|
|
314
|
+
def try_get_header_cell_of_column(cells_collection: FsCellsCollection, column: FsRangeColumn, table: FsTable) -> FsCell | None:
|
|
315
|
+
return table.TryGetHeaderCellOfColumn(cells_collection, column)
|
|
316
|
+
|
|
317
|
+
def GetHeaderCellOfColumnAt(self, cells_collection: FsCellsCollection, col_index: int) -> FsCell:
|
|
318
|
+
this: FsTable = self
|
|
319
|
+
return value_2(this.TryGetHeaderCellOfColumnAt(cells_collection, col_index))
|
|
320
|
+
|
|
321
|
+
@staticmethod
|
|
322
|
+
def get_header_cell_of_column_index_at(cells_collection: FsCellsCollection, col_index: int, table: FsTable) -> FsCell:
|
|
323
|
+
return table.GetHeaderCellOfColumnAt(cells_collection, col_index)
|
|
324
|
+
|
|
325
|
+
def GetHeaderCellOfColumn(self, cells_collection: FsCellsCollection, column: FsRangeColumn) -> FsCell:
|
|
326
|
+
this: FsTable = self
|
|
327
|
+
return value_2(this.TryGetHeaderCellOfColumn(cells_collection, column))
|
|
328
|
+
|
|
329
|
+
@staticmethod
|
|
330
|
+
def get_header_cell_of_column(cells_collection: FsCellsCollection, column: FsRangeColumn, table: FsTable) -> FsCell:
|
|
331
|
+
return table.GetHeaderCellOfColumn(cells_collection, column)
|
|
332
|
+
|
|
333
|
+
def GetHeaderCellOfTableField(self, cells_collection: FsCellsCollection, table_field: FsTableField) -> FsCell:
|
|
334
|
+
this: FsTable = self
|
|
335
|
+
return table_field.HeaderCell(cells_collection, this.ShowHeaderRow)
|
|
336
|
+
|
|
337
|
+
@staticmethod
|
|
338
|
+
def get_header_cell_of_table_field(cells_collection: FsCellsCollection, table_field: FsTableField, table: FsTable) -> FsCell:
|
|
339
|
+
return table.GetHeaderCellOfTableField(cells_collection, table_field)
|
|
340
|
+
|
|
341
|
+
def TryGetHeaderCellOfTableFieldAt(self, cells_collection: FsCellsCollection, table_field_index: int) -> FsCell | None:
|
|
342
|
+
this: FsTable = self
|
|
343
|
+
def chooser(tf: FsTableField) -> FsCell | None:
|
|
344
|
+
if tf.Index == table_field_index:
|
|
345
|
+
return tf.HeaderCell(cells_collection, this.ShowHeaderRow)
|
|
346
|
+
|
|
347
|
+
else:
|
|
348
|
+
return None
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
return try_pick(chooser, this._fieldNames.values())
|
|
352
|
+
|
|
353
|
+
@staticmethod
|
|
354
|
+
def try_get_header_cell_of_table_field_index_at(cells_collection: FsCellsCollection, table_field_index: int, table: FsTable) -> FsCell | None:
|
|
355
|
+
return table.TryGetHeaderCellOfTableFieldAt(cells_collection, table_field_index)
|
|
356
|
+
|
|
357
|
+
def GetHeaderCellOfTableFieldAt(self, cells_collection: FsCellsCollection, table_field_index: int) -> FsCell:
|
|
358
|
+
this: FsTable = self
|
|
359
|
+
return value_2(this.TryGetHeaderCellOfTableFieldAt(cells_collection, table_field_index))
|
|
360
|
+
|
|
361
|
+
@staticmethod
|
|
362
|
+
def get_header_cell_of_table_field_index_at(cells_collection: FsCellsCollection, table_field_index: int, table: FsTable) -> FsCell:
|
|
363
|
+
return table.GetHeaderCellOfTableFieldAt(cells_collection, table_field_index)
|
|
364
|
+
|
|
365
|
+
def TryGetHeaderCellByFieldName(self, cells_collection: FsCellsCollection, field_name: str) -> FsCell | None:
|
|
366
|
+
this: FsTable = self
|
|
367
|
+
match_value: FsTableField | None = Dictionary_tryGet(field_name, this._fieldNames)
|
|
368
|
+
if match_value is None:
|
|
369
|
+
return None
|
|
370
|
+
|
|
371
|
+
else:
|
|
372
|
+
tf: FsTableField = match_value
|
|
373
|
+
return tf.HeaderCell(cells_collection, this.ShowHeaderRow)
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
@staticmethod
|
|
377
|
+
def try_get_header_cell_by_field_name(cells_collection: FsCellsCollection, field_name: str, table: FsTable) -> FsCell | None:
|
|
378
|
+
return table.TryGetHeaderCellByFieldName(cells_collection, field_name)
|
|
379
|
+
|
|
380
|
+
def GetDataCellsOfColumnAt(self, cells_collection: FsCellsCollection, col_index: int) -> IEnumerable_1[FsCell]:
|
|
381
|
+
this: FsTable = self
|
|
382
|
+
def chooser(ri: int) -> FsCell | None:
|
|
383
|
+
return cells_collection.TryGetCell(ri, col_index)
|
|
384
|
+
|
|
385
|
+
return choose(chooser, to_list(range_big_int(this.RangeAddress.FirstAddress.RowNumber + 1, 1, this.RangeAddress.LastAddress.RowNumber)))
|
|
386
|
+
|
|
387
|
+
@staticmethod
|
|
388
|
+
def get_data_cells_of_column_index_at(cells_collection: FsCellsCollection, col_index: int, table: FsTable) -> IEnumerable_1[FsCell]:
|
|
389
|
+
return table.GetDataCellsOfColumnAt(cells_collection, col_index)
|
|
390
|
+
|
|
391
|
+
def Copy(self, __unit: None=None) -> FsTable:
|
|
392
|
+
this: FsTable = self
|
|
393
|
+
ra: FsRangeAddress = this.RangeAddress.Copy()
|
|
394
|
+
return FsTable(this.Name, ra, False, this.ShowHeaderRow)
|
|
395
|
+
|
|
396
|
+
@staticmethod
|
|
397
|
+
def copy(table: FsTable) -> FsTable:
|
|
398
|
+
return table.Copy()
|
|
399
|
+
|
|
400
|
+
@staticmethod
|
|
401
|
+
def validate_for_write(table: FsTable, cells_collection: FsCellsCollection) -> None:
|
|
402
|
+
if length(table.GetBodyRows(cells_collection)) == 0:
|
|
403
|
+
def _arrow422(__unit: None=None) -> str:
|
|
404
|
+
arg: str = table.Name
|
|
405
|
+
return to_text(printf("The table \'%s\' must contain at least one body row."))(arg)
|
|
406
|
+
|
|
407
|
+
raise Exception(_arrow422(), "table")
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
def RescanFieldNames(self, cells_collection: FsCellsCollection) -> None:
|
|
411
|
+
this: FsTable = self
|
|
412
|
+
if this.ShowHeaderRow:
|
|
413
|
+
old_field_names: Any = this._fieldNames
|
|
414
|
+
this._fieldNames = dict([])
|
|
415
|
+
cell_pos: int = 0
|
|
416
|
+
with get_enumerator(this.GetHeaderRow(cells_collection)) as enumerator:
|
|
417
|
+
while enumerator.System_Collections_IEnumerator_MoveNext():
|
|
418
|
+
cell: FsCell = enumerator.System_Collections_Generic_IEnumerator_1_get_Current()
|
|
419
|
+
name: str = cell.ValueAsString()
|
|
420
|
+
match_value: FsTableField | None = Dictionary_tryGet(name, old_field_names)
|
|
421
|
+
if match_value is None:
|
|
422
|
+
if (name is None) != (name == ""):
|
|
423
|
+
name = this.GetUniqueName("Column", cell_pos + 1, True)
|
|
424
|
+
value: None = cell.SetValueAs(name)
|
|
425
|
+
ignore(None)
|
|
426
|
+
cell.DataType = DataType(0)
|
|
427
|
+
|
|
428
|
+
if name in this._fieldNames:
|
|
429
|
+
raise Exception(("The header row contains more than one field name \'" + name) + "\'.")
|
|
430
|
+
|
|
431
|
+
add_to_dict(this._fieldNames, name, FsTableField(name, cell_pos))
|
|
432
|
+
cell_pos = (cell_pos + 1) or 0
|
|
433
|
+
|
|
434
|
+
else:
|
|
435
|
+
table_field: FsTableField = match_value
|
|
436
|
+
table_field.Index = cell_pos or 0
|
|
437
|
+
add_to_dict(this._fieldNames, name, table_field)
|
|
438
|
+
cell_pos = (cell_pos + 1) or 0
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
else:
|
|
442
|
+
col_count: int = super().ColumnCount() or 0
|
|
443
|
+
for i in range(1, col_count + 1, 1):
|
|
444
|
+
def predicate(v: FsTableField) -> bool:
|
|
445
|
+
return v.Index == (i - 1)
|
|
446
|
+
|
|
447
|
+
if not exists(predicate, this._fieldNames.values()):
|
|
448
|
+
name_1: str = "Column" + int32_to_string(i)
|
|
449
|
+
add_to_dict(this._fieldNames, name_1, FsTableField(name_1, i - 1))
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
FsTable_reflection = _expr425
|
|
455
|
+
|
|
456
|
+
def FsTable__ctor_3B894C50(name: str, range_address: FsRangeAddress, show_totals_row: bool | None=None, show_header_row: bool | None=None, field_names: IEnumerable_1[str] | None=None) -> FsTable:
|
|
457
|
+
return FsTable(name, range_address, show_totals_row, show_header_row, field_names)
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
__all__ = ["FsTable_reflection"]
|
|
461
|
+
|