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.
Files changed (407) hide show
  1. {canopy-8.86 → canopy-9.0.dev1}/PKG-INFO +4 -2
  2. {canopy-8.86 → canopy-9.0.dev1}/canopy/__init__.py +1 -1
  3. canopy-9.0.dev1/canopy/load_channels.py +135 -0
  4. {canopy-8.86 → canopy-9.0.dev1}/canopy/load_study_job.py +9 -14
  5. {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/PKG-INFO +4 -2
  6. {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/SOURCES.txt +1 -1
  7. {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/requires.txt +1 -0
  8. {canopy-8.86 → canopy-9.0.dev1}/pyproject.toml +3 -2
  9. canopy-8.86/canopy/load_channel.py +0 -67
  10. {canopy-8.86 → canopy-9.0.dev1}/LICENSE.txt +0 -0
  11. {canopy-8.86 → canopy-9.0.dev1}/README.md +0 -0
  12. {canopy-8.86 → canopy-9.0.dev1}/canopy/authentication.py +0 -0
  13. {canopy-8.86 → canopy-9.0.dev1}/canopy/authentication_data.py +0 -0
  14. {canopy-8.86 → canopy-9.0.dev1}/canopy/config_result.py +0 -0
  15. {canopy-8.86 → canopy-9.0.dev1}/canopy/constants.py +0 -0
  16. {canopy-8.86 → canopy-9.0.dev1}/canopy/create_config.py +0 -0
  17. {canopy-8.86 → canopy-9.0.dev1}/canopy/create_list_filter.py +0 -0
  18. {canopy-8.86 → canopy-9.0.dev1}/canopy/create_study.py +0 -0
  19. {canopy-8.86 → canopy-9.0.dev1}/canopy/defined_kwargs.py +0 -0
  20. {canopy-8.86 → canopy-9.0.dev1}/canopy/delete_config.py +0 -0
  21. {canopy-8.86 → canopy-9.0.dev1}/canopy/delete_study.py +0 -0
  22. {canopy-8.86 → canopy-9.0.dev1}/canopy/dict_to_object.py +0 -0
  23. {canopy-8.86 → canopy-9.0.dev1}/canopy/dict_to_object_test.py +0 -0
  24. {canopy-8.86 → canopy-9.0.dev1}/canopy/dynamic_dict_to_object.py +0 -0
  25. {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_dict.py +0 -0
  26. {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_sim_type_string.py +0 -0
  27. {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_sim_type_string_test.py +0 -0
  28. {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_study_type_string.py +0 -0
  29. {canopy-8.86 → canopy-9.0.dev1}/canopy/ensure_study_type_string_test.py +0 -0
  30. {canopy-8.86 → canopy-9.0.dev1}/canopy/find_config.py +0 -0
  31. {canopy-8.86 → canopy-9.0.dev1}/canopy/find_study.py +0 -0
  32. {canopy-8.86 → canopy-9.0.dev1}/canopy/get_default_config_path.py +0 -0
  33. {canopy-8.86 → canopy-9.0.dev1}/canopy/get_study_document.py +0 -0
  34. {canopy-8.86 → canopy-9.0.dev1}/canopy/get_study_type_definition_for_sim_version.py +0 -0
  35. {canopy-8.86 → canopy-9.0.dev1}/canopy/get_study_type_definition_for_sim_version_test.py +0 -0
  36. {canopy-8.86 → canopy-9.0.dev1}/canopy/job_count_to_simulation_count.py +0 -0
  37. {canopy-8.86 → canopy-9.0.dev1}/canopy/load_config.py +0 -0
  38. {canopy-8.86 → canopy-9.0.dev1}/canopy/load_default_config.py +0 -0
  39. {canopy-8.86 → canopy-9.0.dev1}/canopy/load_study.py +0 -0
  40. {canopy-8.86 → canopy-9.0.dev1}/canopy/load_study_job_scalar_results.py +0 -0
  41. {canopy-8.86 → canopy-9.0.dev1}/canopy/load_study_scalar_results.py +0 -0
  42. {canopy-8.86 → canopy-9.0.dev1}/canopy/load_vector_metadata.py +0 -0
  43. {canopy-8.86 → canopy-9.0.dev1}/canopy/loaded_channel.py +0 -0
  44. {canopy-8.86 → canopy-9.0.dev1}/canopy/local_config.py +0 -0
  45. {canopy-8.86 → canopy-9.0.dev1}/canopy/not_found_error.py +0 -0
  46. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/__init__.py +0 -0
  47. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/__init__.py +0 -0
  48. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/account_settings_api.py +0 -0
  49. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/availability_api.py +0 -0
  50. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/config_api.py +0 -0
  51. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/deployments_api.py +0 -0
  52. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/encryption_api.py +0 -0
  53. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/end_to_end_test_inbox_api.py +0 -0
  54. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/list_filter_api.py +0 -0
  55. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/membership_api.py +0 -0
  56. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/multi_factor_authentication_api.py +0 -0
  57. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/pool_api.py +0 -0
  58. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/sim_version_api.py +0 -0
  59. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/study_api.py +0 -0
  60. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/support_session_api.py +0 -0
  61. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/tenancy_api.py +0 -0
  62. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/tenant_settings_api.py +0 -0
  63. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/token_api.py +0 -0
  64. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/user_settings_api.py +0 -0
  65. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api/worksheet_api.py +0 -0
  66. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/api_client.py +0 -0
  67. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/configuration.py +0 -0
  68. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/exceptions.py +0 -0
  69. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/__init__.py +0 -0
  70. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/account_settings_put_request.py +0 -0
  71. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/additional_tests.py +0 -0
  72. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/admin_tenant_settings.py +0 -0
  73. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/admin_tenant_settings_pool_settings.py +0 -0
  74. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/allocation_state.py +0 -0
  75. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/auto_scale_run.py +0 -0
  76. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/auto_scale_run_error.py +0 -0
  77. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/availability_result.py +0 -0
  78. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/availability_result_additional_tests.py +0 -0
  79. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/batch_create_configs_result.py +0 -0
  80. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/blob_access_information.py +0 -0
  81. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/canopy_document.py +0 -0
  82. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/canopy_document_support_session.py +0 -0
  83. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/channel_import_mapping.py +0 -0
  84. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/channel_settings.py +0 -0
  85. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/chart_settings.py +0 -0
  86. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_label_definitions.py +0 -0
  87. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_label_definitions_worksheet.py +0 -0
  88. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_worksheet_labels.py +0 -0
  89. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/collated_worksheet_labels_label_definitions.py +0 -0
  90. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/compute_node_result.py +0 -0
  91. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/compute_node_state.py +0 -0
  92. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/condition_operator.py +0 -0
  93. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_column_label_definitions.py +0 -0
  94. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_decrypt_with_metadata_request.py +0 -0
  95. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_encrypt_with_metadata_request.py +0 -0
  96. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_hash.py +0 -0
  97. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_owner_data.py +0 -0
  98. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_permission_data.py +0 -0
  99. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_post_config_request.py +0 -0
  100. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_post_configs_request.py +0 -0
  101. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_put_config_owner_request.py +0 -0
  102. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_put_config_request.py +0 -0
  103. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_reference.py +0 -0
  104. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_reference_default.py +0 -0
  105. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_reference_tenant.py +0 -0
  106. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_resolved_labels.py +0 -0
  107. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_resolved_labels_reference.py +0 -0
  108. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_resolved_reference.py +0 -0
  109. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_resolved_reference_data.py +0 -0
  110. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_type_definition.py +0 -0
  111. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_type_metadata.py +0 -0
  112. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_type_state.py +0 -0
  113. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/config_upgrade_config_deprecated_request.py +0 -0
  114. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/create_deployment_data.py +0 -0
  115. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/data_to_decrypt.py +0 -0
  116. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/data_to_encrypt.py +0 -0
  117. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/data_to_re_encrypt.py +0 -0
  118. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/default_config_id.py +0 -0
  119. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/default_config_reference.py +0 -0
  120. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/default_custom_property_names.py +0 -0
  121. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployment_note_data.py +0 -0
  122. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployment_note_response.py +0 -0
  123. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_create_deployment_request.py +0 -0
  124. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_post_deployment_note_request.py +0 -0
  125. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_update_deployment_request.py +0 -0
  126. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_update_invoice_bot_deployment_request.py +0 -0
  127. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/deployments_update_subscription_level_request.py +0 -0
  128. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_custom_property_data.py +0 -0
  129. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_custom_property_group.py +0 -0
  130. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_group_result.py +0 -0
  131. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_name_result.py +0 -0
  132. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_type_custom_property_groups.py +0 -0
  133. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/document_user_information.py +0 -0
  134. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/documents_and_continuation_token.py +0 -0
  135. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/duplicate_configs_data.py +0 -0
  136. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/duplicate_configs_result.py +0 -0
  137. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/email_confirmation_data.py +0 -0
  138. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_config_permission.py +0 -0
  139. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_key_permission.py +0 -0
  140. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_put_config_permission_request.py +0 -0
  141. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_put_key_permission_request.py +0 -0
  142. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_query_data.py +0 -0
  143. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_query_request.py +0 -0
  144. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/encryption_re_encrypt_request.py +0 -0
  145. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/file_download_metadata.py +0 -0
  146. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/generate_mfa_setup_code_result.py +0 -0
  147. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_account_features_query_result.py +0 -0
  148. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_account_settings_result.py +0 -0
  149. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_admin_tenant_settings_query_result.py +0 -0
  150. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_admin_tenant_settings_query_result_settings.py +0 -0
  151. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_all_support_sessions_query_result.py +0 -0
  152. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_all_support_sessions_query_result_user_information.py +0 -0
  153. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_all_tenants_study_statistics_query_result.py +0 -0
  154. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_names_query_result.py +0 -0
  155. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_permissions_query_result.py +0 -0
  156. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_query_result.py +0 -0
  157. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_query_result_config.py +0 -0
  158. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_query_result_user_information.py +0 -0
  159. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_sub_paths_query_result.py +0 -0
  160. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_versions_query_result.py +0 -0
  161. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_config_versions_query_result_user_information.py +0 -0
  162. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_configs_query_result.py +0 -0
  163. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_configs_query_result_query_results.py +0 -0
  164. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_decrypted_data_query_result.py +0 -0
  165. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result.py +0 -0
  166. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result_deployment.py +0 -0
  167. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result_deployment_dto.py +0 -0
  168. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result_note_item.py +0 -0
  169. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployment_query_result_tenant_item.py +0 -0
  170. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployments_query_result.py +0 -0
  171. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_deployments_query_result_deployment_item.py +0 -0
  172. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_encrypted_data_query_result.py +0 -0
  173. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_invoice_bot_deployments_query_result.py +0 -0
  174. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_key_permissions_query_result.py +0 -0
  175. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_pool_status_query_result.py +0 -0
  176. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_pools_item.py +0 -0
  177. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_pools_item_interval.py +0 -0
  178. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_pools_query_result.py +0 -0
  179. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_re_encrypted_data_query_result.py +0 -0
  180. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_sim_version_document_query_result.py +0 -0
  181. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_sim_version_document_query_result_document.py +0 -0
  182. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_sim_version_documents_query_result.py +0 -0
  183. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_sim_version_downloads_query_result.py +0 -0
  184. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_studies_query_result.py +0 -0
  185. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_studies_query_result_query_results.py +0 -0
  186. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_download_url_query_result.py +0 -0
  187. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_count_result.py +0 -0
  188. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_metadata_query_result.py +0 -0
  189. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_metadata_query_result_access_information.py +0 -0
  190. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_metadata_query_result_study_job.py +0 -0
  191. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_query_result.py +0 -0
  192. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_query_result_access_information.py +0 -0
  193. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_job_query_result_study_job.py +0 -0
  194. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_jobs_query_result.py +0 -0
  195. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_jobs_query_result_query_results.py +0 -0
  196. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_query_result.py +0 -0
  197. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_query_result_access_information.py +0 -0
  198. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_query_result_study.py +0 -0
  199. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_query_result_user_information.py +0 -0
  200. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_study_types_query_result.py +0 -0
  201. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_subscription_level_query_result.py +0 -0
  202. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_subscription_levels_query_result.py +0 -0
  203. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_subscription_levels_query_result_subscription_level_item.py +0 -0
  204. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_support_session_query_result.py +0 -0
  205. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_support_session_query_result_session.py +0 -0
  206. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_access_information_query_result.py +0 -0
  207. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_billable_stored_simulation_count_query_result.py +0 -0
  208. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_channel_import_mappings_query_result.py +0 -0
  209. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_channel_whitelists_query_result.py +0 -0
  210. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_channel_whitelists_query_result_settings.py +0 -0
  211. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_default_custom_property_names_query_result.py +0 -0
  212. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_default_custom_property_names_query_result_settings.py +0 -0
  213. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_query_result.py +0 -0
  214. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_settings_sim_version_query_result.py +0 -0
  215. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_study_statistics_query_result.py +0 -0
  216. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_users_query_result.py +0 -0
  217. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_users_query_result_user_item.py +0 -0
  218. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenant_worksheet_label_definitions_query_result.py +0 -0
  219. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenants_query_result.py +0 -0
  220. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_tenants_query_result_tenant_item.py +0 -0
  221. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_user_roles_query_result.py +0 -0
  222. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_user_settings_query_result.py +0 -0
  223. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_user_settings_query_result_settings.py +0 -0
  224. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_wiki_document_query_result.py +0 -0
  225. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_wiki_document_query_result_document.py +0 -0
  226. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_worksheet_query_result.py +0 -0
  227. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_worksheet_query_result_user_information.py +0 -0
  228. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_worksheet_query_result_worksheet.py +0 -0
  229. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/get_zendesk_token_query_result.py +0 -0
  230. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/grant_type_handler_response.py +0 -0
  231. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/group_operator.py +0 -0
  232. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/i_previous_definition_sim_type_definition.py +0 -0
  233. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/i_previous_definition_sim_type_definition_definition.py +0 -0
  234. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/i_previous_definition_study_type_definition.py +0 -0
  235. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/i_previous_definition_study_type_definition_definition.py +0 -0
  236. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/identified_user_data.py +0 -0
  237. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/invoice_bot_deployment_item.py +0 -0
  238. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/key_permission_data.py +0 -0
  239. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/label_definition.py +0 -0
  240. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/label_definitions.py +0 -0
  241. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/list_filter.py +0 -0
  242. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/list_filter_condition.py +0 -0
  243. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/list_filter_group.py +0 -0
  244. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/list_filter_query.py +0 -0
  245. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_email_confirmation_request.py +0 -0
  246. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_identified_user_request.py +0 -0
  247. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_password_reset_confirmation_request.py +0 -0
  248. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_password_reset_request_request.py +0 -0
  249. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_post_registration_request.py +0 -0
  250. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/membership_put_user_role_request.py +0 -0
  251. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/multi_factor_authentication_post_multi_factor_authentication_request.py +0 -0
  252. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/name_value_pair.py +0 -0
  253. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_batch_config_data.py +0 -0
  254. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_config_data.py +0 -0
  255. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_sim_version_data.py +0 -0
  256. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_study_data.py +0 -0
  257. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_study_data_source.py +0 -0
  258. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_tenant_data.py +0 -0
  259. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_worksheet_data.py +0 -0
  260. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/new_worksheet_data_outline.py +0 -0
  261. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/order_by_property.py +0 -0
  262. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/password_reset_confirmation_data.py +0 -0
  263. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/password_reset_request_data.py +0 -0
  264. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/pool_settings.py +0 -0
  265. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/pool_state.py +0 -0
  266. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/pool_type.py +0 -0
  267. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/post_study_result.py +0 -0
  268. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/query_encrypted_data_query_result.py +0 -0
  269. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/query_encrypted_data_tenant_result.py +0 -0
  270. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/registration_data.py +0 -0
  271. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/resolved_label.py +0 -0
  272. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/resolved_label_numeric_statistics.py +0 -0
  273. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/resolved_statistic_label.py +0 -0
  274. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_definition.py +0 -0
  275. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_definition_input_telemetry_channels.py +0 -0
  276. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_channel.py +0 -0
  277. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_channel_evaluation_definition.py +0 -0
  278. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_channels.py +0 -0
  279. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_evaluated_channel.py +0 -0
  280. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_input_telemetry_evaluated_channel_suffix.py +0 -0
  281. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_type_state.py +0 -0
  282. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_version_document_name_result.py +0 -0
  283. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/sim_version_post_sim_version_request.py +0 -0
  284. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/simulation_column_label_definitions.py +0 -0
  285. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/simulation_input.py +0 -0
  286. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/simulation_resolved_labels.py +0 -0
  287. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_blob_access_information.py +0 -0
  288. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_document.py +0 -0
  289. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_document_study_document_data_source.py +0 -0
  290. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_documents_and_continuation_token.py +0 -0
  291. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_input_hash.py +0 -0
  292. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_input_hashes.py +0 -0
  293. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_job_documents_and_continuation_token.py +0 -0
  294. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_post_study_request.py +0 -0
  295. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_put_study_request.py +0 -0
  296. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_reference.py +0 -0
  297. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_labels.py +0 -0
  298. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_labels_reference.py +0 -0
  299. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_reference.py +0 -0
  300. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_reference_data.py +0 -0
  301. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_resolved_reference_data_study_document.py +0 -0
  302. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_state.py +0 -0
  303. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_type_definition.py +0 -0
  304. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/study_type_state.py +0 -0
  305. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_session.py +0 -0
  306. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_session_data.py +0 -0
  307. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_session_put_support_session_request.py +0 -0
  308. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_session_response.py +0 -0
  309. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/support_sessions_request_metadata.py +0 -0
  310. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenancy_post_tenant_request.py +0 -0
  311. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenancy_put_tenant_request.py +0 -0
  312. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_channel_whitelists.py +0 -0
  313. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_config_reference.py +0 -0
  314. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_default_custom_property_names.py +0 -0
  315. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_id_study_id.py +0 -0
  316. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_information.py +0 -0
  317. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_admin_tenant_settings_request.py +0 -0
  318. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_channel_import_mappings_request.py +0 -0
  319. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_channel_whitelists_request.py +0 -0
  320. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_default_custom_property_names_request.py +0 -0
  321. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_settings_sim_version_request.py +0 -0
  322. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_settings_put_tenant_worksheet_label_definitions_request.py +0 -0
  323. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/tenant_statistics.py +0 -0
  324. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/test_auto_scale_formula_query_result.py +0 -0
  325. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/test_auto_scale_formula_query_result_auto_scale_run.py +0 -0
  326. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/text_document.py +0 -0
  327. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/text_document_optional_content.py +0 -0
  328. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/update_deployment_data.py +0 -0
  329. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/update_invoice_bot_deployment_data.py +0 -0
  330. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/update_subscription_level_data.py +0 -0
  331. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_account_settings.py +0 -0
  332. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_admin_tenant_settings.py +0 -0
  333. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_admin_tenant_settings_settings.py +0 -0
  334. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_channel_import_mappings.py +0 -0
  335. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_config_data.py +0 -0
  336. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_mfa_enabled.py +0 -0
  337. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_study_data.py +0 -0
  338. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_tenant_channel_whitelists.py +0 -0
  339. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_tenant_data.py +0 -0
  340. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_tenant_default_custom_property_names.py +0 -0
  341. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_tenant_settings_sim_version.py +0 -0
  342. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_user_settings.py +0 -0
  343. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_user_settings_settings.py +0 -0
  344. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_worksheet_data.py +0 -0
  345. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_worksheet_data_outline.py +0 -0
  346. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_worksheet_label_definitions.py +0 -0
  347. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/updated_worksheet_label_definitions_label_definitions.py +0 -0
  348. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/upgrade_config_data.py +0 -0
  349. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/upgrade_config_query_result.py +0 -0
  350. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/user_information.py +0 -0
  351. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/user_role_data.py +0 -0
  352. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/user_settings.py +0 -0
  353. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/user_settings_put_user_settings_request.py +0 -0
  354. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/versioned_document_metadata.py +0 -0
  355. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet.py +0 -0
  356. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_config.py +0 -0
  357. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_outline.py +0 -0
  358. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_post_duplicate_configs_request.py +0 -0
  359. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_post_worksheet_request.py +0 -0
  360. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_put_worksheet_request.py +0 -0
  361. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_resolved_labels.py +0 -0
  362. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_resolved_references.py +0 -0
  363. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_row.py +0 -0
  364. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_row_study.py +0 -0
  365. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/models/worksheet_study.py +0 -0
  366. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi/rest.py +0 -0
  367. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi_asyncio/__init__.py +0 -0
  368. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi_asyncio/api_client.py +0 -0
  369. {canopy-8.86 → canopy-9.0.dev1}/canopy/openapi_asyncio/rest.py +0 -0
  370. {canopy-8.86 → canopy-9.0.dev1}/canopy/process_data_frame.py +0 -0
  371. {canopy-8.86 → canopy-9.0.dev1}/canopy/process_data_frame_test.py +0 -0
  372. {canopy-8.86 → canopy-9.0.dev1}/canopy/prompt_for_authentication.py +0 -0
  373. {canopy-8.86 → canopy-9.0.dev1}/canopy/properties_dict_to_list.py +0 -0
  374. {canopy-8.86 → canopy-9.0.dev1}/canopy/proxy_configuration.py +0 -0
  375. {canopy-8.86 → canopy-9.0.dev1}/canopy/proxy_configuration_test.py +0 -0
  376. {canopy-8.86 → canopy-9.0.dev1}/canopy/request_with_retry.py +0 -0
  377. {canopy-8.86 → canopy-9.0.dev1}/canopy/request_with_retry_test.py +0 -0
  378. {canopy-8.86 → canopy-9.0.dev1}/canopy/run.py +0 -0
  379. {canopy-8.86 → canopy-9.0.dev1}/canopy/serializable_value.py +0 -0
  380. {canopy-8.86 → canopy-9.0.dev1}/canopy/session.py +0 -0
  381. {canopy-8.86 → canopy-9.0.dev1}/canopy/sim_version_to_number.py +0 -0
  382. {canopy-8.86 → canopy-9.0.dev1}/canopy/sim_version_to_number_test.py +0 -0
  383. {canopy-8.86 → canopy-9.0.dev1}/canopy/study_job_result.py +0 -0
  384. {canopy-8.86 → canopy-9.0.dev1}/canopy/study_result.py +0 -0
  385. {canopy-8.86 → canopy-9.0.dev1}/canopy/study_scalar_results.py +0 -0
  386. {canopy-8.86 → canopy-9.0.dev1}/canopy/study_types_cache.py +0 -0
  387. {canopy-8.86 → canopy-9.0.dev1}/canopy/tenant_sim_version_cache.py +0 -0
  388. {canopy-8.86 → canopy-9.0.dev1}/canopy/tenant_users.py +0 -0
  389. {canopy-8.86 → canopy-9.0.dev1}/canopy/tenant_users_cache.py +0 -0
  390. {canopy-8.86 → canopy-9.0.dev1}/canopy/tenant_users_test.py +0 -0
  391. {canopy-8.86 → canopy-9.0.dev1}/canopy/try_load_csv_from_url.py +0 -0
  392. {canopy-8.86 → canopy-9.0.dev1}/canopy/units.py +0 -0
  393. {canopy-8.86 → canopy-9.0.dev1}/canopy/units_test.py +0 -0
  394. {canopy-8.86 → canopy-9.0.dev1}/canopy/update_config.py +0 -0
  395. {canopy-8.86 → canopy-9.0.dev1}/canopy/user_settings_cache.py +0 -0
  396. {canopy-8.86 → canopy-9.0.dev1}/canopy/wait_for_study.py +0 -0
  397. {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/dependency_links.txt +0 -0
  398. {canopy-8.86 → canopy-9.0.dev1}/canopy.egg-info/top_level.txt +0 -0
  399. {canopy-8.86 → canopy-9.0.dev1}/integration_tests/__init__.py +0 -0
  400. {canopy-8.86 → canopy-9.0.dev1}/integration_tests/conftest.py +0 -0
  401. {canopy-8.86 → canopy-9.0.dev1}/integration_tests/environment.py +0 -0
  402. {canopy-8.86 → canopy-9.0.dev1}/integration_tests/environment_data.py +0 -0
  403. {canopy-8.86 → canopy-9.0.dev1}/integration_tests/environment_loader.py +0 -0
  404. {canopy-8.86 → canopy-9.0.dev1}/integration_tests/test_config.py +0 -0
  405. {canopy-8.86 → canopy-9.0.dev1}/integration_tests/test_study.py +0 -0
  406. {canopy-8.86 → canopy-9.0.dev1}/integration_tests/test_synchronous.py +0 -0
  407. {canopy-8.86 → canopy-9.0.dev1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: canopy
3
- Version: 8.86
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.load_channel import load_channel
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
- tasks: List[Future[Optional[canopy.LoadedChannel]]] = []
88
- for channel_name in channel_names:
89
- loaded_channel_task = asyncio.ensure_future(canopy.load_channel(
90
- session,
91
- job_access_information,
92
- sim_type,
93
- channel_name,
94
- vector_metadata=vector_metadata,
95
- semaphore=channels_semaphore))
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
1
+ Metadata-Version: 2.4
2
2
  Name: canopy
3
- Version: 8.86
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/load_channel.py
31
+ canopy/load_channels.py
32
32
  canopy/load_config.py
33
33
  canopy/load_default_config.py
34
34
  canopy/load_study.py
@@ -6,3 +6,4 @@ urllib3>=1.23
6
6
  pandas>=0.25.1
7
7
  aiohttp
8
8
  munch
9
+ polars
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "canopy"
7
- version = "8.86"
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