workbench 0.8.187__tar.gz → 0.8.189__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 (783) hide show
  1. {workbench-0.8.187 → workbench-0.8.189}/PKG-INFO +1 -1
  2. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/workbench_compute/workbench_compute_stack.py +1 -1
  3. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/endpoint.md +3 -7
  4. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/overview.md +2 -7
  5. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/views.md +2 -2
  6. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/views/overview.md +2 -2
  7. {workbench-0.8.187 → workbench-0.8.189}/examples/endpoint/endpoint_inference.py +3 -7
  8. {workbench-0.8.187 → workbench-0.8.189}/examples/full_ml_pipeline.py +1 -3
  9. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/ml_pipelines/Dockerfile +1 -1
  10. {workbench-0.8.187 → workbench-0.8.189}/notebooks/Inference_On_Legacy_Models.ipynb +2 -2
  11. {workbench-0.8.187 → workbench-0.8.189}/notebooks/ML_Pipeline_with_Workbench_2.ipynb +1 -1
  12. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/endpoint_core.py +6 -6
  13. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/feature_set_core.py +5 -5
  14. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/model_core.py +18 -0
  15. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/features_to_model/features_to_model.py +5 -0
  16. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/training_view.py +11 -5
  17. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/view.py +51 -1
  18. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/view_utils.py +4 -4
  19. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/xgb_model/generated_model_script.py +6 -6
  20. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/endpoint_utils.py +5 -7
  21. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/model_utils.py +6 -8
  22. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/xgboost_model_utils.py +2 -2
  23. {workbench-0.8.187 → workbench-0.8.189}/src/workbench.egg-info/PKG-INFO +1 -1
  24. {workbench-0.8.187 → workbench-0.8.189}/tests/artifacts/endpoint_tests.py +7 -7
  25. {workbench-0.8.187 → workbench-0.8.189}/.flake8 +0 -0
  26. {workbench-0.8.187 → workbench-0.8.189}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  27. {workbench-0.8.187 → workbench-0.8.189}/.github/dependabot.yml +0 -0
  28. {workbench-0.8.187 → workbench-0.8.189}/.github/workflows/deploy-docs.yml +0 -0
  29. {workbench-0.8.187 → workbench-0.8.189}/.github/workflows/python-lint.yml +0 -0
  30. {workbench-0.8.187 → workbench-0.8.189}/.gitignore +0 -0
  31. {workbench-0.8.187 → workbench-0.8.189}/CONTRIBUTING.md +0 -0
  32. {workbench-0.8.187 → workbench-0.8.189}/Dockerfile +0 -0
  33. {workbench-0.8.187 → workbench-0.8.189}/LICENSE +0 -0
  34. {workbench-0.8.187 → workbench-0.8.189}/Makefile +0 -0
  35. {workbench-0.8.187 → workbench-0.8.189}/README.md +0 -0
  36. {workbench-0.8.187 → workbench-0.8.189}/SECURITY.md +0 -0
  37. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/Dockerfile +0 -0
  38. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/README.md +0 -0
  39. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/app.py +0 -0
  40. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/assets/favicon.ico +0 -0
  41. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/dashboard +0 -0
  42. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/deploy.sh +0 -0
  43. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/nginx.conf +0 -0
  44. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/open_source_config.json +0 -0
  45. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/data_sources/callbacks.py +0 -0
  46. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/data_sources/layout.py +0 -0
  47. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/data_sources/page.py +0 -0
  48. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/endpoints/callbacks.py +0 -0
  49. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/endpoints/layout.py +0 -0
  50. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/endpoints/page.py +0 -0
  51. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/feature_sets/callbacks.py +0 -0
  52. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/feature_sets/layout.py +0 -0
  53. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/feature_sets/page.py +0 -0
  54. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/license/page.py +0 -0
  55. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/main/callbacks.py +0 -0
  56. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/main/layout.py +0 -0
  57. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/main/page.py +0 -0
  58. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/models/callbacks.py +0 -0
  59. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/models/layout.py +0 -0
  60. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/models/page.py +0 -0
  61. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/pipelines/callbacks.py +0 -0
  62. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/pipelines/layout.py +0 -0
  63. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/pipelines/page.py +0 -0
  64. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/pages/status/page.py +0 -0
  65. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/static/dark.css +0 -0
  66. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/static/light.css +0 -0
  67. {workbench-0.8.187 → workbench-0.8.189}/applications/aws_dashboard/supervisord.conf +0 -0
  68. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/Dockerfile +0 -0
  69. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/README.md +0 -0
  70. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/app.py +0 -0
  71. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/assets/favicon.ico +0 -0
  72. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/callbacks.py +0 -0
  73. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/explorer +0 -0
  74. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/layout.py +0 -0
  75. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/nginx.conf +0 -0
  76. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/open_source_config.json +0 -0
  77. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/requirements.txt +0 -0
  78. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/storage/callbacks.py +0 -0
  79. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/storage/callbacks_new.py +0 -0
  80. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/storage/layout_new.py +0 -0
  81. {workbench-0.8.187 → workbench-0.8.189}/applications/compound_explorer/supervisord.conf +0 -0
  82. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/aws_account_setup.py +0 -0
  83. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/aws_identity_check.py +0 -0
  84. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/build_ml_pipeline.py +0 -0
  85. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/compound_explorer/.gitignore +0 -0
  86. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/compound_explorer/README.md +0 -0
  87. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/compound_explorer/app.py +0 -0
  88. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/compound_explorer/cdk.json +0 -0
  89. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/compound_explorer/compound_explorer/__init__.py +0 -0
  90. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/compound_explorer/compound_explorer/compound_explorer_stack.py +0 -0
  91. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/compound_explorer/requirements.txt +0 -0
  92. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/event_bridge/Readme.md +0 -0
  93. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/README.md +0 -0
  94. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/app.py +0 -0
  95. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/cdk.json +0 -0
  96. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/requirements.txt +0 -0
  97. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/tests/__init__.py +0 -0
  98. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/tests/unit/__init__.py +0 -0
  99. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/tests/unit/test_workbench_compute_stack.py +0 -0
  100. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_compute/workbench_compute/__init__.py +0 -0
  101. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/.gitignore +0 -0
  102. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/README.md +0 -0
  103. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/app.py +0 -0
  104. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/cdk.json +0 -0
  105. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/requirements-dev.txt +0 -0
  106. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/requirements.txt +0 -0
  107. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/source.bat +0 -0
  108. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/workbench_core/__init__.py +0 -0
  109. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_core/workbench_core/workbench_core_stack.py +0 -0
  110. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/.gitignore +0 -0
  111. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/README.md +0 -0
  112. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/app.py +0 -0
  113. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/cdk.json +0 -0
  114. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/requirements-dev.txt +0 -0
  115. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/requirements.txt +0 -0
  116. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/source.bat +0 -0
  117. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/workbench_dashboard_full/__init__.py +0 -0
  118. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_full/workbench_dashboard_full/workbench_dashboard_stack.py +0 -0
  119. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_lite/.gitignore +0 -0
  120. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_lite/README.md +0 -0
  121. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_lite/app.py +0 -0
  122. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_lite/cdk.json +0 -0
  123. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_lite/requirements.txt +0 -0
  124. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_lite/workbench_dashboard_lite/__init__.py +0 -0
  125. {workbench-0.8.187 → workbench-0.8.189}/aws_setup/workbench_dashboard_lite/workbench_dashboard_lite/workbench_dashboard_stack.py +0 -0
  126. {workbench-0.8.187 → workbench-0.8.189}/data/abalone.csv +0 -0
  127. {workbench-0.8.187 → workbench-0.8.189}/data/karate_graph.json +0 -0
  128. {workbench-0.8.187 → workbench-0.8.189}/data/test_data.csv +0 -0
  129. {workbench-0.8.187 → workbench-0.8.189}/data/test_data.json +0 -0
  130. {workbench-0.8.187 → workbench-0.8.189}/data/wine_dataset.csv +0 -0
  131. {workbench-0.8.187 → workbench-0.8.189}/deploy_docker.sh +0 -0
  132. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/aws_service_limits.md +0 -0
  133. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/base_docker_push.md +0 -0
  134. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/dashboard_docker_push.md +0 -0
  135. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/dashboard_s3_plugins.md +0 -0
  136. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/explorer_docker_push.md +0 -0
  137. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/images/dashboard_secret_click.png +0 -0
  138. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/images/serverless_quotas.png +0 -0
  139. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/images/status_showing_S3_path.png +0 -0
  140. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/pypi_release.md +0 -0
  141. {workbench-0.8.187 → workbench-0.8.189}/docs/admin/workbench_docker_for_lambdas.md +0 -0
  142. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/data_source.md +0 -0
  143. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/df_store.md +0 -0
  144. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/feature_set.md +0 -0
  145. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/meta.md +0 -0
  146. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/model.md +0 -0
  147. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/monitor.md +0 -0
  148. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/parameter_store.md +0 -0
  149. {workbench-0.8.187 → workbench-0.8.189}/docs/api_classes/pipelines.md +0 -0
  150. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/aws_access_management.md +0 -0
  151. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/aws_client_vpn.md +0 -0
  152. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/aws_setup.md +0 -0
  153. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/aws_tips_and_tricks.md +0 -0
  154. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/core_stack.md +0 -0
  155. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/dashboard_stack.md +0 -0
  156. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/domain_cert_setup.md +0 -0
  157. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/full_pipeline.md +0 -0
  158. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/iam_assume_role.md +0 -0
  159. {workbench-0.8.187 → workbench-0.8.189}/docs/aws_setup/sso_assume_role.md +0 -0
  160. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/aws_credentials_lock.md +0 -0
  161. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/canonicalization_and_tautomerization.md +0 -0
  162. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/compound_etl.md +0 -0
  163. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/compound_explorer.md +0 -0
  164. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/descriptor_drilldown.md +0 -0
  165. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/eda.md +0 -0
  166. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/feature_importances.md +0 -0
  167. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/fun_with_workbench/fun_with_endpoints.md +0 -0
  168. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/htg.md +0 -0
  169. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/index.md +0 -0
  170. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/model_monitoring.md +0 -0
  171. {workbench-0.8.187 → workbench-0.8.189}/docs/blogs/residual_analysis.md +0 -0
  172. {workbench-0.8.187 → workbench-0.8.189}/docs/cached/cached_data_source.md +0 -0
  173. {workbench-0.8.187 → workbench-0.8.189}/docs/cached/cached_endpoint.md +0 -0
  174. {workbench-0.8.187 → workbench-0.8.189}/docs/cached/cached_feature_set.md +0 -0
  175. {workbench-0.8.187 → workbench-0.8.189}/docs/cached/cached_meta.md +0 -0
  176. {workbench-0.8.187 → workbench-0.8.189}/docs/cached/cached_model.md +0 -0
  177. {workbench-0.8.187 → workbench-0.8.189}/docs/cached/overview.md +0 -0
  178. {workbench-0.8.187 → workbench-0.8.189}/docs/chem_utils/index.md +0 -0
  179. {workbench-0.8.187 → workbench-0.8.189}/docs/cloudwatch/index.md +0 -0
  180. {workbench-0.8.187 → workbench-0.8.189}/docs/comparisons/workbench_vs_databricks.md +0 -0
  181. {workbench-0.8.187 → workbench-0.8.189}/docs/compound_explorer/tox21.md +0 -0
  182. {workbench-0.8.187 → workbench-0.8.189}/docs/compound_explorer/toxicity_modeling.md +0 -0
  183. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/artifacts/artifact.md +0 -0
  184. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/artifacts/athena_source.md +0 -0
  185. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/artifacts/data_source_abstract.md +0 -0
  186. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/artifacts/endpoint_core.md +0 -0
  187. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/artifacts/feature_set_core.md +0 -0
  188. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/artifacts/model_core.md +0 -0
  189. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/artifacts/monitor_core.md +0 -0
  190. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/artifacts/overview.md +0 -0
  191. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/overview.md +0 -0
  192. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/transforms/data_loaders_heavy.md +0 -0
  193. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/transforms/data_loaders_light.md +0 -0
  194. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/transforms/data_to_features.md +0 -0
  195. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/transforms/features_to_model.md +0 -0
  196. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/transforms/model_to_endpoint.md +0 -0
  197. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/transforms/overview.md +0 -0
  198. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/transforms/pandas_transforms.md +0 -0
  199. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/transforms/transform.md +0 -0
  200. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/views/computation_view.md +0 -0
  201. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/views/display_view.md +0 -0
  202. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/views/inference_view.md +0 -0
  203. {workbench-0.8.187 → workbench-0.8.189}/docs/core_classes/views/training_view.md +0 -0
  204. {workbench-0.8.187 → workbench-0.8.189}/docs/data_algorithms/dataframes/overview.md +0 -0
  205. {workbench-0.8.187 → workbench-0.8.189}/docs/data_algorithms/graphs/overview.md +0 -0
  206. {workbench-0.8.187 → workbench-0.8.189}/docs/data_algorithms/overview.md +0 -0
  207. {workbench-0.8.187 → workbench-0.8.189}/docs/data_algorithms/spark/overview.md +0 -0
  208. {workbench-0.8.187 → workbench-0.8.189}/docs/data_algorithms/sql/overview.md +0 -0
  209. {workbench-0.8.187 → workbench-0.8.189}/docs/enterprise/index.md +0 -0
  210. {workbench-0.8.187 → workbench-0.8.189}/docs/enterprise/private_saas.md +0 -0
  211. {workbench-0.8.187 → workbench-0.8.189}/docs/enterprise/project_branding.md +0 -0
  212. {workbench-0.8.187 → workbench-0.8.189}/docs/enterprise/themes.md +0 -0
  213. {workbench-0.8.187 → workbench-0.8.189}/docs/getting_started/index.md +0 -0
  214. {workbench-0.8.187 → workbench-0.8.189}/docs/glue/index.md +0 -0
  215. {workbench-0.8.187 → workbench-0.8.189}/docs/images/big_spider.png +0 -0
  216. {workbench-0.8.187 → workbench-0.8.189}/docs/images/graph_representation.png +0 -0
  217. {workbench-0.8.187 → workbench-0.8.189}/docs/images/powered_aws_dark_blue.png +0 -0
  218. {workbench-0.8.187 → workbench-0.8.189}/docs/images/powered_aws_transparent.png +0 -0
  219. {workbench-0.8.187 → workbench-0.8.189}/docs/images/powered_aws_white.png +0 -0
  220. {workbench-0.8.187 → workbench-0.8.189}/docs/images/powered_aws_with_tm_grey.png +0 -0
  221. {workbench-0.8.187 → workbench-0.8.189}/docs/images/scp.png +0 -0
  222. {workbench-0.8.187 → workbench-0.8.189}/docs/images/scp_labs.png +0 -0
  223. {workbench-0.8.187 → workbench-0.8.189}/docs/images/small_spider.png +0 -0
  224. {workbench-0.8.187 → workbench-0.8.189}/docs/images/workbench_concepts.png +0 -0
  225. {workbench-0.8.187 → workbench-0.8.189}/docs/index.md +0 -0
  226. {workbench-0.8.187 → workbench-0.8.189}/docs/lambda_layer/index.md +0 -0
  227. {workbench-0.8.187 → workbench-0.8.189}/docs/misc/faq.md +0 -0
  228. {workbench-0.8.187 → workbench-0.8.189}/docs/misc/general_info.md +0 -0
  229. {workbench-0.8.187 → workbench-0.8.189}/docs/misc/scp_consulting.md +0 -0
  230. {workbench-0.8.187 → workbench-0.8.189}/docs/misc/workbench_classes_concepts.md +0 -0
  231. {workbench-0.8.187 → workbench-0.8.189}/docs/model_utils/index.md +0 -0
  232. {workbench-0.8.187 → workbench-0.8.189}/docs/plugins/index.md +0 -0
  233. {workbench-0.8.187 → workbench-0.8.189}/docs/presentations/index.md +0 -0
  234. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_106.md +0 -0
  235. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_158.md +0 -0
  236. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_50.md +0 -0
  237. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_55.md +0 -0
  238. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_58.md +0 -0
  239. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_60.md +0 -0
  240. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_71.md +0 -0
  241. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_74.md +0 -0
  242. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/0_8_78.md +0 -0
  243. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_7_8.md +0 -0
  244. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_11.md +0 -0
  245. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_20.md +0 -0
  246. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_22.md +0 -0
  247. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_23.md +0 -0
  248. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_27.md +0 -0
  249. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_29.md +0 -0
  250. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_33.md +0 -0
  251. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_35.md +0 -0
  252. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_36.md +0 -0
  253. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_39.md +0 -0
  254. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_42.md +0 -0
  255. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_46.md +0 -0
  256. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_6.md +0 -0
  257. {workbench-0.8.187 → workbench-0.8.189}/docs/release_notes/archived/0_8_8.md +0 -0
  258. {workbench-0.8.187 → workbench-0.8.189}/docs/repl/index.md +0 -0
  259. {workbench-0.8.187 → workbench-0.8.189}/docs/road_maps/0_9_0.md +0 -0
  260. {workbench-0.8.187 → workbench-0.8.189}/docs/road_maps/0_9_5.md +0 -0
  261. {workbench-0.8.187 → workbench-0.8.189}/docs/themes/details.md +0 -0
  262. {workbench-0.8.187 → workbench-0.8.189}/docs/themes/index.md +0 -0
  263. {workbench-0.8.187 → workbench-0.8.189}/examples/ag-grid/hello_world.py +0 -0
  264. {workbench-0.8.187 → workbench-0.8.189}/examples/chem_utils/tautomerize_smiles.py +0 -0
  265. {workbench-0.8.187 → workbench-0.8.189}/examples/datasource/datasource_from_df.py +0 -0
  266. {workbench-0.8.187 → workbench-0.8.189}/examples/datasource/datasource_from_s3.py +0 -0
  267. {workbench-0.8.187 → workbench-0.8.189}/examples/datasource/datasource_query.py +0 -0
  268. {workbench-0.8.187 → workbench-0.8.189}/examples/datasource/datasource_stats.py +0 -0
  269. {workbench-0.8.187 → workbench-0.8.189}/examples/datasource/datasource_to_featureset.py +0 -0
  270. {workbench-0.8.187 → workbench-0.8.189}/examples/endpoint/endpoint_details.py +0 -0
  271. {workbench-0.8.187 → workbench-0.8.189}/examples/endpoint/endpoint_metrics.py +0 -0
  272. {workbench-0.8.187 → workbench-0.8.189}/examples/featureset/featureset_eda.py +0 -0
  273. {workbench-0.8.187 → workbench-0.8.189}/examples/featureset/featureset_query.py +0 -0
  274. {workbench-0.8.187 → workbench-0.8.189}/examples/glue_jobs/glue_example_1.py +0 -0
  275. {workbench-0.8.187 → workbench-0.8.189}/examples/glue_jobs/glue_example_2.py +0 -0
  276. {workbench-0.8.187 → workbench-0.8.189}/examples/glue_jobs/glue_example_3.py +0 -0
  277. {workbench-0.8.187 → workbench-0.8.189}/examples/glue_jobs/glue_launcher_examples/example_1.py +0 -0
  278. {workbench-0.8.187 → workbench-0.8.189}/examples/glue_jobs/glue_launcher_examples/example_2.py +0 -0
  279. {workbench-0.8.187 → workbench-0.8.189}/examples/meta/meta_list_endpoints.py +0 -0
  280. {workbench-0.8.187 → workbench-0.8.189}/examples/meta/meta_list_models.py +0 -0
  281. {workbench-0.8.187 → workbench-0.8.189}/examples/meta/meta_model_metrics.py +0 -0
  282. {workbench-0.8.187 → workbench-0.8.189}/examples/ml_pipelines/list_models.py +0 -0
  283. {workbench-0.8.187 → workbench-0.8.189}/examples/ml_pipelines/wine_classifier.py +0 -0
  284. {workbench-0.8.187 → workbench-0.8.189}/examples/model_utils/model_metrics.py +0 -0
  285. {workbench-0.8.187 → workbench-0.8.189}/examples/model_utils/model_to_endpoint.py +0 -0
  286. {workbench-0.8.187 → workbench-0.8.189}/examples/model_utils/onboard_model.py +0 -0
  287. {workbench-0.8.187 → workbench-0.8.189}/examples/models/custom_model.py +0 -0
  288. {workbench-0.8.187 → workbench-0.8.189}/examples/models/dbscan.py +0 -0
  289. {workbench-0.8.187 → workbench-0.8.189}/examples/models/knn.py +0 -0
  290. {workbench-0.8.187 → workbench-0.8.189}/examples/models/pytorch.py +0 -0
  291. {workbench-0.8.187 → workbench-0.8.189}/examples/models/random_forest.py +0 -0
  292. {workbench-0.8.187 → workbench-0.8.189}/examples/models/smiles_to_md_v1.py +0 -0
  293. {workbench-0.8.187 → workbench-0.8.189}/examples/models/uq/bayesian_ridge.py +0 -0
  294. {workbench-0.8.187 → workbench-0.8.189}/examples/models/uq/ensemble_xgb.py +0 -0
  295. {workbench-0.8.187 → workbench-0.8.189}/examples/models/uq/gaussian_process.py +0 -0
  296. {workbench-0.8.187 → workbench-0.8.189}/examples/models/uq/mapie.py +0 -0
  297. {workbench-0.8.187 → workbench-0.8.189}/examples/models/uq/meta_uq.py +0 -0
  298. {workbench-0.8.187 → workbench-0.8.189}/examples/models/uq/ngboost.py +0 -0
  299. {workbench-0.8.187 → workbench-0.8.189}/examples/models/uq/quant_xgb.py +0 -0
  300. {workbench-0.8.187 → workbench-0.8.189}/examples/monitor/monitor_setup.py +0 -0
  301. {workbench-0.8.187 → workbench-0.8.189}/examples/monitor/monitor_usage.py +0 -0
  302. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/branding/Readme.md +0 -0
  303. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/branding/scp.json +0 -0
  304. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/components/custom_plugin.py +0 -0
  305. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/components/endpoint_plugin.py +0 -0
  306. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/components/endpoint_turbo.py +0 -0
  307. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/components/model_markdown.py +0 -0
  308. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/components/model_plugin.py +0 -0
  309. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/packages/my_plugin_utils/__init__.py +0 -0
  310. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/packages/my_plugin_utils/assets/foo.json +0 -0
  311. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/packages/my_plugin_utils/cool_stuff.py +0 -0
  312. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/pages/plugin_page_1.py +0 -0
  313. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/pages/plugin_page_2.py +0 -0
  314. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/pages/plugin_page_3.py +0 -0
  315. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/templates/Readme.md +0 -0
  316. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/views/model_plugin_view.py +0 -0
  317. {workbench-0.8.187 → workbench-0.8.189}/examples/plugins/views/my_view_plugin.py +0 -0
  318. {workbench-0.8.187 → workbench-0.8.189}/examples/storage/data_to_data.py +0 -0
  319. {workbench-0.8.187 → workbench-0.8.189}/examples/storage/data_to_features.py +0 -0
  320. {workbench-0.8.187 → workbench-0.8.189}/examples/storage/endpoint_inference.py +0 -0
  321. {workbench-0.8.187 → workbench-0.8.189}/examples/storage/hello_world_pipeline.py +0 -0
  322. {workbench-0.8.187 → workbench-0.8.189}/examples/storage/plugin_page_example.py +0 -0
  323. {workbench-0.8.187 → workbench-0.8.189}/experiments/chem_info/bulk_sims.py +0 -0
  324. {workbench-0.8.187 → workbench-0.8.189}/experiments/chem_info/knn_sims.py +0 -0
  325. {workbench-0.8.187 → workbench-0.8.189}/experiments/chemprop_model.py +0 -0
  326. {workbench-0.8.187 → workbench-0.8.189}/experiments/confidence_roc_curve.py +0 -0
  327. {workbench-0.8.187 → workbench-0.8.189}/experiments/coverage_probability.py +0 -0
  328. {workbench-0.8.187 → workbench-0.8.189}/experiments/log_testing.py +0 -0
  329. {workbench-0.8.187 → workbench-0.8.189}/experiments/mapie_model.py +0 -0
  330. {workbench-0.8.187 → workbench-0.8.189}/experiments/neighbor_outliers.py +0 -0
  331. {workbench-0.8.187 → workbench-0.8.189}/experiments/networkx_id.py +0 -0
  332. {workbench-0.8.187 → workbench-0.8.189}/experiments/prediction_intervals.py +0 -0
  333. {workbench-0.8.187 → workbench-0.8.189}/experiments/pytorch_model.py +0 -0
  334. {workbench-0.8.187 → workbench-0.8.189}/experiments/quantile_regression.py +0 -0
  335. {workbench-0.8.187 → workbench-0.8.189}/experiments/quantile_regression_2.py +0 -0
  336. {workbench-0.8.187 → workbench-0.8.189}/experiments/regression_confidence.py +0 -0
  337. {workbench-0.8.187 → workbench-0.8.189}/experiments/residual_analysis.py +0 -0
  338. {workbench-0.8.187 → workbench-0.8.189}/experiments/rocauc_testing.py +0 -0
  339. {workbench-0.8.187 → workbench-0.8.189}/experiments/scatter_zoom_issue.py +0 -0
  340. {workbench-0.8.187 → workbench-0.8.189}/experiments/sol_pipeline.py +0 -0
  341. {workbench-0.8.187 → workbench-0.8.189}/glue_jobs/create_glue_workflow_with_trigger.py +0 -0
  342. {workbench-0.8.187 → workbench-0.8.189}/glue_jobs/example_glue_job.py +0 -0
  343. {workbench-0.8.187 → workbench-0.8.189}/glue_jobs/glue_job_pipeline.py +0 -0
  344. {workbench-0.8.187 → workbench-0.8.189}/glue_jobs/glue_mixed_case.py +0 -0
  345. {workbench-0.8.187 → workbench-0.8.189}/mkdocs.yml +0 -0
  346. {workbench-0.8.187 → workbench-0.8.189}/ml_pipelines/hyper_uq.py +0 -0
  347. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/Readme.md +0 -0
  348. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/inference/Dockerfile +0 -0
  349. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/inference/main.py +0 -0
  350. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/inference/requirements.txt +0 -0
  351. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/inference/serve +0 -0
  352. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/meta_endpoint/Dockerfile +0 -0
  353. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/meta_endpoint/main.py +0 -0
  354. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/meta_endpoint/requirements.txt +0 -0
  355. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/meta_endpoint/serve +0 -0
  356. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/ml_pipelines/ml_pipeline_runner.py +0 -0
  357. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/ml_pipelines/requirements.txt +0 -0
  358. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/pytorch_inference/Dockerfile +0 -0
  359. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/pytorch_inference/main.py +0 -0
  360. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/pytorch_inference/requirements.txt +0 -0
  361. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/pytorch_inference/serve +0 -0
  362. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/pytorch_training/Dockerfile +0 -0
  363. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/pytorch_training/requirements.txt +0 -0
  364. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/pytorch_training/sagemaker_entrypoint.py +0 -0
  365. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/scripts/build_deploy.sh +0 -0
  366. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/tests/data/abalone_sm.csv +0 -0
  367. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/tests/example_model_script.py +0 -0
  368. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/tests/run_tests.sh +0 -0
  369. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/tests/test_inference.py +0 -0
  370. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/tests/test_training.py +0 -0
  371. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/training/Dockerfile +0 -0
  372. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/training/requirements.txt +0 -0
  373. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/training/sagemaker_entrypoint.py +0 -0
  374. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/workbench_inference/Dockerfile +0 -0
  375. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/workbench_inference/main.py +0 -0
  376. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/workbench_inference/requirements.txt +0 -0
  377. {workbench-0.8.187 → workbench-0.8.189}/model_docker_images/workbench_inference/serve +0 -0
  378. {workbench-0.8.187 → workbench-0.8.189}/notebooks/ML_Pipeline_with_Workbench.ipynb +0 -0
  379. {workbench-0.8.187 → workbench-0.8.189}/notebooks/Outliers_in_Workbench.ipynb +0 -0
  380. {workbench-0.8.187 → workbench-0.8.189}/notebooks/Regression_Confidence_Experiments.ipynb +0 -0
  381. {workbench-0.8.187 → workbench-0.8.189}/notebooks/Residual_Analysis.ipynb +0 -0
  382. {workbench-0.8.187 → workbench-0.8.189}/notebooks/images/athena_query_aqsol.png +0 -0
  383. {workbench-0.8.187 → workbench-0.8.189}/notebooks/images/aws_dashboard_aqsol.png +0 -0
  384. {workbench-0.8.187 → workbench-0.8.189}/notebooks/images/dashboard_aqsol_features.png +0 -0
  385. {workbench-0.8.187 → workbench-0.8.189}/notebooks/images/model_screenshot.png +0 -0
  386. {workbench-0.8.187 → workbench-0.8.189}/notebooks/images/scp_labs.png +0 -0
  387. {workbench-0.8.187 → workbench-0.8.189}/presentations/README.md +0 -0
  388. {workbench-0.8.187 → workbench-0.8.189}/pyproject.toml +0 -0
  389. {workbench-0.8.187 → workbench-0.8.189}/scripts/active_logs.sh +0 -0
  390. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/athena_ddl_mixed_case.py +0 -0
  391. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/check_all_glue_tables.py +0 -0
  392. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/db_scan_test.py +0 -0
  393. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/delete_invalid_views.py +0 -0
  394. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/delete_redis_keys.py +0 -0
  395. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/list_datacatalog.py +0 -0
  396. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/migration/copy_glue_database.py +0 -0
  397. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/migration/delete_sageworks_glue_database.sh +0 -0
  398. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/migration/ds_migrate.py +0 -0
  399. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/migration/endpoint_migrate.py +0 -0
  400. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/migration/fs_migrate.py +0 -0
  401. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/migration/model_migrate.py +0 -0
  402. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/pull_image_digest.py +0 -0
  403. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/redis_reaper.py +0 -0
  404. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/spam_list_tags.py +0 -0
  405. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/storage/convert_training_views.py +0 -0
  406. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/storage/migrate_data_source_via_df.py +0 -0
  407. {workbench-0.8.187 → workbench-0.8.189}/scripts/admin/storage/migrate_ds_meta.py +0 -0
  408. {workbench-0.8.187 → workbench-0.8.189}/scripts/ag_table_row_selection.py +0 -0
  409. {workbench-0.8.187 → workbench-0.8.189}/scripts/compare_dataframes.py +0 -0
  410. {workbench-0.8.187 → workbench-0.8.189}/scripts/compare_model_packages.py +0 -0
  411. {workbench-0.8.187 → workbench-0.8.189}/scripts/delete_data_capture.py +0 -0
  412. {workbench-0.8.187 → workbench-0.8.189}/scripts/endpoint_timing.py +0 -0
  413. {workbench-0.8.187 → workbench-0.8.189}/scripts/find_smiles_issues.py +0 -0
  414. {workbench-0.8.187 → workbench-0.8.189}/scripts/get_tags.py +0 -0
  415. {workbench-0.8.187 → workbench-0.8.189}/scripts/instantiation_timings.py +0 -0
  416. {workbench-0.8.187 → workbench-0.8.189}/scripts/llm_deploys/deepseek_deploy.py +0 -0
  417. {workbench-0.8.187 → workbench-0.8.189}/scripts/model_cache_refresh.py +0 -0
  418. {workbench-0.8.187 → workbench-0.8.189}/scripts/model_endpoint_sanity_check.py +0 -0
  419. {workbench-0.8.187 → workbench-0.8.189}/scripts/monitor_event_bridge.py +0 -0
  420. {workbench-0.8.187 → workbench-0.8.189}/scripts/onboard_endpoints.py +0 -0
  421. {workbench-0.8.187 → workbench-0.8.189}/scripts/onboard_models.py +0 -0
  422. {workbench-0.8.187 → workbench-0.8.189}/scripts/pipeline_model_endpoint.py +0 -0
  423. {workbench-0.8.187 → workbench-0.8.189}/scripts/pubchem/pubchem_example.py +0 -0
  424. {workbench-0.8.187 → workbench-0.8.189}/scripts/pubchem/pubchem_query.py +0 -0
  425. {workbench-0.8.187 → workbench-0.8.189}/scripts/pubchem/pubchem_query_with_cid.py +0 -0
  426. {workbench-0.8.187 → workbench-0.8.189}/scripts/sagemaker_feature_group_issue.py +0 -0
  427. {workbench-0.8.187 → workbench-0.8.189}/scripts/seaborn_to_plotly.py +0 -0
  428. {workbench-0.8.187 → workbench-0.8.189}/scripts/storage/dns_data_to_features.py +0 -0
  429. {workbench-0.8.187 → workbench-0.8.189}/scripts/storage/generate_jsonl_data.py +0 -0
  430. {workbench-0.8.187 → workbench-0.8.189}/scripts/test_feature_resolution.py +0 -0
  431. {workbench-0.8.187 → workbench-0.8.189}/scripts/test_feature_set_creation.py +0 -0
  432. {workbench-0.8.187 → workbench-0.8.189}/scripts/test_no_workbench_config.py +0 -0
  433. {workbench-0.8.187 → workbench-0.8.189}/scripts/tox21/test_tox_heuristic.py +0 -0
  434. {workbench-0.8.187 → workbench-0.8.189}/scripts/tox21/tox21_to_df_store.py +0 -0
  435. {workbench-0.8.187 → workbench-0.8.189}/setup.cfg +0 -0
  436. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/__init__.py +0 -0
  437. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/__init__.py +0 -0
  438. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/Readme.md +0 -0
  439. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/__init__.py +0 -0
  440. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/data_source_eda.py +0 -0
  441. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/feature_space_proximity.py +0 -0
  442. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/fingerprint_proximity.py +0 -0
  443. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/projection_2d.py +0 -0
  444. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/proximity.py +0 -0
  445. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/storage/aggregation.py +0 -0
  446. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/storage/feature_resolution.py +0 -0
  447. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/storage/feature_spider.py +0 -0
  448. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/storage/residuals_calculator.py +0 -0
  449. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/storage/row_tagger.py +0 -0
  450. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/dataframe/storage/target_gradients.py +0 -0
  451. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/graph/__init__.py +0 -0
  452. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/graph/heavy/Readme.md +0 -0
  453. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/graph/light/Readme.md +0 -0
  454. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/graph/light/__init__.py +0 -0
  455. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/graph/light/proximity_graph.py +0 -0
  456. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/spark/Readme.md +0 -0
  457. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/sql/Readme.md +0 -0
  458. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/sql/__init__.py +0 -0
  459. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/sql/column_stats.py +0 -0
  460. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/sql/correlations.py +0 -0
  461. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/sql/descriptive_stats.py +0 -0
  462. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/sql/outliers.py +0 -0
  463. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/sql/sample_rows.py +0 -0
  464. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/algorithms/sql/value_counts.py +0 -0
  465. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/__init__.py +0 -0
  466. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/compound.py +0 -0
  467. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/data_source.py +0 -0
  468. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/df_store.py +0 -0
  469. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/endpoint.py +0 -0
  470. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/feature_set.py +0 -0
  471. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/graph_store.py +0 -0
  472. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/meta.py +0 -0
  473. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/model.py +0 -0
  474. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/monitor.py +0 -0
  475. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/parameter_store.py +0 -0
  476. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/api/pipeline.py +0 -0
  477. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/cached/__init__.py +0 -0
  478. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/cached/cached_data_source.py +0 -0
  479. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/cached/cached_endpoint.py +0 -0
  480. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/cached/cached_feature_set.py +0 -0
  481. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/cached/cached_meta.py +0 -0
  482. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/cached/cached_model.py +0 -0
  483. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/cached/cached_pipeline.py +0 -0
  484. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/__init__.py +0 -0
  485. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/__init__.py +0 -0
  486. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/artifact.py +0 -0
  487. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/athena_source.py +0 -0
  488. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/cached_artifact_mixin.py +0 -0
  489. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/data_capture_core.py +0 -0
  490. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/data_source_abstract.py +0 -0
  491. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/data_source_factory.py +0 -0
  492. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/artifacts/monitor_core.py +0 -0
  493. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/README.md +0 -0
  494. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/aws_account_clamp.py +0 -0
  495. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/aws_df_store.py +0 -0
  496. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/aws_graph_store.py +0 -0
  497. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/aws_meta.py +0 -0
  498. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/aws_parameter_store.py +0 -0
  499. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/aws_secrets_manager.py +0 -0
  500. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/aws_session.py +0 -0
  501. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/aws/cache_dataframe.py +0 -0
  502. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/azure/README.md +0 -0
  503. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/cloud_meta.py +0 -0
  504. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/cloud_platform/gcp/README.md +0 -0
  505. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/pipelines/pipeline_executor.py +0 -0
  506. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/Readme.md +0 -0
  507. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/__init__.py +0 -0
  508. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_loaders/__init__.py +0 -0
  509. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_loaders/heavy/__init__.py +0 -0
  510. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_loaders/heavy/s3_heavy_to_data_source.py +0 -0
  511. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_loaders/light/__init__.py +0 -0
  512. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_loaders/light/csv_to_data_source.py +0 -0
  513. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_loaders/light/json_to_data_source.py +0 -0
  514. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_loaders/light/s3_to_data_source_light.py +0 -0
  515. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_data/__init__.py +0 -0
  516. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_data/heavy/__init__.py +0 -0
  517. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_data/heavy/emr/Readme.md +0 -0
  518. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_data/heavy/glue/Readme.md +0 -0
  519. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_data/light/__init__.py +0 -0
  520. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_data/light/clean_data.py +0 -0
  521. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_data/light/data_to_data_light.py +0 -0
  522. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/__init__.py +0 -0
  523. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/heavy/__init__.py +0 -0
  524. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/heavy/chunk/__init__.py +0 -0
  525. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/heavy/chunk/data_to_features_chunk.py +0 -0
  526. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/heavy/emr/Readme.md +0 -0
  527. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/heavy/glue/Readme.md +0 -0
  528. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/heavy/storage/data_to_features_heavy_old.py +0 -0
  529. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/light/__init__.py +0 -0
  530. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/light/data_to_features_light.py +0 -0
  531. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/data_to_features/light/molecular_descriptors.py +0 -0
  532. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/features_to_features/__init__.py +0 -0
  533. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/features_to_features/heavy/emr/Readme.md +0 -0
  534. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/features_to_features/heavy/glue/Readme.md +0 -0
  535. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/features_to_model/__init__.py +0 -0
  536. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/model_to_endpoint/__init__.py +0 -0
  537. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/model_to_endpoint/model_to_endpoint.py +0 -0
  538. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/pandas_transforms/__init__.py +0 -0
  539. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/pandas_transforms/data_to_pandas.py +0 -0
  540. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/pandas_transforms/features_to_pandas.py +0 -0
  541. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/pandas_transforms/pandas_to_data.py +0 -0
  542. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/pandas_transforms/pandas_to_features.py +0 -0
  543. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/pandas_transforms/pandas_to_features_chunked.py +0 -0
  544. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/transforms/transform.py +0 -0
  545. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/__init__.py +0 -0
  546. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/column_subset_view.py +0 -0
  547. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/computation_view.py +0 -0
  548. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/create_view.py +0 -0
  549. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/display_view.py +0 -0
  550. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/inference_view.py +0 -0
  551. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/pandas_to_view.py +0 -0
  552. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/core/views/storage/mdq_view.py +0 -0
  553. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/chem_info/Readme.md +0 -0
  554. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/chem_info/mol_descriptors.py +0 -0
  555. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/chem_info/mol_standardize.py +0 -0
  556. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/chem_info/molecular_descriptors.py +0 -0
  557. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/chem_info/morgan_fingerprints.py +0 -0
  558. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/chem_info/requirements.txt +0 -0
  559. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/meta_endpoints/example.py +0 -0
  560. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/network_security/Readme.md +0 -0
  561. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/proximity/Readme.md +0 -0
  562. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/proximity/feature_space_proximity.template +0 -0
  563. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/proximity/generated_model_script.py +0 -0
  564. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/proximity/proximity.py +0 -0
  565. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/proximity/requirements.txt +0 -0
  566. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/Readme.md +0 -0
  567. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/bayesian_ridge.template +0 -0
  568. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/ensemble_xgb.template +0 -0
  569. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/gaussian_process.template +0 -0
  570. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/generated_model_script.py +0 -0
  571. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/meta_uq.template +0 -0
  572. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/ngboost.template +0 -0
  573. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/proximity.py +0 -0
  574. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_models/uq_models/requirements.txt +0 -0
  575. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_script_example/custom_model_script.py +0 -0
  576. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/custom_script_example/requirements.txt +0 -0
  577. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/ensemble_xgb/ensemble_xgb.template +0 -0
  578. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/ensemble_xgb/generated_model_script.py +0 -0
  579. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/ensemble_xgb/requirements.txt +0 -0
  580. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/pytorch_model/generated_model_script.py +0 -0
  581. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/pytorch_model/pytorch.template +0 -0
  582. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/pytorch_model/requirements.txt +0 -0
  583. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/scikit_learn/generated_model_script.py +0 -0
  584. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/scikit_learn/requirements.txt +0 -0
  585. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/scikit_learn/scikit_learn.template +0 -0
  586. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/script_generation.py +0 -0
  587. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/uq_models/generated_model_script.py +0 -0
  588. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/uq_models/mapie.template +0 -0
  589. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/uq_models/requirements.txt +0 -0
  590. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/xgb_model/requirements.txt +0 -0
  591. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/model_scripts/xgb_model/xgb_model.template +0 -0
  592. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/repl/__init__.py +0 -0
  593. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/repl/workbench_shell.py +0 -0
  594. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/resources/open_source_api.key +0 -0
  595. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/resources/signature_verify_pub.pem +0 -0
  596. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/check_double_bond_stereo.py +0 -0
  597. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/glue_launcher.py +0 -0
  598. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/lambda_launcher.py +0 -0
  599. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/ml_pipeline_batch.py +0 -0
  600. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/ml_pipeline_sqs.py +0 -0
  601. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/monitor_cloud_watch.py +0 -0
  602. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/redis_expire.py +0 -0
  603. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/redis_report.py +0 -0
  604. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/scripts/show_config.py +0 -0
  605. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/dark/base_css.url +0 -0
  606. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/dark/custom.css +0 -0
  607. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/dark/plotly.json +0 -0
  608. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/light/base_css.url +0 -0
  609. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/light/branding.json +0 -0
  610. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/light/custom.css +0 -0
  611. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/light/plotly.json +0 -0
  612. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/midnight_blue/base_css.url +0 -0
  613. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/midnight_blue/branding.json +0 -0
  614. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/midnight_blue/custom.css +0 -0
  615. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/midnight_blue/plotly.json +0 -0
  616. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/quartz/base_css.url +0 -0
  617. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/quartz/custom.css +0 -0
  618. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/quartz/plotly.json +0 -0
  619. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/quartz_dark/base_css.url +0 -0
  620. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/quartz_dark/custom.css +0 -0
  621. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/themes/quartz_dark/plotly.json +0 -0
  622. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/__init__.py +0 -0
  623. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/ai_compound_generator.py +0 -0
  624. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/ai_summary.py +0 -0
  625. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/ai_synth.py +0 -0
  626. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/athena_utils.py +0 -0
  627. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/aws_utils.py +0 -0
  628. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/bulk_utils.py +0 -0
  629. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/cache.py +0 -0
  630. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/__init__.py +0 -0
  631. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/fingerprints.py +0 -0
  632. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/misc.py +0 -0
  633. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/mol_descriptors.py +0 -0
  634. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/mol_standardize.py +0 -0
  635. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/mol_tagging.py +0 -0
  636. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/projections.py +0 -0
  637. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/salts.py +0 -0
  638. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/sdf.py +0 -0
  639. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/toxicity.py +0 -0
  640. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/chem_utils/vis.py +0 -0
  641. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/cloudwatch_handler.py +0 -0
  642. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/cloudwatch_utils.py +0 -0
  643. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/color_utils.py +0 -0
  644. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/config_manager.py +0 -0
  645. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/dashboard_metrics.py +0 -0
  646. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/datetime_utils.py +0 -0
  647. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/deprecated_utils.py +0 -0
  648. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/df_to_endpoint.py +0 -0
  649. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/ecs_info.py +0 -0
  650. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/endpoint_metrics.py +0 -0
  651. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/extract_model_artifact.py +0 -0
  652. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/glue_utils.py +0 -0
  653. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/graph_utils.py +0 -0
  654. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/ipython_utils.py +0 -0
  655. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/json_utils.py +0 -0
  656. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/lambda_utils.py +0 -0
  657. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/license_manager.py +0 -0
  658. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/log_utils.py +0 -0
  659. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/markdown_utils.py +0 -0
  660. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/monitor_utils.py +0 -0
  661. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/pandas_utils.py +0 -0
  662. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/performance_utils.py +0 -0
  663. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/pipeline_utils.py +0 -0
  664. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/plot_utils.py +0 -0
  665. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/plugin_manager.py +0 -0
  666. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/prox_utils.py +0 -0
  667. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/redis_cache.py +0 -0
  668. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/repl_utils.py +0 -0
  669. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/s3_utils.py +0 -0
  670. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/shap_utils.py +0 -0
  671. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/shapley_values.py +0 -0
  672. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/symbols.py +0 -0
  673. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/test_data_generator.py +0 -0
  674. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/theme_manager.py +0 -0
  675. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/trace_calls.py +0 -0
  676. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/type_abbrev.py +0 -0
  677. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/workbench_cache.py +0 -0
  678. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/workbench_event_bridge.py +0 -0
  679. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/workbench_logging.py +0 -0
  680. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/utils/workbench_sqs.py +0 -0
  681. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/component_interface.py +0 -0
  682. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/correlation_matrix.py +0 -0
  683. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/data_details_markdown.py +0 -0
  684. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/endpoint_metric_plots.py +0 -0
  685. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/experiments/dashboard_metric_plots.py +0 -0
  686. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/experiments/outlier_plot.py +0 -0
  687. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/model_plot.py +0 -0
  688. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugin_interface.py +0 -0
  689. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugin_unit_test.py +0 -0
  690. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/ag_table.py +0 -0
  691. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/confusion_matrix.py +0 -0
  692. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/dashboard_status.py +0 -0
  693. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/data_details.py +0 -0
  694. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/endpoint_details.py +0 -0
  695. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/generated_compounds.py +0 -0
  696. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/graph_plot.py +0 -0
  697. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/license_details.py +0 -0
  698. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/model_details.py +0 -0
  699. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/molecule_panel.py +0 -0
  700. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/molecule_viewer.py +0 -0
  701. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/pipeline_details.py +0 -0
  702. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/proximity_mini_graph.py +0 -0
  703. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/scatter_plot.py +0 -0
  704. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/plugins/shap_summary_plot.py +0 -0
  705. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/regression_plot.py +0 -0
  706. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/components/violin_plots.py +0 -0
  707. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/page_views/data_sources_page_view.py +0 -0
  708. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/page_views/endpoints_page_view.py +0 -0
  709. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/page_views/feature_sets_page_view.py +0 -0
  710. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/page_views/main_page.py +0 -0
  711. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/page_views/models_page_view.py +0 -0
  712. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/page_views/page_view.py +0 -0
  713. {workbench-0.8.187 → workbench-0.8.189}/src/workbench/web_interface/page_views/pipelines_page_view.py +0 -0
  714. {workbench-0.8.187 → workbench-0.8.189}/src/workbench.egg-info/SOURCES.txt +0 -0
  715. {workbench-0.8.187 → workbench-0.8.189}/src/workbench.egg-info/dependency_links.txt +0 -0
  716. {workbench-0.8.187 → workbench-0.8.189}/src/workbench.egg-info/entry_points.txt +0 -0
  717. {workbench-0.8.187 → workbench-0.8.189}/src/workbench.egg-info/requires.txt +0 -0
  718. {workbench-0.8.187 → workbench-0.8.189}/src/workbench.egg-info/top_level.txt +0 -0
  719. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/100_percent_models.py +0 -0
  720. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_aqsol_artifacts.py +0 -0
  721. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_aqsol_rt_artifacts.py +0 -0
  722. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_aqsol_uq_artifacts.py +0 -0
  723. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_basic_test_artifacts.py +0 -0
  724. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_copy_artifacts.py +0 -0
  725. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_empty_model_group.py +0 -0
  726. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_endpoints_for_timing.py +0 -0
  727. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_graph_artifacts.py +0 -0
  728. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_knn_artifacts.py +0 -0
  729. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_meta_endpoints.py +0 -0
  730. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_pipeline_model.py +0 -0
  731. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_proximity_models.py +0 -0
  732. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_quant_regression_artifacts.py +0 -0
  733. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_realtime_endpoint.py +0 -0
  734. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_training_adjusted_artifacts.py +0 -0
  735. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/create_wine_artifacts.py +0 -0
  736. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/delete_stress_test_artifacts.py +0 -0
  737. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/delete_test_artifacts.py +0 -0
  738. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/hyper_testing.py +0 -0
  739. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/hyper_uq_testing.py +0 -0
  740. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/regression_ensemble.py +0 -0
  741. {workbench-0.8.187 → workbench-0.8.189}/test_artifacts/stress_test_aws.py +0 -0
  742. {workbench-0.8.187 → workbench-0.8.189}/tests/README.md +0 -0
  743. {workbench-0.8.187 → workbench-0.8.189}/tests/artifacts/data_source_tests.py +0 -0
  744. {workbench-0.8.187 → workbench-0.8.189}/tests/artifacts/empty_model_group.py +0 -0
  745. {workbench-0.8.187 → workbench-0.8.189}/tests/artifacts/featureset_ingest_boundaries.py +0 -0
  746. {workbench-0.8.187 → workbench-0.8.189}/tests/artifacts/featureset_tests.py +0 -0
  747. {workbench-0.8.187 → workbench-0.8.189}/tests/artifacts/graph_tests.py +0 -0
  748. {workbench-0.8.187 → workbench-0.8.189}/tests/artifacts/model_metrics_tests.py +0 -0
  749. {workbench-0.8.187 → workbench-0.8.189}/tests/artifacts/model_tests.py +0 -0
  750. {workbench-0.8.187 → workbench-0.8.189}/tests/aws_account/aws_account_clamp_tests.py +0 -0
  751. {workbench-0.8.187 → workbench-0.8.189}/tests/cached/cached_artifact_tests.py +0 -0
  752. {workbench-0.8.187 → workbench-0.8.189}/tests/chem_info/test_tautomerization.py +0 -0
  753. {workbench-0.8.187 → workbench-0.8.189}/tests/corner_cases/end_to_end.py +0 -0
  754. {workbench-0.8.187 → workbench-0.8.189}/tests/df_store/df_store_tests.py +0 -0
  755. {workbench-0.8.187 → workbench-0.8.189}/tests/lambda/decompress_layers.py +0 -0
  756. {workbench-0.8.187 → workbench-0.8.189}/tests/pandas_tests/test_drift.py +0 -0
  757. {workbench-0.8.187 → workbench-0.8.189}/tests/parameter_store/param_store_tests.py +0 -0
  758. {workbench-0.8.187 → workbench-0.8.189}/tests/plugin_tests/crashing_plugin.py +0 -0
  759. {workbench-0.8.187 → workbench-0.8.189}/tests/pytorch/pytorch_hello.py +0 -0
  760. {workbench-0.8.187 → workbench-0.8.189}/tests/requirements-dev.txt +0 -0
  761. {workbench-0.8.187 → workbench-0.8.189}/tests/specific/capital_tests.py +0 -0
  762. {workbench-0.8.187 → workbench-0.8.189}/tests/specific/column_changes.py +0 -0
  763. {workbench-0.8.187 → workbench-0.8.189}/tests/specific/config_manager.py +0 -0
  764. {workbench-0.8.187 → workbench-0.8.189}/tests/specific/deletion_tests.py +0 -0
  765. {workbench-0.8.187 → workbench-0.8.189}/tests/specific/shap_tests.py +0 -0
  766. {workbench-0.8.187 → workbench-0.8.189}/tests/transforms/data_to_data_tests.py +0 -0
  767. {workbench-0.8.187 → workbench-0.8.189}/tests/transforms/data_to_features_tests.py +0 -0
  768. {workbench-0.8.187 → workbench-0.8.189}/tests/transforms/features_to_model_tests.py +0 -0
  769. {workbench-0.8.187 → workbench-0.8.189}/tests/transforms/model_to_endpoint_tests.py +0 -0
  770. {workbench-0.8.187 → workbench-0.8.189}/tests/transforms/pandas_to_data_tests.py +0 -0
  771. {workbench-0.8.187 → workbench-0.8.189}/tests/transforms/pandas_to_features_test.py +0 -0
  772. {workbench-0.8.187 → workbench-0.8.189}/tests/views/view_tests.py +0 -0
  773. {workbench-0.8.187 → workbench-0.8.189}/tests/views/view_tests_complex.py +0 -0
  774. {workbench-0.8.187 → workbench-0.8.189}/tests/web_components/confusion_matrix_test.py +0 -0
  775. {workbench-0.8.187 → workbench-0.8.189}/tests/web_components/correlation_matrix_test.py +0 -0
  776. {workbench-0.8.187 → workbench-0.8.189}/tests/web_components/graph_plot_test.py +0 -0
  777. {workbench-0.8.187 → workbench-0.8.189}/tests/web_components/plugin_interface_test.py +0 -0
  778. {workbench-0.8.187 → workbench-0.8.189}/tests/web_components/scatter_plot_test.py +0 -0
  779. {workbench-0.8.187 → workbench-0.8.189}/tox.ini +0 -0
  780. {workbench-0.8.187 → workbench-0.8.189}/ui_testing/assets/custom.css +0 -0
  781. {workbench-0.8.187 → workbench-0.8.189}/ui_testing/table_comparison.py +0 -0
  782. {workbench-0.8.187 → workbench-0.8.189}/ui_testing/theme_switching.py +0 -0
  783. {workbench-0.8.187 → workbench-0.8.189}/ui_testing/theme_switching_2.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: workbench
