canopy 8.86__tar.gz → 9.0.dev1__tar.gz
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.
- {canopy-8.86 → canopy-9.0.dev1}/PKG-INFO +4 -2
- {canopy-8.86 → canopy-9.0.dev1}/canopy/__init__.py +1 -1
- canopy-9.0.dev1/canopy/load_channels.py +135 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/load_study_job.py +9 -14
- {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/PKG-INFO +4 -2
- {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/SOURCES.txt +1 -1
- {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/requires.txt +1 -0
- {canopy-8.86 → canopy-9.0.dev1}/pyproject.toml +3 -2
- canopy-8.86/canopy/load_channel.py +0 -67
- {canopy-8.86 → canopy-9.0.dev1}/LICENSE.txt +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/README.md +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/authentication.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/authentication_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/config_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/constants.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/create_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/create_list_filter.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/create_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/defined_kwargs.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/delete_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/delete_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/dict_to_object.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/dict_to_object_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/dynamic_dict_to_object.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_dict.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_sim_type_string.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_sim_type_string_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_study_type_string.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_study_type_string_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/find_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/find_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/get_default_config_path.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/get_study_document.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/get_study_type_definition_for_sim_version.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/get_study_type_definition_for_sim_version_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/job_count_to_simulation_count.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/load_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/load_default_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/load_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/load_study_job_scalar_results.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/load_study_scalar_results.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/load_vector_metadata.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/loaded_channel.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/local_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/not_found_error.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/__init__.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/__init__.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/account_settings_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/availability_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/config_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/deployments_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/encryption_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/end_to_end_test_inbox_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/list_filter_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/membership_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/multi_factor_authentication_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/pool_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/sim_version_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/study_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/support_session_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/tenancy_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/tenant_settings_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/token_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/user_settings_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/worksheet_api.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api_client.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/configuration.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/exceptions.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/__init__.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/account_settings_put_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/additional_tests.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/admin_tenant_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/admin_tenant_settings_pool_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/allocation_state.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/auto_scale_run.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/auto_scale_run_error.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/availability_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/availability_result_additional_tests.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/batch_create_configs_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/blob_access_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/canopy_document.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/canopy_document_support_session.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/channel_import_mapping.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/channel_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/chart_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_label_definitions.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_label_definitions_worksheet.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_worksheet_labels.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_worksheet_labels_label_definitions.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/compute_node_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/compute_node_state.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/condition_operator.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_column_label_definitions.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_decrypt_with_metadata_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_encrypt_with_metadata_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_hash.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_owner_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_permission_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_post_config_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_post_configs_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_put_config_owner_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_put_config_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_reference.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_reference_default.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_reference_tenant.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_resolved_labels.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_resolved_labels_reference.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_resolved_reference.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_resolved_reference_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_type_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_type_metadata.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_type_state.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_upgrade_config_deprecated_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/create_deployment_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/data_to_decrypt.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/data_to_encrypt.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/data_to_re_encrypt.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/default_config_id.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/default_config_reference.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/default_custom_property_names.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployment_note_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployment_note_response.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_create_deployment_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_post_deployment_note_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_update_deployment_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_update_invoice_bot_deployment_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_update_subscription_level_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_custom_property_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_custom_property_group.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_group_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_name_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_type_custom_property_groups.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_user_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/documents_and_continuation_token.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/duplicate_configs_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/duplicate_configs_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/email_confirmation_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_config_permission.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_key_permission.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_put_config_permission_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_put_key_permission_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_query_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_query_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_re_encrypt_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/file_download_metadata.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/generate_mfa_setup_code_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_account_features_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_account_settings_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_admin_tenant_settings_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_admin_tenant_settings_query_result_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_all_support_sessions_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_all_support_sessions_query_result_user_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_all_tenants_study_statistics_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_names_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_permissions_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_query_result_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_query_result_user_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_sub_paths_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_versions_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_versions_query_result_user_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_configs_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_configs_query_result_query_results.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_decrypted_data_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result_deployment.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result_deployment_dto.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result_note_item.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result_tenant_item.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployments_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployments_query_result_deployment_item.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_encrypted_data_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_invoice_bot_deployments_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_key_permissions_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_pool_status_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_pools_item.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_pools_item_interval.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_pools_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_re_encrypted_data_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_sim_version_document_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_sim_version_document_query_result_document.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_sim_version_documents_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_sim_version_downloads_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_studies_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_studies_query_result_query_results.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_download_url_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_count_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_metadata_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_metadata_query_result_access_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_metadata_query_result_study_job.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_query_result_access_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_query_result_study_job.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_jobs_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_jobs_query_result_query_results.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_query_result_access_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_query_result_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_query_result_user_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_types_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_subscription_level_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_subscription_levels_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_subscription_levels_query_result_subscription_level_item.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_support_session_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_support_session_query_result_session.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_access_information_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_billable_stored_simulation_count_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_channel_import_mappings_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_channel_whitelists_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_channel_whitelists_query_result_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_default_custom_property_names_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_default_custom_property_names_query_result_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_settings_sim_version_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_study_statistics_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_users_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_users_query_result_user_item.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_worksheet_label_definitions_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenants_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenants_query_result_tenant_item.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_user_roles_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_user_settings_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_user_settings_query_result_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_wiki_document_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_wiki_document_query_result_document.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_worksheet_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_worksheet_query_result_user_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_worksheet_query_result_worksheet.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_zendesk_token_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/grant_type_handler_response.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/group_operator.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/i_previous_definition_sim_type_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/i_previous_definition_sim_type_definition_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/i_previous_definition_study_type_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/i_previous_definition_study_type_definition_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/identified_user_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/invoice_bot_deployment_item.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/key_permission_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/label_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/label_definitions.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/list_filter.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/list_filter_condition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/list_filter_group.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/list_filter_query.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_email_confirmation_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_identified_user_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_password_reset_confirmation_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_password_reset_request_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_registration_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_put_user_role_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/multi_factor_authentication_post_multi_factor_authentication_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/name_value_pair.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_batch_config_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_config_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_sim_version_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_study_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_study_data_source.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_tenant_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_worksheet_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_worksheet_data_outline.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/order_by_property.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/password_reset_confirmation_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/password_reset_request_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/pool_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/pool_state.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/pool_type.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/post_study_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/query_encrypted_data_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/query_encrypted_data_tenant_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/registration_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/resolved_label.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/resolved_label_numeric_statistics.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/resolved_statistic_label.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_definition_input_telemetry_channels.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_channel.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_channel_evaluation_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_channels.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_evaluated_channel.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_evaluated_channel_suffix.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_state.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_version_document_name_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_version_post_sim_version_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/simulation_column_label_definitions.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/simulation_input.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/simulation_resolved_labels.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_blob_access_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_document.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_document_study_document_data_source.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_documents_and_continuation_token.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_input_hash.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_input_hashes.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_job_documents_and_continuation_token.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_post_study_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_put_study_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_reference.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_labels.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_labels_reference.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_reference.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_reference_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_reference_data_study_document.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_state.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_type_definition.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_type_state.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_session.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_session_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_session_put_support_session_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_session_response.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_sessions_request_metadata.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenancy_post_tenant_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenancy_put_tenant_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_channel_whitelists.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_config_reference.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_default_custom_property_names.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_id_study_id.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_admin_tenant_settings_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_channel_import_mappings_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_channel_whitelists_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_default_custom_property_names_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_settings_sim_version_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_worksheet_label_definitions_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_statistics.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/test_auto_scale_formula_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/test_auto_scale_formula_query_result_auto_scale_run.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/text_document.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/text_document_optional_content.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/update_deployment_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/update_invoice_bot_deployment_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/update_subscription_level_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_account_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_admin_tenant_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_admin_tenant_settings_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_channel_import_mappings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_config_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_mfa_enabled.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_study_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_tenant_channel_whitelists.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_tenant_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_tenant_default_custom_property_names.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_tenant_settings_sim_version.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_user_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_user_settings_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_worksheet_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_worksheet_data_outline.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_worksheet_label_definitions.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_worksheet_label_definitions_label_definitions.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/upgrade_config_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/upgrade_config_query_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/user_information.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/user_role_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/user_settings.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/user_settings_put_user_settings_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/versioned_document_metadata.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_outline.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_post_duplicate_configs_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_post_worksheet_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_put_worksheet_request.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_resolved_labels.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_resolved_references.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_row.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_row_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/rest.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi_asyncio/__init__.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi_asyncio/api_client.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi_asyncio/rest.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/process_data_frame.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/process_data_frame_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/prompt_for_authentication.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/properties_dict_to_list.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/proxy_configuration.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/proxy_configuration_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/request_with_retry.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/request_with_retry_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/run.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/serializable_value.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/session.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/sim_version_to_number.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/sim_version_to_number_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/study_job_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/study_result.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/study_scalar_results.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/study_types_cache.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/tenant_sim_version_cache.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/tenant_users.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/tenant_users_cache.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/tenant_users_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/try_load_csv_from_url.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/units.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/units_test.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/update_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/user_settings_cache.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy/wait_for_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/dependency_links.txt +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/top_level.txt +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/integration_tests/__init__.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/integration_tests/conftest.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/integration_tests/environment.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/integration_tests/environment_data.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/integration_tests/environment_loader.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/integration_tests/test_config.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/integration_tests/test_study.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/integration_tests/test_synchronous.py +0 -0
- {canopy-8.86 → canopy-9.0.dev1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: canopy
|
|
3
|
-
Version:
|
|
3
|
+
Version: 9.0.dev1
|
|
4
4
|
Summary: Python Client for the Canopy Simulation API
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Repository, https://github.com/canopysimulations/canopy-python/
|
|
@@ -19,6 +19,8 @@ Requires-Dist: urllib3>=1.23
|
|
|
19
19
|
Requires-Dist: pandas>=0.25.1
|
|
20
20
|
Requires-Dist: aiohttp
|
|
21
21
|
Requires-Dist: munch
|
|
22
|
+
Requires-Dist: polars
|
|
23
|
+
Dynamic: license-file
|
|
22
24
|
|
|
23
25
|
# Installation
|
|
24
26
|
|
|
@@ -42,7 +42,7 @@ from canopy.load_config import load_config
|
|
|
42
42
|
from canopy.update_config import update_config
|
|
43
43
|
from canopy.load_study import load_study
|
|
44
44
|
from canopy.load_study_job import load_study_job
|
|
45
|
-
from canopy.
|
|
45
|
+
from canopy.load_channels import load_channels
|
|
46
46
|
from canopy.load_vector_metadata import load_vector_metadata
|
|
47
47
|
from canopy.get_study_document import get_study_document
|
|
48
48
|
from canopy.job_count_to_simulation_count import job_count_to_simulation_count
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import polars as pl
|
|
2
|
+
from typing import List, Optional
|
|
3
|
+
import numpy as np
|
|
4
|
+
import pandas as pd
|
|
5
|
+
import canopy
|
|
6
|
+
import logging
|
|
7
|
+
import asyncio
|
|
8
|
+
|
|
9
|
+
logger = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
async def load_channels(
|
|
13
|
+
session: canopy.Session,
|
|
14
|
+
job_access_information: canopy.openapi.BlobAccessInformation,
|
|
15
|
+
sim_type: str,
|
|
16
|
+
channel_names: List[str],
|
|
17
|
+
vector_metadata: Optional[pd.DataFrame] = None,
|
|
18
|
+
semaphore: Optional[asyncio.Semaphore] = None) -> List[Optional[canopy.LoadedChannel]]:
|
|
19
|
+
sim_type = canopy.ensure_sim_type_string(sim_type)
|
|
20
|
+
|
|
21
|
+
if semaphore is None:
|
|
22
|
+
semaphore = asyncio.Semaphore(session.default_blob_storage_concurrency)
|
|
23
|
+
|
|
24
|
+
if vector_metadata is None:
|
|
25
|
+
vector_metadata = await canopy.load_vector_metadata(session, job_access_information, sim_type)
|
|
26
|
+
|
|
27
|
+
if vector_metadata is None:
|
|
28
|
+
return [None] * len(channel_names)
|
|
29
|
+
|
|
30
|
+
# First attempt to load from parquet if available
|
|
31
|
+
# We group channels by their x-domain to load from the correct parquet files.
|
|
32
|
+
parquet_results = {}
|
|
33
|
+
|
|
34
|
+
channels_by_x_domain = {}
|
|
35
|
+
for name in channel_names:
|
|
36
|
+
if name in vector_metadata.index:
|
|
37
|
+
x_domain = vector_metadata.at[name, 'xDomainName']
|
|
38
|
+
if pd.isna(x_domain) or not x_domain:
|
|
39
|
+
continue
|
|
40
|
+
|
|
41
|
+
if x_domain not in channels_by_x_domain:
|
|
42
|
+
channels_by_x_domain[x_domain] = []
|
|
43
|
+
channels_by_x_domain[x_domain].append(name)
|
|
44
|
+
|
|
45
|
+
# Try loading from parquet for each x-domain
|
|
46
|
+
for x_domain, domain_channels in channels_by_x_domain.items():
|
|
47
|
+
loaded_from_parquet = await _try_load_channels_from_parquet(
|
|
48
|
+
job_access_information,
|
|
49
|
+
sim_type,
|
|
50
|
+
x_domain,
|
|
51
|
+
domain_channels,
|
|
52
|
+
vector_metadata)
|
|
53
|
+
|
|
54
|
+
if loaded_from_parquet:
|
|
55
|
+
for channel in loaded_from_parquet:
|
|
56
|
+
if channel is not None:
|
|
57
|
+
parquet_results[channel.name] = channel
|
|
58
|
+
|
|
59
|
+
async def _load_channel(channel_name: str) -> Optional[canopy.LoadedChannel]:
|
|
60
|
+
if channel_name in parquet_results:
|
|
61
|
+
return parquet_results[channel_name]
|
|
62
|
+
|
|
63
|
+
async with semaphore:
|
|
64
|
+
if channel_name not in vector_metadata.index:
|
|
65
|
+
logger.debug('Channel not found: %s', channel_name)
|
|
66
|
+
return None
|
|
67
|
+
|
|
68
|
+
channel_metadata = vector_metadata.xs(channel_name)
|
|
69
|
+
|
|
70
|
+
points_count: int = channel_metadata['NPtsInChannel']
|
|
71
|
+
units: str = channel_metadata['units']
|
|
72
|
+
|
|
73
|
+
file_name = ''.join([sim_type, '_', channel_name, '.bin'])
|
|
74
|
+
channel_url = ''.join([job_access_information.url, file_name, job_access_information.access_signature])
|
|
75
|
+
|
|
76
|
+
channel_bytes: Optional[bytes] = await session.try_load_bytes(
|
|
77
|
+
channel_url,
|
|
78
|
+
f'"{file_name}" from "{job_access_information.url}"')
|
|
79
|
+
|
|
80
|
+
if channel_bytes is None:
|
|
81
|
+
return None
|
|
82
|
+
|
|
83
|
+
if points_count * 4 == len(channel_bytes):
|
|
84
|
+
data_type = np.float32
|
|
85
|
+
else:
|
|
86
|
+
data_type = np.float64
|
|
87
|
+
channel_data: np.array = np.frombuffer(channel_bytes, data_type)
|
|
88
|
+
|
|
89
|
+
loaded_channel = canopy.LoadedChannel(channel_name, units, channel_data)
|
|
90
|
+
return loaded_channel
|
|
91
|
+
|
|
92
|
+
tasks = [asyncio.ensure_future(_load_channel(name)) for name in channel_names]
|
|
93
|
+
return await asyncio.gather(*tasks)
|
|
94
|
+
|
|
95
|
+
async def _try_load_channels_from_parquet(
|
|
96
|
+
job_access_information: canopy.openapi.BlobAccessInformation,
|
|
97
|
+
sim_type: str,
|
|
98
|
+
x_domain: str,
|
|
99
|
+
channel_names: List[str],
|
|
100
|
+
vector_metadata: pd.DataFrame) -> Optional[List[Optional[canopy.LoadedChannel]]]:
|
|
101
|
+
file_name = f'{sim_type}_{x_domain}_VectorResults.parquet'
|
|
102
|
+
url = f'{job_access_information.url}{file_name}{job_access_information.access_signature}'
|
|
103
|
+
|
|
104
|
+
try:
|
|
105
|
+
# We'll use a single scan for all requested channels that exist in metadata.
|
|
106
|
+
valid_channels = [name for name in channel_names if name in vector_metadata.index]
|
|
107
|
+
if not valid_channels:
|
|
108
|
+
return None
|
|
109
|
+
|
|
110
|
+
lf = pl.scan_parquet(url, storage_options={ "max_retries": 1, "retry_timeout": 100 })
|
|
111
|
+
|
|
112
|
+
# Check which columns actually exist in the parquet
|
|
113
|
+
schema = await asyncio.to_thread(lf.collect_schema)
|
|
114
|
+
available_columns = schema.names()
|
|
115
|
+
requested_available = [name for name in valid_channels if name in available_columns]
|
|
116
|
+
|
|
117
|
+
if not requested_available:
|
|
118
|
+
return None
|
|
119
|
+
|
|
120
|
+
# Fetch all required columns in one go
|
|
121
|
+
df: pl.DataFrame = await lf.select(requested_available).collect_async()
|
|
122
|
+
|
|
123
|
+
results: List[Optional[canopy.LoadedChannel]] = []
|
|
124
|
+
for name in channel_names:
|
|
125
|
+
if name in requested_available:
|
|
126
|
+
data: np.ndarray = df.get_column(name).to_numpy()
|
|
127
|
+
units: str = str(vector_metadata.at[name, 'units'])
|
|
128
|
+
results.append(canopy.LoadedChannel(name, units, data))
|
|
129
|
+
else:
|
|
130
|
+
results.append(None)
|
|
131
|
+
|
|
132
|
+
return results
|
|
133
|
+
except Exception as e:
|
|
134
|
+
logger.debug(f"Failed to load channels from parquet {file_name}: {e}")
|
|
135
|
+
return None
|
|
@@ -84,20 +84,15 @@ async def load_study_job(
|
|
|
84
84
|
|
|
85
85
|
if vector_metadata is not None and channel_names is not None:
|
|
86
86
|
channels_semaphore = asyncio.Semaphore(session.default_blob_storage_concurrency)
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
tasks.append(loaded_channel_task)
|
|
98
|
-
|
|
99
|
-
for channel_name, task in zip(channel_names, tasks):
|
|
100
|
-
loaded_channel = await task
|
|
87
|
+
loaded_channels = await canopy.load_channels(
|
|
88
|
+
session,
|
|
89
|
+
job_access_information,
|
|
90
|
+
sim_type,
|
|
91
|
+
channel_names,
|
|
92
|
+
vector_metadata=vector_metadata,
|
|
93
|
+
semaphore=channels_semaphore)
|
|
94
|
+
|
|
95
|
+
for channel_name, loaded_channel in zip(channel_names, loaded_channels):
|
|
101
96
|
if loaded_channel is not None:
|
|
102
97
|
# Convert to a series, which allows the DataFrame to pad with NaNs if
|
|
103
98
|
# channels happen to be different lengths.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: canopy
|
|
3
|
-
Version:
|
|
3
|
+
Version: 9.0.dev1
|
|
4
4
|
Summary: Python Client for the Canopy Simulation API
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Repository, https://github.com/canopysimulations/canopy-python/
|
|
@@ -19,6 +19,8 @@ Requires-Dist: urllib3>=1.23
|
|
|
19
19
|
Requires-Dist: pandas>=0.25.1
|
|
20
20
|
Requires-Dist: aiohttp
|
|
21
21
|
Requires-Dist: munch
|
|
22
|
+
Requires-Dist: polars
|
|
23
|
+
Dynamic: license-file
|
|
22
24
|
|
|
23
25
|
# Installation
|
|
24
26
|
|
|
@@ -28,7 +28,7 @@ canopy/get_study_document.py
|
|
|
28
28
|
canopy/get_study_type_definition_for_sim_version.py
|
|
29
29
|
canopy/get_study_type_definition_for_sim_version_test.py
|
|
30
30
|
canopy/job_count_to_simulation_count.py
|
|
31
|
-
canopy/
|
|
31
|
+
canopy/load_channels.py
|
|
32
32
|
canopy/load_config.py
|
|
33
33
|
canopy/load_default_config.py
|
|
34
34
|
canopy/load_study.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "canopy"
|
|
7
|
-
version = "
|
|
7
|
+
version = "9.0.dev1"
|
|
8
8
|
description = "Python Client for the Canopy Simulation API"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -23,7 +23,8 @@ dependencies = [
|
|
|
23
23
|
"urllib3>=1.23",
|
|
24
24
|
"pandas>=0.25.1",
|
|
25
25
|
"aiohttp",
|
|
26
|
-
"munch"
|
|
26
|
+
"munch",
|
|
27
|
+
"polars"
|
|
27
28
|
]
|
|
28
29
|
|
|
29
30
|
[tool.setuptools]
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
from threading import Thread
|
|
2
|
-
from typing import Optional, Union
|
|
3
|
-
from aiohttp.client_exceptions import ClientResponseError, ClientConnectionError, ServerTimeoutError, ClientError
|
|
4
|
-
|
|
5
|
-
import numpy as np
|
|
6
|
-
import pandas as pd
|
|
7
|
-
import canopy
|
|
8
|
-
import logging
|
|
9
|
-
import asyncio
|
|
10
|
-
|
|
11
|
-
logger = logging.getLogger(__name__)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
async def load_channel(
|
|
15
|
-
session: canopy.Session,
|
|
16
|
-
job_access_information: canopy.openapi.BlobAccessInformation,
|
|
17
|
-
sim_type: str,
|
|
18
|
-
channel_name: str,
|
|
19
|
-
vector_metadata: Optional[pd.DataFrame] = None,
|
|
20
|
-
semaphore: Optional[asyncio.Semaphore] = None) -> Optional[canopy.LoadedChannel]:
|
|
21
|
-
sim_type = canopy.ensure_sim_type_string(sim_type)
|
|
22
|
-
|
|
23
|
-
if semaphore is None:
|
|
24
|
-
semaphore = asyncio.Semaphore(1)
|
|
25
|
-
|
|
26
|
-
async with semaphore:
|
|
27
|
-
if vector_metadata is None:
|
|
28
|
-
vector_metadata = await canopy.load_vector_metadata(session, job_access_information, sim_type)
|
|
29
|
-
|
|
30
|
-
if vector_metadata is None:
|
|
31
|
-
return None
|
|
32
|
-
|
|
33
|
-
if channel_name not in vector_metadata.index:
|
|
34
|
-
logger.debug('Channel not found: %s', channel_name)
|
|
35
|
-
return None
|
|
36
|
-
|
|
37
|
-
channel_metadata = vector_metadata.xs(channel_name)
|
|
38
|
-
|
|
39
|
-
points_count: int = channel_metadata['NPtsInChannel']
|
|
40
|
-
units: str = channel_metadata['units']
|
|
41
|
-
|
|
42
|
-
file_name = ''.join([sim_type, '_', channel_name, '.bin'])
|
|
43
|
-
channel_url = ''.join([job_access_information.url, file_name, job_access_information.access_signature])
|
|
44
|
-
|
|
45
|
-
channel_bytes: Optional[bytes] = await session.try_load_bytes(
|
|
46
|
-
channel_url,
|
|
47
|
-
f'"{file_name}" from "{job_access_information.url}"')
|
|
48
|
-
|
|
49
|
-
if channel_bytes is None:
|
|
50
|
-
return None
|
|
51
|
-
|
|
52
|
-
if points_count * 4 == len(channel_bytes):
|
|
53
|
-
data_type = np.float32
|
|
54
|
-
else:
|
|
55
|
-
data_type = np.float64
|
|
56
|
-
channel_data: np.array = np.frombuffer(channel_bytes, data_type)
|
|
57
|
-
|
|
58
|
-
loaded_channel = canopy.LoadedChannel(channel_name, units, channel_data)
|
|
59
|
-
return loaded_channel
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
async def read_channel_data(channel_url: str, session: canopy.Session) -> bytes:
|
|
63
|
-
async with session.async_client_session.get(
|
|
64
|
-
channel_url,
|
|
65
|
-
raise_for_status=True,
|
|
66
|
-
proxy=session.configuration.proxy) as response:
|
|
67
|
-
return await response.read()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/admin_tenant_settings_pool_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/availability_result_additional_tests.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_label_definitions_worksheet.py
RENAMED
|
File without changes
|
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_worksheet_labels_label_definitions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_decrypt_with_metadata_request.py
RENAMED
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_encrypt_with_metadata_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_upgrade_config_deprecated_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_create_deployment_request.py
RENAMED
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_post_deployment_note_request.py
RENAMED
|
File without changes
|
{canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_update_deployment_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|