3
- Version: 0.8.187
3
+ Version: 0.8.189
4
4
  Summary: Workbench: A Dashboard and Python API for creating and deploying AWS SageMaker Model Pipelines
5
5
  Author-email: SuperCowPowers LLC <support@supercowpowers.com>
6
6
  License-Expression: MIT
@@ -208,7 +208,7 @@ class WorkbenchComputeStack(Stack):
208
208
  # Connect SQS to Lambda
209
209
  batch_trigger_lambda.add_event_source(
210
210
  lambda_events.SqsEventSource(
211
- self.ml_pipeline_queue, batch_size=1, max_concurrency=5 # Limit parallel Batch job submissions
211
+ self.ml_pipeline_queue, batch_size=1 # One message at a time for precise error handling
212
212
  )
213
213
  )
214
214
  return batch_trigger_lambda
@@ -11,19 +11,15 @@
11
11
  **Run Inference on an Endpoint**
12
12
 
13
13
  ```py title="endpoint_inference.py"
14
- from workbench.api.feature_set import FeatureSet
15
- from workbench.api.model import Model
16
- from workbench.api.endpoint import Endpoint
14
+ from workbench.api import Endpoint
15
+ from workbench.utils.endpoint_utils import get_evaluation_data
17
16
 
18
17
  # Grab an existing Endpoint
19
18
  endpoint = Endpoint("abalone-regression-end")
20
19
 
21
20
  # Workbench has full ML Pipeline provenance, so we can backtrack the inputs,
22
21
  # get a DataFrame of data (not used for training) and run inference
23
- model = Model(endpoint.get_input())
24
- fs = FeatureSet(model.get_input())
25
- athena_table = fs.view("training").table
26
- df = fs.query(f"SELECT * FROM {athena_table} where training = FALSE")
22
+ df = get_evaluation_data(endpoint)
27
23
 
28
24
  # Run inference/predictions on the Endpoint
29
25
  results_df = endpoint.inference(df)
@@ -17,10 +17,7 @@ These classes provide high-level APIs for the Workbench package, they enable you
17
17
  ## Example ML Pipline
18
18
 
19
19
  ```py title="full_ml_pipeline.py"
20
- from workbench.api.data_source import DataSource
21
- from workbench.api.feature_set import FeatureSet
22
- from workbench.api.model import Model, ModelType
23
- from workbench.api.endpoint import Endpoint
20
+ from workbench.api import DataSource, FeatureSet, Model, ModelType, Endpoint
24
21
 
25
22
  # Create the abalone_data DataSource
26
23
  ds = DataSource("s3://workbench-public-data/common/abalone.csv")
@@ -46,9 +43,7 @@ model.to_endpoint(name="abalone-regression-end", tags=["abalone", "regression"])
46
43
  endpoint = Endpoint("abalone-regression-end")
47
44
 
48
45
  # Run inference on the Endpoint
49
- athena_table = fs.view("training").table
50
- df = fs.query(f"SELECT * FROM {athena_table} where training = FALSE")
51
- results = endpoint.predict(df)
46
+ results = endpoint.auto_inference()
52
47
  print(results[["class_number_of_rings", "prediction"]])
53
48
  ```
54
49
 
@@ -49,10 +49,10 @@ from workbench.api.feature_set import FeatureSet
49
49
 
50
50
  # Grab a FeatureSet View
51
51
  fs = FeatureSet("abalone_features")
52
- t_view = fs.view("training")
52
+ d_view = fs.view("display")
53
53
 
54
54
  # Make some queries using the Athena backend
55
- df = t_view(f"select * from {t_view.table} where height > .3")
55
+ df = d_view(f"select * from {d_view.table} where height > .3")
56
56
  print(df.head())
57
57
 
58
58
  df = t_view.query("select * from abalone_features where class_number_of_rings < 3")
@@ -57,10 +57,10 @@ from workbench.api.feature_set import FeatureSet
57
57
 
58
58
  # Grab a FeatureSet View
59
59
  fs = FeatureSet("abalone_features")
60
- t_view = fs.view("training")
60
+ d_view = fs.view("display")
61
61
 
62
62
  # Make some queries using the Athena backend
63
- df = t_view(f"select * from {t_view.table} where height > .3")
63
+ df = t_view(f"select * from {d_view.table} where height > .3")
64
64
  print(df.head())
65
65
 
66
66
  df = t_view.query("select * from abalone_features where class_number_of_rings < 3")
@@ -1,16 +1,12 @@
1
- from workbench.api.feature_set import FeatureSet
2
- from workbench.api.model import Model
3
- from workbench.api.endpoint import Endpoint
1
+ from workbench.api import Endpoint
2
+ from workbench.utils.endpoint_utils import get_evaluation_data
4
3
 
5
4
  # Grab an existing Endpoint
6
5
  endpoint = Endpoint("abalone-regression")
7
6
 
8
7
  # Workbench has full ML Pipeline provenance, so we can backtrack the inputs,
9
8
  # get a DataFrame of data (not used for training) and run inference
10
- model = Model(endpoint.get_input())
11
- fs = FeatureSet(model.get_input())
12
- athena_table = fs.view("training").table
13
- df = fs.query(f"SELECT * FROM {athena_table} where training = FALSE")
9
+ df = get_evaluation_data(endpoint)
14
10
 
15
11
  # Run inference/predictions on the Endpoint
16
12
  results_df = endpoint.inference(df)
@@ -44,7 +44,5 @@ if __name__ == "__main__":
44
44
  endpoint = Endpoint("abalone-regression")
45
45
 
46
46
  # Run inference on the Endpoint
47
- athena_table = fs.view("training").table
48
- df = fs.query(f"SELECT * FROM {athena_table} where training = FALSE")
49
- results = endpoint.inference(df)
47
+ results = endpoint.auto_inference()
50
48
  print(results[["class_number_of_rings", "prediction"]])
@@ -29,7 +29,7 @@ COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/pytho
29
29
  COPY --from=builder /usr/local/bin /usr/local/bin
30
30
 
31
31
  # Install workbench only
32
- RUN pip install --no-cache-dir workbench==0.8.186
32
+ RUN pip install --no-cache-dir workbench==0.8.188
33
33
 
34
34
  # Add the script runner
35
35
  COPY ml_pipeline_runner.py /app/ml_pipeline_runner.py
@@ -63,8 +63,8 @@
63
63
  "# Grab the evaluation data\n",
64
64
  "from workbench.api.feature_set import FeatureSet\n",
65
65
  "fs = FeatureSet(\"solubility_featurized_fs\")\n",
66
- "training_view = fs.view(\"training\").table\n",
67
- "eval_data = fs.query(f\"select * from {training_view} where training=0\")"
66
+ "table = model.training_view().table\n",
67
+ "eval_data = fs.query(f\"select * from {table} where training=0\")"
68
68
  ]
69
69
  },
70
70
  {
@@ -316,7 +316,7 @@
316
316
  "id": "a12b00ea",
317
317
  "metadata": {},
318
318
  "source": [
319
- "table = fs.view(\"training\").table\n",
319
+ "table = model.training_view().table\n",
320
320
  "test_df = fs.query(f\"select * from {table} where training=0\")\n",
321
321
  "test_df.head()"
322
322
  ],
@@ -356,7 +356,7 @@ class EndpointCore(Artifact):
356
356
  return pd.DataFrame()
357
357
 
358
358
  # Grab the evaluation data from the FeatureSet
359
- table = fs.view("training").table
359
+ table = model.training_view().table
360
360
  eval_df = fs.query(f'SELECT * FROM "{table}" where training = FALSE')
361
361
  capture_name = "auto_inference" if capture else None
362
362
  return self.inference(eval_df, capture_name, id_column=fs.id_column)
@@ -472,7 +472,7 @@ class EndpointCore(Artifact):
472
472
  self.log.important("UQ Regressor detected, running full inference to get uncertainty estimates...")
473
473
 
474
474
  # Get the training view dataframe for inference
475
- training_df = fs.view("training").pull_dataframe()
475
+ training_df = model.training_view().pull_dataframe()
476
476
 
477
477
  # Run inference on the endpoint to get UQ outputs
478
478
  uq_df = self.inference(training_df)
@@ -1103,7 +1103,7 @@ class EndpointCore(Artifact):
1103
1103
  if __name__ == "__main__":
1104
1104
  """Exercise the Endpoint Class"""
1105
1105
  from workbench.api import FeatureSet
1106
- from workbench.utils.endpoint_utils import fs_evaluation_data
1106
+ from workbench.utils.endpoint_utils import get_evaluation_data
1107
1107
  import random
1108
1108
 
1109
1109
  # Grab an EndpointCore object and pull some information from it
@@ -1111,7 +1111,7 @@ if __name__ == "__main__":
1111
1111
 
1112
1112
  # Test various error conditions (set row 42 length to pd.NA)
1113
1113
  # Note: This test should return ALL rows
1114
- my_eval_df = fs_evaluation_data(my_endpoint)
1114
+ my_eval_df = get_evaluation_data(my_endpoint)
1115
1115
  my_eval_df.at[42, "length"] = pd.NA
1116
1116
  pred_results = my_endpoint.inference(my_eval_df, drop_error_rows=True)
1117
1117
  print(f"Sent rows: {len(my_eval_df)}")
@@ -1182,11 +1182,11 @@ if __name__ == "__main__":
1182
1182
  # Run Inference where we provide the data
1183
1183
  # Note: This dataframe could be from a FeatureSet or any other source
1184
1184
  print("Running Inference...")
1185
- my_eval_df = fs_evaluation_data(my_endpoint)
1185
+ my_eval_df = get_evaluation_data(my_endpoint)
1186
1186
  pred_results = my_endpoint.inference(my_eval_df)
1187
1187
 
1188
1188
  # Now set capture=True to save inference results and metrics
1189
- my_eval_df = fs_evaluation_data(my_endpoint)
1189
+ my_eval_df = get_evaluation_data(my_endpoint)
1190
1190
  pred_results = my_endpoint.inference(my_eval_df, capture_name="holdout_xyz")
1191
1191
 
1192
1192
  # Run predictions using the fast_inference method
@@ -194,24 +194,24 @@ class FeatureSetCore(Artifact):
194
194
 
195
195
  return View(self, view_name)
196
196
 
197
- def set_display_columns(self, diplay_columns: list[str]):
197
+ def set_display_columns(self, display_columns: list[str]):
198
198
  """Set the display columns for this Data Source
199
199
 
200
200
  Args:
201
- diplay_columns (list[str]): The display columns for this Data Source
201
+ display_columns (list[str]): The display columns for this Data Source
202
202
  """
203
203
  # Check mismatch of display columns to computation columns
204
204
  c_view = self.view("computation")
205
205
  computation_columns = c_view.columns
206
- mismatch_columns = [col for col in diplay_columns if col not in computation_columns]
206
+ mismatch_columns = [col for col in display_columns if col not in computation_columns]
207
207
  if mismatch_columns:
208
208
  self.log.monitor(f"Display View/Computation mismatch: {mismatch_columns}")
209
209
 
210
- self.log.important(f"Setting Display Columns...{diplay_columns}")
210
+ self.log.important(f"Setting Display Columns...{display_columns}")
211
211
  from workbench.core.views import DisplayView
212
212
 
213
213
  # Create a NEW display view
214
- DisplayView.create(self, source_table=c_view.table, column_list=diplay_columns)
214
+ DisplayView.create(self, source_table=c_view.table, column_list=display_columns)
215
215
 
216
216
  def set_computation_columns(self, computation_columns: list[str], reset_display: bool = True):
217
217
  """Set the computation columns for this FeatureSet
@@ -592,6 +592,24 @@ class ModelCore(Artifact):
592
592
  # Return the details
593
593
  return details
594
594
 
595
+ # Training View for this model
596
+ def training_view(self):
597
+ """Get the training view for this model"""
598
+ from workbench.core.artifacts.feature_set_core import FeatureSetCore
599
+ from workbench.core.views import View
600
+
601
+ # Grab our FeatureSet
602
+ fs = FeatureSetCore(self.get_input())
603
+
604
+ # See if we have a training view for this model
605
+ my_model_training_view = f"{self.name.replace('-', '_')}_training"
606
+ view = View(fs, my_model_training_view, auto_create_view=False)
607
+ if view.exists():
608
+ return view
609
+ else:
610
+ self.log.important(f"No specific training view {my_model_training_view}, returning default training view")
611
+ return fs.view("training")
612
+
595
613
  # Pipeline for this model
596
614
  def get_pipeline(self) -> str:
597
615
  """Get the pipeline for this model"""
@@ -264,6 +264,11 @@ class FeaturesToModel(Transform):
264
264
  self.log.important(f"Creating new model {self.output_name}...")
265
265
  self.create_and_register_model(**kwargs)
266
266
 
267
+ # Make a copy of the training view, to lock-in the training data used for this model
268
+ model_training_view_name = f"{self.output_name.replace('-', '_')}_training"
269
+ self.log.important(f"Creating Model Training View: {model_training_view_name}...")
270
+ feature_set.view("training").copy(f"{model_training_view_name}")
271
+
267
272
  def post_transform(self, **kwargs):
268
273
  """Post-Transform: Calling onboard() on the Model"""
269
274
  self.log.info("Post-Transform: Calling onboard() on the Model...")
@@ -10,7 +10,11 @@ from workbench.core.views.view_utils import get_column_list
10
10
 
11
11
 
12
12
  class TrainingView(CreateView):
13
- """TrainingView Class: A View with an additional training column that marks holdout ids
13
+ """TrainingView Class: A View with an additional training column (80/20 or holdout ids).
14
+ The TrainingView class creates a SQL view that includes all columns from the source table
15
+ along with an additional boolean column named "training". This view can also include
16
+ a SQL filter expression to filter the rows included in the view.
17
+
14
18
 
15
19
  Common Usage:
16
20
  ```python
@@ -19,8 +23,9 @@ class TrainingView(CreateView):
19
23
  training_view = TrainingView.create(fs)
20
24
  df = training_view.pull_dataframe()
21
25
 
22
- # Create a TrainingView with a specific set of columns
23
- training_view = TrainingView.create(fs, column_list=["my_col1", "my_col2"])
26
+ # Create a TrainingView with a specific filter expression
27
+ training_view = TrainingView.create(fs, id_column="auto_id", filter_expression="age > 30")
28
+ df = training_view.pull_dataframe()
24
29
 
25
30
  # Query the view
26
31
  df = training_view.query(f"SELECT * FROM {training_view.table} where training = TRUE")
@@ -31,20 +36,21 @@ class TrainingView(CreateView):
31
36
  def create(
32
37
  cls,
33
38
  feature_set: FeatureSet,
34
- source_table: str = None,
39
+ *, # Enforce keyword arguments after feature_set
35
40
  id_column: str = None,
36
41
  holdout_ids: Union[list[str], list[int], None] = None,
37
42
  filter_expression: str = None,
43
+ source_table: str = None,
38
44
  ) -> Union[View, None]:
39
45
  """Factory method to create and return a TrainingView instance.
40
46
 
41
47
  Args:
42
48
  feature_set (FeatureSet): A FeatureSet object
43
- source_table (str, optional): The table/view to create the view from. Defaults to None.
44
49
  id_column (str, optional): The name of the id column. Defaults to None.
45
50
  holdout_ids (Union[list[str], list[int], None], optional): A list of holdout ids. Defaults to None.
46
51
  filter_expression (str, optional): SQL filter expression (e.g., "age > 25 AND status = 'active'").
47
52
  Defaults to None.
53
+ source_table (str, optional): The table/view to create the view from. Defaults to None.
48
54
 
49
55
  Returns:
50
56
  Union[View, None]: The created View object (or None if failed to create the view)
@@ -196,12 +196,52 @@ class View:
196
196
 
197
197
  # The BaseView always exists
198
198
  if self.view_name == "base":
199
- return True
199
+ return
200
200
 
201
201
  # Check the database directly
202
202
  if not self._check_database():
203
203
  self._auto_create_view()
204
204
 
205
+ def copy(self, dest_view_name: str) -> "View":
206
+ """Copy this view to a new view with a different name
207
+
208
+ Args:
209
+ dest_view_name (str): The destination view name (e.g. "training_v1")
210
+
211
+ Returns:
212
+ View: A new View object for the destination view
213
+ """
214
+ # Can't copy the base view
215
+ if self.view_name == "base":
216
+ self.log.error("Cannot copy the base view")
217
+ return None
218
+
219
+ # Get the view definition
220
+ get_view_query = f"""
221
+ SELECT view_definition
222
+ FROM information_schema.views
223
+ WHERE table_schema = '{self.database}'
224
+ AND table_name = '{self.table}'
225
+ """
226
+ df = self.data_source.query(get_view_query)
227
+
228
+ if df.empty:
229
+ self.log.error(f"View {self.table} not found")
230
+ return None
231
+
232
+ view_definition = df.iloc[0]["view_definition"]
233
+
234
+ # Create the new view with the destination name
235
+ dest_table = f"{self.base_table_name}___{dest_view_name}"
236
+ create_view_query = f'CREATE OR REPLACE VIEW "{dest_table}" AS {view_definition}'
237
+
238
+ self.log.important(f"Copying view {self.table} to {dest_table}...")
239
+ self.data_source.execute_statement(create_view_query)
240
+
241
+ # Return a new View object for the destination
242
+ artifact = FeatureSet(self.artifact_name) if self.is_feature_set else DataSource(self.artifact_name)
243
+ return View(artifact, dest_view_name, auto_create_view=False)
244
+
205
245
  def _check_database(self) -> bool:
206
246
  """Internal: Check if the view exists in the database
207
247
 
@@ -324,3 +364,13 @@ if __name__ == "__main__":
324
364
  # Test supplemental data tables deletion
325
365
  view = View(fs, "test_view")
326
366
  view.delete()
367
+
368
+ # Test copying a view
369
+ fs = FeatureSet("test_features")
370
+ display_view = View(fs, "display")
371
+ copied_view = display_view.copy("display_copy")
372
+ print(copied_view)
373
+ print(copied_view.pull_dataframe().head())
374
+
375
+ # Clean up copied view
376
+ copied_view.delete()
@@ -296,15 +296,15 @@ if __name__ == "__main__":
296
296
  print("View Details on the FeatureSet Table...")
297
297
  print(view_details(my_data_source.table, my_data_source.database, my_data_source.boto3_session))
298
298
 
299
- print("View Details on the Training View...")
300
- training_view = fs.view("training")
299
+ print("View Details on the Display View...")
300
+ training_view = fs.view("display")
301
301
  print(view_details(training_view.table, training_view.database, my_data_source.boto3_session))
302
302
 
303
303
  # Test get_column_list
304
304
  print(get_column_list(my_data_source))
305
305
 
306
- # Test get_column_list (with training view)
307
- training_table = fs.view("training").table
306
+ # Test get_column_list (with display view)
307
+ training_table = fs.view("display").table
308
308
  print(get_column_list(my_data_source, training_table))
309
309
 
310
310
  # Test list_views
@@ -29,12 +29,12 @@ from typing import List, Tuple
29
29
  # Template Parameters
30
30
  TEMPLATE_PARAMS = {
31
31
  "model_type": "regressor",
32
- "target": "udm_asy_res_value",
33
- "features": ['chi2v', 'fr_sulfone', 'chi1v', 'bcut2d_logplow', 'fr_piperzine', 'kappa3', 'smr_vsa1', 'slogp_vsa5', 'fr_ketone_topliss', 'fr_sulfonamd', 'fr_imine', 'fr_benzene', 'fr_ester', 'chi2n', 'labuteasa', 'peoe_vsa2', 'smr_vsa6', 'bcut2d_chglo', 'fr_sh', 'peoe_vsa1', 'fr_allylic_oxid', 'chi4n', 'fr_ar_oh', 'fr_nh0', 'fr_term_acetylene', 'slogp_vsa7', 'slogp_vsa4', 'estate_vsa1', 'vsa_estate4', 'numbridgeheadatoms', 'numheterocycles', 'fr_ketone', 'fr_morpholine', 'fr_guanido', 'estate_vsa2', 'numheteroatoms', 'fr_nitro_arom_nonortho', 'fr_piperdine', 'nocount', 'numspiroatoms', 'fr_aniline', 'fr_thiophene', 'slogp_vsa10', 'fr_amide', 'slogp_vsa2', 'fr_epoxide', 'vsa_estate7', 'fr_ar_coo', 'fr_imidazole', 'fr_nitrile', 'fr_oxazole', 'numsaturatedrings', 'fr_pyridine', 'fr_hoccn', 'fr_ndealkylation1', 'numaliphaticheterocycles', 'fr_phenol', 'maxpartialcharge', 'vsa_estate5', 'peoe_vsa13', 'minpartialcharge', 'qed', 'fr_al_oh', 'slogp_vsa11', 'chi0n', 'fr_bicyclic', 'peoe_vsa12', 'fpdensitymorgan1', 'fr_oxime', 'molwt', 'fr_dihydropyridine', 'smr_vsa5', 'peoe_vsa5', 'fr_nitro', 'hallkieralpha', 'heavyatommolwt', 'fr_alkyl_halide', 'peoe_vsa8', 'fr_nhpyrrole', 'fr_isocyan', 'bcut2d_chghi', 'fr_lactam', 'peoe_vsa11', 'smr_vsa9', 'tpsa', 'chi4v', 'slogp_vsa1', 'phi', 'bcut2d_logphi', 'avgipc', 'estate_vsa11', 'fr_coo', 'bcut2d_mwhi', 'numunspecifiedatomstereocenters', 'vsa_estate10', 'estate_vsa8', 'numvalenceelectrons', 'fr_nh2', 'fr_lactone', 'vsa_estate1', 'estate_vsa4', 'numatomstereocenters', 'vsa_estate8', 'fr_para_hydroxylation', 'peoe_vsa3', 'fr_thiazole', 'peoe_vsa10', 'fr_ndealkylation2', 'slogp_vsa12', 'peoe_vsa9', 'maxestateindex', 'fr_quatn', 'smr_vsa7', 'minestateindex', 'numaromaticheterocycles', 'numrotatablebonds', 'fr_ar_nh', 'fr_ether', 'exactmolwt', 'fr_phenol_noorthohbond', 'slogp_vsa3', 'fr_ar_n', 'sps', 'fr_c_o_nocoo', 'bertzct', 'peoe_vsa7', 'slogp_vsa8', 'numradicalelectrons', 'molmr', 'fr_tetrazole', 'numsaturatedcarbocycles', 'bcut2d_mrhi', 'kappa1', 'numamidebonds', 'fpdensitymorgan2', 'smr_vsa8', 'chi1n', 'estate_vsa6', 'fr_barbitur', 'fr_diazo', 'kappa2', 'chi0', 'bcut2d_mrlow', 'balabanj', 'peoe_vsa4', 'numhacceptors', 'fr_sulfide', 'chi3n', 'smr_vsa2', 'fr_al_oh_notert', 'fr_benzodiazepine', 'fr_phos_ester', 'fr_aldehyde', 'fr_coo2', 'estate_vsa5', 'fr_prisulfonamd', 'numaromaticcarbocycles', 'fr_unbrch_alkane', 'fr_urea', 'fr_nitroso', 'smr_vsa10', 'fr_c_s', 'smr_vsa3', 'fr_methoxy', 'maxabspartialcharge', 'slogp_vsa9', 'heavyatomcount', 'fr_azide', 'chi3v', 'smr_vsa4', 'mollogp', 'chi0v', 'fr_aryl_methyl', 'fr_nh1', 'fpdensitymorgan3', 'fr_furan', 'fr_hdrzine', 'fr_arn', 'numaromaticrings', 'vsa_estate3', 'fr_azo', 'fr_halogen', 'estate_vsa9', 'fr_hdrzone', 'numhdonors', 'fr_alkyl_carbamate', 'fr_isothiocyan', 'minabspartialcharge', 'fr_al_coo', 'ringcount', 'chi1', 'estate_vsa7', 'fr_nitro_arom', 'vsa_estate9', 'minabsestateindex', 'maxabsestateindex', 'vsa_estate6', 'estate_vsa10', 'estate_vsa3', 'fr_n_o', 'fr_amidine', 'fr_thiocyan', 'fr_phos_acid', 'fr_c_o', 'fr_imide', 'numaliphaticrings', 'peoe_vsa6', 'vsa_estate2', 'nhohcount', 'numsaturatedheterocycles', 'slogp_vsa6', 'peoe_vsa14', 'fractioncsp3', 'bcut2d_mwlow', 'numaliphaticcarbocycles', 'fr_priamide', 'nacid', 'nbase', 'naromatom', 'narombond', 'sz', 'sm', 'sv', 'sse', 'spe', 'sare', 'sp', 'si', 'mz', 'mm', 'mv', 'mse', 'mpe', 'mare', 'mp', 'mi', 'xch_3d', 'xch_4d', 'xch_5d', 'xch_6d', 'xch_7d', 'xch_3dv', 'xch_4dv', 'xch_5dv', 'xch_6dv', 'xch_7dv', 'xc_3d', 'xc_4d', 'xc_5d', 'xc_6d', 'xc_3dv', 'xc_4dv', 'xc_5dv', 'xc_6dv', 'xpc_4d', 'xpc_5d', 'xpc_6d', 'xpc_4dv', 'xpc_5dv', 'xpc_6dv', 'xp_0d', 'xp_1d', 'xp_2d', 'xp_3d', 'xp_4d', 'xp_5d', 'xp_6d', 'xp_7d', 'axp_0d', 'axp_1d', 'axp_2d', 'axp_3d', 'axp_4d', 'axp_5d', 'axp_6d', 'axp_7d', 'xp_0dv', 'xp_1dv', 'xp_2dv', 'xp_3dv', 'xp_4dv', 'xp_5dv', 'xp_6dv', 'xp_7dv', 'axp_0dv', 'axp_1dv', 'axp_2dv', 'axp_3dv', 'axp_4dv', 'axp_5dv', 'axp_6dv', 'axp_7dv', 'c1sp1', 'c2sp1', 'c1sp2', 'c2sp2', 'c3sp2', 'c1sp3', 'c2sp3', 'c3sp3', 'c4sp3', 'hybratio', 'fcsp3', 'num_stereocenters', 'num_unspecified_stereocenters', 'num_defined_stereocenters', 'num_r_centers', 'num_s_centers', 'num_stereobonds', 'num_e_bonds', 'num_z_bonds', 'stereo_complexity', 'frac_defined_stereo'],
32
+ "target": "class_number_of_rings",
33
+ "features": ['length', 'diameter', 'height', 'whole_weight', 'shucked_weight', 'viscera_weight', 'shell_weight', 'sex'],
34
34
  "compressed_features": [],
35
- "model_metrics_s3_path": "s3://ideaya-sageworks-bucket/models/logd-hyper-80/training",
35
+ "model_metrics_s3_path": "s3://sandbox-sageworks-artifacts/models/abalone-regression/training",
36
36
  "train_all_data": False,
37
- "hyperparameters": {'n_estimators': 200, 'max_depth': 6, 'learning_rate': 0.05, 'subsample': 0.7, 'colsample_bytree': 0.3, 'colsample_bylevel': 0.5, 'min_child_weight': 5, 'gamma': 0.2, 'reg_alpha': 0.5, 'reg_lambda': 2.0, 'scale_pos_weight': 1},
37
+ "hyperparameters": {},
38
38
  }
39
39
 
40
40
 
@@ -145,7 +145,7 @@ def convert_categorical_types(df: pd.DataFrame, features: list, category_mapping
145
145
  def decompress_features(
146
146
  df: pd.DataFrame, features: List[str], compressed_features: List[str]
147
147
  ) -> Tuple[pd.DataFrame, List[str]]:
148
- """Prepare features for the model
148
+ """Prepare features for the model by decompressing bitstring features
149
149
 
150
150
  Args:
151
151
  df (pd.DataFrame): The features DataFrame
@@ -170,7 +170,7 @@ def decompress_features(
170
170
  )
171
171
 
172
172
  # Decompress the specified compressed features
173
- decompressed_features = features
173
+ decompressed_features = features.copy()
174
174
  for feature in compressed_features:
175
175
  if (feature not in df.columns) or (feature not in features):
176
176
  print(f"Feature '{feature}' not in the features list, skipping decompression.")
@@ -7,9 +7,7 @@ from typing import Union, Optional
7
7
  import pandas as pd
8
8
 
9
9
  # Workbench Imports
10
- from workbench.api.feature_set import FeatureSet
11
- from workbench.api.model import Model
12
- from workbench.api.endpoint import Endpoint
10
+ from workbench.api import FeatureSet, Model, Endpoint
13
11
 
14
12
  # Set up the log
15
13
  log = logging.getLogger("workbench")
@@ -77,7 +75,7 @@ def internal_model_data_url(endpoint_config_name: str, session: boto3.Session) -
77
75
  return None
78
76
 
79
77
 
80
- def fs_training_data(end: Endpoint) -> pd.DataFrame:
78
+ def get_training_data(end: Endpoint) -> pd.DataFrame:
81
79
  """Code to get the training data from the FeatureSet used to train the Model
82
80
 
83
81
  Args:
@@ -100,7 +98,7 @@ def fs_training_data(end: Endpoint) -> pd.DataFrame:
100
98
  return train_df
101
99
 
102
100
 
103
- def fs_evaluation_data(end: Endpoint) -> pd.DataFrame:
101
+ def get_evaluation_data(end: Endpoint) -> pd.DataFrame:
104
102
  """Code to get the evaluation data from the FeatureSet NOT used for training
105
103
 
106
104
  Args:
@@ -178,11 +176,11 @@ if __name__ == "__main__":
178
176
  print(model_data_url)
179
177
 
180
178
  # Get the training data
181
- my_train_df = fs_training_data(my_endpoint)
179
+ my_train_df = get_training_data(my_endpoint)
182
180
  print(my_train_df)
183
181
 
184
182
  # Get the evaluation data
185
- my_eval_df = fs_evaluation_data(my_endpoint)
183
+ my_eval_df = get_evaluation_data(my_endpoint)
186
184
  print(my_eval_df)
187
185
 
188
186
  # Backtrack to the FeatureSet
@@ -93,12 +93,11 @@ def get_custom_script_path(package: str, script_name: str) -> Path:
93
93
  return script_path
94
94
 
95
95
 
96
- def proximity_model_local(model: "Model", filtered: bool = True):
96
+ def proximity_model_local(model: "Model"):
97
97
  """Create a Proximity Model for this Model
98
98
 
99
99
  Args:
100
- model (Model): The model to create the proximity model from
101
- filtered (bool, optional): Use filtered training data for the Proximity Model (default: True)
100
+ model (Model): The Model/FeatureSet used to create the proximity model
102
101
 
103
102
  Returns:
104
103
  Proximity: The proximity model
@@ -110,13 +109,12 @@ def proximity_model_local(model: "Model", filtered: bool = True):
110
109
  features = model.features()
111
110
  target = model.target()
112
111
 
113
- # Create the Proximity Model from our FeatureSet
112
+ # Backtrack our FeatureSet to get the ID column
114
113
  fs = FeatureSet(model.get_input())
115
- if filtered:
116
- df = fs.view("training").pull_dataframe()
117
- else:
118
- df = fs.pull_dataframe()
119
114
  id_column = fs.id_column
115
+
116
+ # Create the Proximity Model from our Training Data
117
+ df = model.training_view().pull_dataframe()
120
118
  return Proximity(df, id_column, features, target, track_columns=features)
121
119
 
122
120
 
@@ -298,7 +298,7 @@ def cross_fold_inference(workbench_model: Any, nfolds: int = 5) -> Tuple[Dict[st
298
298
 
299
299
  # Prepare data
300
300
  fs = FeatureSet(workbench_model.get_input())
301
- df = fs.view("training").pull_dataframe()
301
+ df = workbench_model.training_view().pull_dataframe()
302
302
 
303
303
  # Get id column - assuming FeatureSet has an id_column attribute or similar
304
304
  id_col = fs.id_column
@@ -423,7 +423,7 @@ def leave_one_out_inference(workbench_model: Any) -> pd.DataFrame:
423
423
 
424
424
  # Load and prepare data
425
425
  fs = FeatureSet(workbench_model.get_input())
426
- df = fs.view("training").pull_dataframe()
426
+ df = workbench_model.training_view().pull_dataframe()
427
427
  id_col = fs.id_column
428
428
  target_col = workbench_model.target()
429
429
  feature_cols = workbench_model.features()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: workbench
3
- Version: 0.8.187
3
+ Version: 0.8.189
4
4
  Summary: Workbench: A Dashboard and Python API for creating and deploying AWS SageMaker Model Pipelines
5
5
  Author-email: SuperCowPowers LLC <support@supercowpowers.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ import pandas as pd
4
4
 
5
5
  # Workbench Imports
6
6
  from workbench.api import FeatureSet, Endpoint
7
- from workbench.utils.endpoint_utils import fs_evaluation_data
7
+ from workbench.utils.endpoint_utils import get_evaluation_data
8
8
 
9
9
  reg_endpoint = Endpoint("abalone-regression")
10
10
  class_endpoint = Endpoint("wine-classification")
@@ -37,7 +37,7 @@ def test_classification_auto_inference():
37
37
 
38
38
 
39
39
  def test_classification_inference_with_subset_of_labels():
40
- eval_data_df = fs_evaluation_data(class_endpoint)[:50]
40
+ eval_data_df = get_evaluation_data(class_endpoint)[:50]
41
41
 
42
42
  # Subset the rows to only include the first 2 classes
43
43
  print("Using only TypeA and TypeB classes")
@@ -64,7 +64,7 @@ def test_classification_inference_with_subset_of_labels():
64
64
  def test_classification_roc_auc():
65
65
 
66
66
  # Compute performance metrics for our test predictions
67
- eval_data_df = fs_evaluation_data(class_endpoint)[:50]
67
+ eval_data_df = get_evaluation_data(class_endpoint)[:50]
68
68
  pred_df = class_endpoint.inference(eval_data_df)
69
69
 
70
70
  # Normal test ROCAUC should 1 (or close to 1)
@@ -94,7 +94,7 @@ def test_classification_roc_auc():
94
94
 
95
95
 
96
96
  def test_manual_inference():
97
- eval_data_df = fs_evaluation_data(reg_endpoint)[:50]
97
+ eval_data_df = get_evaluation_data(reg_endpoint)[:50]
98
98
  pred_df = reg_endpoint.inference(eval_data_df)
99
99
  print(pred_df)
100
100
 
@@ -102,7 +102,7 @@ def test_manual_inference():
102
102
  def test_regression_metrics():
103
103
  # Compute performance metrics for our test predictions
104
104
  target_column = "class_number_of_rings"
105
- eval_data_df = fs_evaluation_data(reg_endpoint)[:50]
105
+ eval_data_df = get_evaluation_data(reg_endpoint)[:50]
106
106
  pred_df = reg_endpoint.inference(eval_data_df)
107
107
  metrics = reg_endpoint.regression_metrics(target_column, pred_df)
108
108
  print(metrics)
@@ -113,7 +113,7 @@ def test_regression_metrics():
113
113
 
114
114
 
115
115
  def test_classification_metrics():
116
- eval_data_df = fs_evaluation_data(class_endpoint)[:50]
116
+ eval_data_df = get_evaluation_data(class_endpoint)[:50]
117
117
  pred_df = class_endpoint.inference(eval_data_df)
118
118
  print(pred_df)
119
119
 
@@ -132,7 +132,7 @@ def test_classification_metrics():
132
132
 
133
133
 
134
134
  def test_fast_inference():
135
- eval_data_df = fs_evaluation_data(class_endpoint)[:50]
135
+ eval_data_df = get_evaluation_data(class_endpoint)[:50]
136
136
  pred_df = class_endpoint.fast_inference(eval_data_df)
137
137
  print(pred_df)
138
138
 
File without changes