workbench 0.8.186__tar.gz → 0.8.188__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 (784) hide show
  1. {workbench-0.8.186 → workbench-0.8.188}/PKG-INFO +2 -1
  2. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/workbench_compute/workbench_compute_stack.py +1 -1
  3. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/endpoint.md +3 -7
  4. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/overview.md +2 -7
  5. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/views.md +2 -2
  6. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/views/overview.md +2 -2
  7. {workbench-0.8.186 → workbench-0.8.188}/examples/endpoint/endpoint_inference.py +3 -7
  8. {workbench-0.8.186 → workbench-0.8.188}/examples/full_ml_pipeline.py +1 -3
  9. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/ml_pipelines/Dockerfile +1 -1
  10. {workbench-0.8.186 → workbench-0.8.188}/notebooks/Inference_On_Legacy_Models.ipynb +2 -2
  11. {workbench-0.8.186 → workbench-0.8.188}/notebooks/ML_Pipeline_with_Workbench_2.ipynb +1 -1
  12. {workbench-0.8.186 → workbench-0.8.188}/pyproject.toml +2 -0
  13. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/endpoint_core.py +6 -6
  14. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/feature_set_core.py +5 -5
  15. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/model_core.py +18 -0
  16. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/features_to_model/features_to_model.py +5 -0
  17. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/training_view.py +11 -5
  18. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/view.py +51 -1
  19. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/view_utils.py +4 -4
  20. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/xgb_model/generated_model_script.py +6 -6
  21. workbench-0.8.188/src/workbench/scripts/lambda_launcher.py +39 -0
  22. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/scripts/ml_pipeline_sqs.py +6 -1
  23. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/config_manager.py +2 -6
  24. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/endpoint_utils.py +5 -7
  25. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/license_manager.py +2 -6
  26. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/model_utils.py +6 -8
  27. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/xgboost_model_utils.py +2 -2
  28. {workbench-0.8.186 → workbench-0.8.188}/src/workbench.egg-info/PKG-INFO +2 -1
  29. {workbench-0.8.186 → workbench-0.8.188}/src/workbench.egg-info/SOURCES.txt +1 -1
  30. {workbench-0.8.186 → workbench-0.8.188}/src/workbench.egg-info/entry_points.txt +1 -0
  31. {workbench-0.8.186 → workbench-0.8.188}/tests/artifacts/endpoint_tests.py +7 -7
  32. {workbench-0.8.186 → workbench-0.8.188}/tox.ini +12 -7
  33. workbench-0.8.186/src/workbench/utils/resource_utils.py +0 -39
  34. {workbench-0.8.186 → workbench-0.8.188}/.flake8 +0 -0
  35. {workbench-0.8.186 → workbench-0.8.188}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  36. {workbench-0.8.186 → workbench-0.8.188}/.github/dependabot.yml +0 -0
  37. {workbench-0.8.186 → workbench-0.8.188}/.github/workflows/deploy-docs.yml +0 -0
  38. {workbench-0.8.186 → workbench-0.8.188}/.github/workflows/python-lint.yml +0 -0
  39. {workbench-0.8.186 → workbench-0.8.188}/.gitignore +0 -0
  40. {workbench-0.8.186 → workbench-0.8.188}/CONTRIBUTING.md +0 -0
  41. {workbench-0.8.186 → workbench-0.8.188}/Dockerfile +0 -0
  42. {workbench-0.8.186 → workbench-0.8.188}/LICENSE +0 -0
  43. {workbench-0.8.186 → workbench-0.8.188}/Makefile +0 -0
  44. {workbench-0.8.186 → workbench-0.8.188}/README.md +0 -0
  45. {workbench-0.8.186 → workbench-0.8.188}/SECURITY.md +0 -0
  46. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/Dockerfile +0 -0
  47. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/README.md +0 -0
  48. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/app.py +0 -0
  49. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/assets/favicon.ico +0 -0
  50. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/dashboard +0 -0
  51. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/deploy.sh +0 -0
  52. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/nginx.conf +0 -0
  53. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/open_source_config.json +0 -0
  54. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/data_sources/callbacks.py +0 -0
  55. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/data_sources/layout.py +0 -0
  56. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/data_sources/page.py +0 -0
  57. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/endpoints/callbacks.py +0 -0
  58. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/endpoints/layout.py +0 -0
  59. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/endpoints/page.py +0 -0
  60. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/feature_sets/callbacks.py +0 -0
  61. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/feature_sets/layout.py +0 -0
  62. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/feature_sets/page.py +0 -0
  63. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/license/page.py +0 -0
  64. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/main/callbacks.py +0 -0
  65. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/main/layout.py +0 -0
  66. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/main/page.py +0 -0
  67. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/models/callbacks.py +0 -0
  68. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/models/layout.py +0 -0
  69. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/models/page.py +0 -0
  70. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/pipelines/callbacks.py +0 -0
  71. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/pipelines/layout.py +0 -0
  72. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/pipelines/page.py +0 -0
  73. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/pages/status/page.py +0 -0
  74. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/static/dark.css +0 -0
  75. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/static/light.css +0 -0
  76. {workbench-0.8.186 → workbench-0.8.188}/applications/aws_dashboard/supervisord.conf +0 -0
  77. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/Dockerfile +0 -0
  78. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/README.md +0 -0
  79. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/app.py +0 -0
  80. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/assets/favicon.ico +0 -0
  81. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/callbacks.py +0 -0
  82. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/explorer +0 -0
  83. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/layout.py +0 -0
  84. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/nginx.conf +0 -0
  85. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/open_source_config.json +0 -0
  86. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/requirements.txt +0 -0
  87. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/storage/callbacks.py +0 -0
  88. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/storage/callbacks_new.py +0 -0
  89. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/storage/layout_new.py +0 -0
  90. {workbench-0.8.186 → workbench-0.8.188}/applications/compound_explorer/supervisord.conf +0 -0
  91. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/aws_account_setup.py +0 -0
  92. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/aws_identity_check.py +0 -0
  93. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/build_ml_pipeline.py +0 -0
  94. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/compound_explorer/.gitignore +0 -0
  95. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/compound_explorer/README.md +0 -0
  96. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/compound_explorer/app.py +0 -0
  97. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/compound_explorer/cdk.json +0 -0
  98. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/compound_explorer/compound_explorer/__init__.py +0 -0
  99. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/compound_explorer/compound_explorer/compound_explorer_stack.py +0 -0
  100. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/compound_explorer/requirements.txt +0 -0
  101. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/event_bridge/Readme.md +0 -0
  102. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/README.md +0 -0
  103. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/app.py +0 -0
  104. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/cdk.json +0 -0
  105. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/requirements.txt +0 -0
  106. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/tests/__init__.py +0 -0
  107. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/tests/unit/__init__.py +0 -0
  108. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/tests/unit/test_workbench_compute_stack.py +0 -0
  109. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_compute/workbench_compute/__init__.py +0 -0
  110. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/.gitignore +0 -0
  111. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/README.md +0 -0
  112. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/app.py +0 -0
  113. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/cdk.json +0 -0
  114. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/requirements-dev.txt +0 -0
  115. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/requirements.txt +0 -0
  116. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/source.bat +0 -0
  117. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/workbench_core/__init__.py +0 -0
  118. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_core/workbench_core/workbench_core_stack.py +0 -0
  119. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/.gitignore +0 -0
  120. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/README.md +0 -0
  121. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/app.py +0 -0
  122. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/cdk.json +0 -0
  123. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/requirements-dev.txt +0 -0
  124. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/requirements.txt +0 -0
  125. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/source.bat +0 -0
  126. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/workbench_dashboard_full/__init__.py +0 -0
  127. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_full/workbench_dashboard_full/workbench_dashboard_stack.py +0 -0
  128. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_lite/.gitignore +0 -0
  129. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_lite/README.md +0 -0
  130. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_lite/app.py +0 -0
  131. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_lite/cdk.json +0 -0
  132. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_lite/requirements.txt +0 -0
  133. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_lite/workbench_dashboard_lite/__init__.py +0 -0
  134. {workbench-0.8.186 → workbench-0.8.188}/aws_setup/workbench_dashboard_lite/workbench_dashboard_lite/workbench_dashboard_stack.py +0 -0
  135. {workbench-0.8.186 → workbench-0.8.188}/data/abalone.csv +0 -0
  136. {workbench-0.8.186 → workbench-0.8.188}/data/karate_graph.json +0 -0
  137. {workbench-0.8.186 → workbench-0.8.188}/data/test_data.csv +0 -0
  138. {workbench-0.8.186 → workbench-0.8.188}/data/test_data.json +0 -0
  139. {workbench-0.8.186 → workbench-0.8.188}/data/wine_dataset.csv +0 -0
  140. {workbench-0.8.186 → workbench-0.8.188}/deploy_docker.sh +0 -0
  141. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/aws_service_limits.md +0 -0
  142. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/base_docker_push.md +0 -0
  143. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/dashboard_docker_push.md +0 -0
  144. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/dashboard_s3_plugins.md +0 -0
  145. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/explorer_docker_push.md +0 -0
  146. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/images/dashboard_secret_click.png +0 -0
  147. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/images/serverless_quotas.png +0 -0
  148. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/images/status_showing_S3_path.png +0 -0
  149. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/pypi_release.md +0 -0
  150. {workbench-0.8.186 → workbench-0.8.188}/docs/admin/workbench_docker_for_lambdas.md +0 -0
  151. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/data_source.md +0 -0
  152. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/df_store.md +0 -0
  153. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/feature_set.md +0 -0
  154. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/meta.md +0 -0
  155. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/model.md +0 -0
  156. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/monitor.md +0 -0
  157. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/parameter_store.md +0 -0
  158. {workbench-0.8.186 → workbench-0.8.188}/docs/api_classes/pipelines.md +0 -0
  159. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/aws_access_management.md +0 -0
  160. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/aws_client_vpn.md +0 -0
  161. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/aws_setup.md +0 -0
  162. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/aws_tips_and_tricks.md +0 -0
  163. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/core_stack.md +0 -0
  164. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/dashboard_stack.md +0 -0
  165. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/domain_cert_setup.md +0 -0
  166. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/full_pipeline.md +0 -0
  167. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/iam_assume_role.md +0 -0
  168. {workbench-0.8.186 → workbench-0.8.188}/docs/aws_setup/sso_assume_role.md +0 -0
  169. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/aws_credentials_lock.md +0 -0
  170. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/canonicalization_and_tautomerization.md +0 -0
  171. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/compound_etl.md +0 -0
  172. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/compound_explorer.md +0 -0
  173. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/descriptor_drilldown.md +0 -0
  174. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/eda.md +0 -0
  175. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/feature_importances.md +0 -0
  176. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/fun_with_workbench/fun_with_endpoints.md +0 -0
  177. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/htg.md +0 -0
  178. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/index.md +0 -0
  179. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/model_monitoring.md +0 -0
  180. {workbench-0.8.186 → workbench-0.8.188}/docs/blogs/residual_analysis.md +0 -0
  181. {workbench-0.8.186 → workbench-0.8.188}/docs/cached/cached_data_source.md +0 -0
  182. {workbench-0.8.186 → workbench-0.8.188}/docs/cached/cached_endpoint.md +0 -0
  183. {workbench-0.8.186 → workbench-0.8.188}/docs/cached/cached_feature_set.md +0 -0
  184. {workbench-0.8.186 → workbench-0.8.188}/docs/cached/cached_meta.md +0 -0
  185. {workbench-0.8.186 → workbench-0.8.188}/docs/cached/cached_model.md +0 -0
  186. {workbench-0.8.186 → workbench-0.8.188}/docs/cached/overview.md +0 -0
  187. {workbench-0.8.186 → workbench-0.8.188}/docs/chem_utils/index.md +0 -0
  188. {workbench-0.8.186 → workbench-0.8.188}/docs/cloudwatch/index.md +0 -0
  189. {workbench-0.8.186 → workbench-0.8.188}/docs/comparisons/workbench_vs_databricks.md +0 -0
  190. {workbench-0.8.186 → workbench-0.8.188}/docs/compound_explorer/tox21.md +0 -0
  191. {workbench-0.8.186 → workbench-0.8.188}/docs/compound_explorer/toxicity_modeling.md +0 -0
  192. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/artifacts/artifact.md +0 -0
  193. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/artifacts/athena_source.md +0 -0
  194. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/artifacts/data_source_abstract.md +0 -0
  195. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/artifacts/endpoint_core.md +0 -0
  196. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/artifacts/feature_set_core.md +0 -0
  197. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/artifacts/model_core.md +0 -0
  198. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/artifacts/monitor_core.md +0 -0
  199. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/artifacts/overview.md +0 -0
  200. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/overview.md +0 -0
  201. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/transforms/data_loaders_heavy.md +0 -0
  202. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/transforms/data_loaders_light.md +0 -0
  203. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/transforms/data_to_features.md +0 -0
  204. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/transforms/features_to_model.md +0 -0
  205. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/transforms/model_to_endpoint.md +0 -0
  206. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/transforms/overview.md +0 -0
  207. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/transforms/pandas_transforms.md +0 -0
  208. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/transforms/transform.md +0 -0
  209. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/views/computation_view.md +0 -0
  210. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/views/display_view.md +0 -0
  211. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/views/inference_view.md +0 -0
  212. {workbench-0.8.186 → workbench-0.8.188}/docs/core_classes/views/training_view.md +0 -0
  213. {workbench-0.8.186 → workbench-0.8.188}/docs/data_algorithms/dataframes/overview.md +0 -0
  214. {workbench-0.8.186 → workbench-0.8.188}/docs/data_algorithms/graphs/overview.md +0 -0
  215. {workbench-0.8.186 → workbench-0.8.188}/docs/data_algorithms/overview.md +0 -0
  216. {workbench-0.8.186 → workbench-0.8.188}/docs/data_algorithms/spark/overview.md +0 -0
  217. {workbench-0.8.186 → workbench-0.8.188}/docs/data_algorithms/sql/overview.md +0 -0
  218. {workbench-0.8.186 → workbench-0.8.188}/docs/enterprise/index.md +0 -0
  219. {workbench-0.8.186 → workbench-0.8.188}/docs/enterprise/private_saas.md +0 -0
  220. {workbench-0.8.186 → workbench-0.8.188}/docs/enterprise/project_branding.md +0 -0
  221. {workbench-0.8.186 → workbench-0.8.188}/docs/enterprise/themes.md +0 -0
  222. {workbench-0.8.186 → workbench-0.8.188}/docs/getting_started/index.md +0 -0
  223. {workbench-0.8.186 → workbench-0.8.188}/docs/glue/index.md +0 -0
  224. {workbench-0.8.186 → workbench-0.8.188}/docs/images/big_spider.png +0 -0
  225. {workbench-0.8.186 → workbench-0.8.188}/docs/images/graph_representation.png +0 -0
  226. {workbench-0.8.186 → workbench-0.8.188}/docs/images/powered_aws_dark_blue.png +0 -0
  227. {workbench-0.8.186 → workbench-0.8.188}/docs/images/powered_aws_transparent.png +0 -0
  228. {workbench-0.8.186 → workbench-0.8.188}/docs/images/powered_aws_white.png +0 -0
  229. {workbench-0.8.186 → workbench-0.8.188}/docs/images/powered_aws_with_tm_grey.png +0 -0
  230. {workbench-0.8.186 → workbench-0.8.188}/docs/images/scp.png +0 -0
  231. {workbench-0.8.186 → workbench-0.8.188}/docs/images/scp_labs.png +0 -0
  232. {workbench-0.8.186 → workbench-0.8.188}/docs/images/small_spider.png +0 -0
  233. {workbench-0.8.186 → workbench-0.8.188}/docs/images/workbench_concepts.png +0 -0
  234. {workbench-0.8.186 → workbench-0.8.188}/docs/index.md +0 -0
  235. {workbench-0.8.186 → workbench-0.8.188}/docs/lambda_layer/index.md +0 -0
  236. {workbench-0.8.186 → workbench-0.8.188}/docs/misc/faq.md +0 -0
  237. {workbench-0.8.186 → workbench-0.8.188}/docs/misc/general_info.md +0 -0
  238. {workbench-0.8.186 → workbench-0.8.188}/docs/misc/scp_consulting.md +0 -0
  239. {workbench-0.8.186 → workbench-0.8.188}/docs/misc/workbench_classes_concepts.md +0 -0
  240. {workbench-0.8.186 → workbench-0.8.188}/docs/model_utils/index.md +0 -0
  241. {workbench-0.8.186 → workbench-0.8.188}/docs/plugins/index.md +0 -0
  242. {workbench-0.8.186 → workbench-0.8.188}/docs/presentations/index.md +0 -0
  243. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_106.md +0 -0
  244. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_158.md +0 -0
  245. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_50.md +0 -0
  246. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_55.md +0 -0
  247. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_58.md +0 -0
  248. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_60.md +0 -0
  249. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_71.md +0 -0
  250. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_74.md +0 -0
  251. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/0_8_78.md +0 -0
  252. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_7_8.md +0 -0
  253. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_11.md +0 -0
  254. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_20.md +0 -0
  255. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_22.md +0 -0
  256. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_23.md +0 -0
  257. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_27.md +0 -0
  258. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_29.md +0 -0
  259. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_33.md +0 -0
  260. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_35.md +0 -0
  261. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_36.md +0 -0
  262. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_39.md +0 -0
  263. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_42.md +0 -0
  264. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_46.md +0 -0
  265. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_6.md +0 -0
  266. {workbench-0.8.186 → workbench-0.8.188}/docs/release_notes/archived/0_8_8.md +0 -0
  267. {workbench-0.8.186 → workbench-0.8.188}/docs/repl/index.md +0 -0
  268. {workbench-0.8.186 → workbench-0.8.188}/docs/road_maps/0_9_0.md +0 -0
  269. {workbench-0.8.186 → workbench-0.8.188}/docs/road_maps/0_9_5.md +0 -0
  270. {workbench-0.8.186 → workbench-0.8.188}/docs/themes/details.md +0 -0
  271. {workbench-0.8.186 → workbench-0.8.188}/docs/themes/index.md +0 -0
  272. {workbench-0.8.186 → workbench-0.8.188}/examples/ag-grid/hello_world.py +0 -0
  273. {workbench-0.8.186 → workbench-0.8.188}/examples/chem_utils/tautomerize_smiles.py +0 -0
  274. {workbench-0.8.186 → workbench-0.8.188}/examples/datasource/datasource_from_df.py +0 -0
  275. {workbench-0.8.186 → workbench-0.8.188}/examples/datasource/datasource_from_s3.py +0 -0
  276. {workbench-0.8.186 → workbench-0.8.188}/examples/datasource/datasource_query.py +0 -0
  277. {workbench-0.8.186 → workbench-0.8.188}/examples/datasource/datasource_stats.py +0 -0
  278. {workbench-0.8.186 → workbench-0.8.188}/examples/datasource/datasource_to_featureset.py +0 -0
  279. {workbench-0.8.186 → workbench-0.8.188}/examples/endpoint/endpoint_details.py +0 -0
  280. {workbench-0.8.186 → workbench-0.8.188}/examples/endpoint/endpoint_metrics.py +0 -0
  281. {workbench-0.8.186 → workbench-0.8.188}/examples/featureset/featureset_eda.py +0 -0
  282. {workbench-0.8.186 → workbench-0.8.188}/examples/featureset/featureset_query.py +0 -0
  283. {workbench-0.8.186 → workbench-0.8.188}/examples/glue_jobs/glue_example_1.py +0 -0
  284. {workbench-0.8.186 → workbench-0.8.188}/examples/glue_jobs/glue_example_2.py +0 -0
  285. {workbench-0.8.186 → workbench-0.8.188}/examples/glue_jobs/glue_example_3.py +0 -0
  286. {workbench-0.8.186 → workbench-0.8.188}/examples/glue_jobs/glue_launcher_examples/example_1.py +0 -0
  287. {workbench-0.8.186 → workbench-0.8.188}/examples/glue_jobs/glue_launcher_examples/example_2.py +0 -0
  288. {workbench-0.8.186 → workbench-0.8.188}/examples/meta/meta_list_endpoints.py +0 -0
  289. {workbench-0.8.186 → workbench-0.8.188}/examples/meta/meta_list_models.py +0 -0
  290. {workbench-0.8.186 → workbench-0.8.188}/examples/meta/meta_model_metrics.py +0 -0
  291. {workbench-0.8.186 → workbench-0.8.188}/examples/ml_pipelines/list_models.py +0 -0
  292. {workbench-0.8.186 → workbench-0.8.188}/examples/ml_pipelines/wine_classifier.py +0 -0
  293. {workbench-0.8.186 → workbench-0.8.188}/examples/model_utils/model_metrics.py +0 -0
  294. {workbench-0.8.186 → workbench-0.8.188}/examples/model_utils/model_to_endpoint.py +0 -0
  295. {workbench-0.8.186 → workbench-0.8.188}/examples/model_utils/onboard_model.py +0 -0
  296. {workbench-0.8.186 → workbench-0.8.188}/examples/models/custom_model.py +0 -0
  297. {workbench-0.8.186 → workbench-0.8.188}/examples/models/dbscan.py +0 -0
  298. {workbench-0.8.186 → workbench-0.8.188}/examples/models/knn.py +0 -0
  299. {workbench-0.8.186 → workbench-0.8.188}/examples/models/pytorch.py +0 -0
  300. {workbench-0.8.186 → workbench-0.8.188}/examples/models/random_forest.py +0 -0
  301. {workbench-0.8.186 → workbench-0.8.188}/examples/models/smiles_to_md_v1.py +0 -0
  302. {workbench-0.8.186 → workbench-0.8.188}/examples/models/uq/bayesian_ridge.py +0 -0
  303. {workbench-0.8.186 → workbench-0.8.188}/examples/models/uq/ensemble_xgb.py +0 -0
  304. {workbench-0.8.186 → workbench-0.8.188}/examples/models/uq/gaussian_process.py +0 -0
  305. {workbench-0.8.186 → workbench-0.8.188}/examples/models/uq/mapie.py +0 -0
  306. {workbench-0.8.186 → workbench-0.8.188}/examples/models/uq/meta_uq.py +0 -0
  307. {workbench-0.8.186 → workbench-0.8.188}/examples/models/uq/ngboost.py +0 -0
  308. {workbench-0.8.186 → workbench-0.8.188}/examples/models/uq/quant_xgb.py +0 -0
  309. {workbench-0.8.186 → workbench-0.8.188}/examples/monitor/monitor_setup.py +0 -0
  310. {workbench-0.8.186 → workbench-0.8.188}/examples/monitor/monitor_usage.py +0 -0
  311. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/branding/Readme.md +0 -0
  312. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/branding/scp.json +0 -0
  313. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/components/custom_plugin.py +0 -0
  314. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/components/endpoint_plugin.py +0 -0
  315. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/components/endpoint_turbo.py +0 -0
  316. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/components/model_markdown.py +0 -0
  317. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/components/model_plugin.py +0 -0
  318. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/packages/my_plugin_utils/__init__.py +0 -0
  319. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/packages/my_plugin_utils/assets/foo.json +0 -0
  320. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/packages/my_plugin_utils/cool_stuff.py +0 -0
  321. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/pages/plugin_page_1.py +0 -0
  322. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/pages/plugin_page_2.py +0 -0
  323. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/pages/plugin_page_3.py +0 -0
  324. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/templates/Readme.md +0 -0
  325. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/views/model_plugin_view.py +0 -0
  326. {workbench-0.8.186 → workbench-0.8.188}/examples/plugins/views/my_view_plugin.py +0 -0
  327. {workbench-0.8.186 → workbench-0.8.188}/examples/storage/data_to_data.py +0 -0
  328. {workbench-0.8.186 → workbench-0.8.188}/examples/storage/data_to_features.py +0 -0
  329. {workbench-0.8.186 → workbench-0.8.188}/examples/storage/endpoint_inference.py +0 -0
  330. {workbench-0.8.186 → workbench-0.8.188}/examples/storage/hello_world_pipeline.py +0 -0
  331. {workbench-0.8.186 → workbench-0.8.188}/examples/storage/plugin_page_example.py +0 -0
  332. {workbench-0.8.186 → workbench-0.8.188}/experiments/chem_info/bulk_sims.py +0 -0
  333. {workbench-0.8.186 → workbench-0.8.188}/experiments/chem_info/knn_sims.py +0 -0
  334. {workbench-0.8.186 → workbench-0.8.188}/experiments/chemprop_model.py +0 -0
  335. {workbench-0.8.186 → workbench-0.8.188}/experiments/confidence_roc_curve.py +0 -0
  336. {workbench-0.8.186 → workbench-0.8.188}/experiments/coverage_probability.py +0 -0
  337. {workbench-0.8.186 → workbench-0.8.188}/experiments/log_testing.py +0 -0
  338. {workbench-0.8.186 → workbench-0.8.188}/experiments/mapie_model.py +0 -0
  339. {workbench-0.8.186 → workbench-0.8.188}/experiments/neighbor_outliers.py +0 -0
  340. {workbench-0.8.186 → workbench-0.8.188}/experiments/networkx_id.py +0 -0
  341. {workbench-0.8.186 → workbench-0.8.188}/experiments/prediction_intervals.py +0 -0
  342. {workbench-0.8.186 → workbench-0.8.188}/experiments/pytorch_model.py +0 -0
  343. {workbench-0.8.186 → workbench-0.8.188}/experiments/quantile_regression.py +0 -0
  344. {workbench-0.8.186 → workbench-0.8.188}/experiments/quantile_regression_2.py +0 -0
  345. {workbench-0.8.186 → workbench-0.8.188}/experiments/regression_confidence.py +0 -0
  346. {workbench-0.8.186 → workbench-0.8.188}/experiments/residual_analysis.py +0 -0
  347. {workbench-0.8.186 → workbench-0.8.188}/experiments/rocauc_testing.py +0 -0
  348. {workbench-0.8.186 → workbench-0.8.188}/experiments/scatter_zoom_issue.py +0 -0
  349. {workbench-0.8.186 → workbench-0.8.188}/experiments/sol_pipeline.py +0 -0
  350. {workbench-0.8.186 → workbench-0.8.188}/glue_jobs/create_glue_workflow_with_trigger.py +0 -0
  351. {workbench-0.8.186 → workbench-0.8.188}/glue_jobs/example_glue_job.py +0 -0
  352. {workbench-0.8.186 → workbench-0.8.188}/glue_jobs/glue_job_pipeline.py +0 -0
  353. {workbench-0.8.186 → workbench-0.8.188}/glue_jobs/glue_mixed_case.py +0 -0
  354. {workbench-0.8.186 → workbench-0.8.188}/mkdocs.yml +0 -0
  355. {workbench-0.8.186 → workbench-0.8.188}/ml_pipelines/hyper_uq.py +0 -0
  356. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/Readme.md +0 -0
  357. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/inference/Dockerfile +0 -0
  358. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/inference/main.py +0 -0
  359. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/inference/requirements.txt +0 -0
  360. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/inference/serve +0 -0
  361. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/meta_endpoint/Dockerfile +0 -0
  362. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/meta_endpoint/main.py +0 -0
  363. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/meta_endpoint/requirements.txt +0 -0
  364. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/meta_endpoint/serve +0 -0
  365. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/ml_pipelines/ml_pipeline_runner.py +0 -0
  366. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/ml_pipelines/requirements.txt +0 -0
  367. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/pytorch_inference/Dockerfile +0 -0
  368. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/pytorch_inference/main.py +0 -0
  369. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/pytorch_inference/requirements.txt +0 -0
  370. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/pytorch_inference/serve +0 -0
  371. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/pytorch_training/Dockerfile +0 -0
  372. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/pytorch_training/requirements.txt +0 -0
  373. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/pytorch_training/sagemaker_entrypoint.py +0 -0
  374. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/scripts/build_deploy.sh +0 -0
  375. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/tests/data/abalone_sm.csv +0 -0
  376. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/tests/example_model_script.py +0 -0
  377. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/tests/run_tests.sh +0 -0
  378. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/tests/test_inference.py +0 -0
  379. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/tests/test_training.py +0 -0
  380. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/training/Dockerfile +0 -0
  381. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/training/requirements.txt +0 -0
  382. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/training/sagemaker_entrypoint.py +0 -0
  383. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/workbench_inference/Dockerfile +0 -0
  384. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/workbench_inference/main.py +0 -0
  385. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/workbench_inference/requirements.txt +0 -0
  386. {workbench-0.8.186 → workbench-0.8.188}/model_docker_images/workbench_inference/serve +0 -0
  387. {workbench-0.8.186 → workbench-0.8.188}/notebooks/ML_Pipeline_with_Workbench.ipynb +0 -0
  388. {workbench-0.8.186 → workbench-0.8.188}/notebooks/Outliers_in_Workbench.ipynb +0 -0
  389. {workbench-0.8.186 → workbench-0.8.188}/notebooks/Regression_Confidence_Experiments.ipynb +0 -0
  390. {workbench-0.8.186 → workbench-0.8.188}/notebooks/Residual_Analysis.ipynb +0 -0
  391. {workbench-0.8.186 → workbench-0.8.188}/notebooks/images/athena_query_aqsol.png +0 -0
  392. {workbench-0.8.186 → workbench-0.8.188}/notebooks/images/aws_dashboard_aqsol.png +0 -0
  393. {workbench-0.8.186 → workbench-0.8.188}/notebooks/images/dashboard_aqsol_features.png +0 -0
  394. {workbench-0.8.186 → workbench-0.8.188}/notebooks/images/model_screenshot.png +0 -0
  395. {workbench-0.8.186 → workbench-0.8.188}/notebooks/images/scp_labs.png +0 -0
  396. {workbench-0.8.186 → workbench-0.8.188}/presentations/README.md +0 -0
  397. {workbench-0.8.186 → workbench-0.8.188}/scripts/active_logs.sh +0 -0
  398. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/athena_ddl_mixed_case.py +0 -0
  399. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/check_all_glue_tables.py +0 -0
  400. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/db_scan_test.py +0 -0
  401. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/delete_invalid_views.py +0 -0
  402. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/delete_redis_keys.py +0 -0
  403. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/list_datacatalog.py +0 -0
  404. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/migration/copy_glue_database.py +0 -0
  405. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/migration/delete_sageworks_glue_database.sh +0 -0
  406. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/migration/ds_migrate.py +0 -0
  407. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/migration/endpoint_migrate.py +0 -0
  408. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/migration/fs_migrate.py +0 -0
  409. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/migration/model_migrate.py +0 -0
  410. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/pull_image_digest.py +0 -0
  411. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/redis_reaper.py +0 -0
  412. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/spam_list_tags.py +0 -0
  413. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/storage/convert_training_views.py +0 -0
  414. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/storage/migrate_data_source_via_df.py +0 -0
  415. {workbench-0.8.186 → workbench-0.8.188}/scripts/admin/storage/migrate_ds_meta.py +0 -0
  416. {workbench-0.8.186 → workbench-0.8.188}/scripts/ag_table_row_selection.py +0 -0
  417. {workbench-0.8.186 → workbench-0.8.188}/scripts/compare_dataframes.py +0 -0
  418. {workbench-0.8.186 → workbench-0.8.188}/scripts/compare_model_packages.py +0 -0
  419. {workbench-0.8.186 → workbench-0.8.188}/scripts/delete_data_capture.py +0 -0
  420. {workbench-0.8.186 → workbench-0.8.188}/scripts/endpoint_timing.py +0 -0
  421. {workbench-0.8.186 → workbench-0.8.188}/scripts/find_smiles_issues.py +0 -0
  422. {workbench-0.8.186 → workbench-0.8.188}/scripts/get_tags.py +0 -0
  423. {workbench-0.8.186 → workbench-0.8.188}/scripts/instantiation_timings.py +0 -0
  424. {workbench-0.8.186 → workbench-0.8.188}/scripts/llm_deploys/deepseek_deploy.py +0 -0
  425. {workbench-0.8.186 → workbench-0.8.188}/scripts/model_cache_refresh.py +0 -0
  426. {workbench-0.8.186 → workbench-0.8.188}/scripts/model_endpoint_sanity_check.py +0 -0
  427. {workbench-0.8.186 → workbench-0.8.188}/scripts/monitor_event_bridge.py +0 -0
  428. {workbench-0.8.186 → workbench-0.8.188}/scripts/onboard_endpoints.py +0 -0
  429. {workbench-0.8.186 → workbench-0.8.188}/scripts/onboard_models.py +0 -0
  430. {workbench-0.8.186 → workbench-0.8.188}/scripts/pipeline_model_endpoint.py +0 -0
  431. {workbench-0.8.186 → workbench-0.8.188}/scripts/pubchem/pubchem_example.py +0 -0
  432. {workbench-0.8.186 → workbench-0.8.188}/scripts/pubchem/pubchem_query.py +0 -0
  433. {workbench-0.8.186 → workbench-0.8.188}/scripts/pubchem/pubchem_query_with_cid.py +0 -0
  434. {workbench-0.8.186 → workbench-0.8.188}/scripts/sagemaker_feature_group_issue.py +0 -0
  435. {workbench-0.8.186 → workbench-0.8.188}/scripts/seaborn_to_plotly.py +0 -0
  436. {workbench-0.8.186 → workbench-0.8.188}/scripts/storage/dns_data_to_features.py +0 -0
  437. {workbench-0.8.186 → workbench-0.8.188}/scripts/storage/generate_jsonl_data.py +0 -0
  438. {workbench-0.8.186 → workbench-0.8.188}/scripts/test_feature_resolution.py +0 -0
  439. {workbench-0.8.186 → workbench-0.8.188}/scripts/test_feature_set_creation.py +0 -0
  440. {workbench-0.8.186 → workbench-0.8.188}/scripts/test_no_workbench_config.py +0 -0
  441. {workbench-0.8.186 → workbench-0.8.188}/scripts/tox21/test_tox_heuristic.py +0 -0
  442. {workbench-0.8.186 → workbench-0.8.188}/scripts/tox21/tox21_to_df_store.py +0 -0
  443. {workbench-0.8.186 → workbench-0.8.188}/setup.cfg +0 -0
  444. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/__init__.py +0 -0
  445. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/__init__.py +0 -0
  446. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/Readme.md +0 -0
  447. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/__init__.py +0 -0
  448. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/data_source_eda.py +0 -0
  449. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/feature_space_proximity.py +0 -0
  450. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/fingerprint_proximity.py +0 -0
  451. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/projection_2d.py +0 -0
  452. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/proximity.py +0 -0
  453. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/storage/aggregation.py +0 -0
  454. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/storage/feature_resolution.py +0 -0
  455. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/storage/feature_spider.py +0 -0
  456. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/storage/residuals_calculator.py +0 -0
  457. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/storage/row_tagger.py +0 -0
  458. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/dataframe/storage/target_gradients.py +0 -0
  459. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/graph/__init__.py +0 -0
  460. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/graph/heavy/Readme.md +0 -0
  461. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/graph/light/Readme.md +0 -0
  462. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/graph/light/__init__.py +0 -0
  463. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/graph/light/proximity_graph.py +0 -0
  464. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/spark/Readme.md +0 -0
  465. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/sql/Readme.md +0 -0
  466. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/sql/__init__.py +0 -0
  467. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/sql/column_stats.py +0 -0
  468. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/sql/correlations.py +0 -0
  469. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/sql/descriptive_stats.py +0 -0
  470. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/sql/outliers.py +0 -0
  471. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/sql/sample_rows.py +0 -0
  472. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/algorithms/sql/value_counts.py +0 -0
  473. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/__init__.py +0 -0
  474. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/compound.py +0 -0
  475. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/data_source.py +0 -0
  476. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/df_store.py +0 -0
  477. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/endpoint.py +0 -0
  478. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/feature_set.py +0 -0
  479. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/graph_store.py +0 -0
  480. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/meta.py +0 -0
  481. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/model.py +0 -0
  482. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/monitor.py +0 -0
  483. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/parameter_store.py +0 -0
  484. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/api/pipeline.py +0 -0
  485. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/cached/__init__.py +0 -0
  486. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/cached/cached_data_source.py +0 -0
  487. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/cached/cached_endpoint.py +0 -0
  488. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/cached/cached_feature_set.py +0 -0
  489. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/cached/cached_meta.py +0 -0
  490. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/cached/cached_model.py +0 -0
  491. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/cached/cached_pipeline.py +0 -0
  492. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/__init__.py +0 -0
  493. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/__init__.py +0 -0
  494. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/artifact.py +0 -0
  495. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/athena_source.py +0 -0
  496. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/cached_artifact_mixin.py +0 -0
  497. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/data_capture_core.py +0 -0
  498. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/data_source_abstract.py +0 -0
  499. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/data_source_factory.py +0 -0
  500. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/artifacts/monitor_core.py +0 -0
  501. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/README.md +0 -0
  502. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/aws_account_clamp.py +0 -0
  503. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/aws_df_store.py +0 -0
  504. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/aws_graph_store.py +0 -0
  505. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/aws_meta.py +0 -0
  506. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/aws_parameter_store.py +0 -0
  507. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/aws_secrets_manager.py +0 -0
  508. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/aws_session.py +0 -0
  509. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/aws/cache_dataframe.py +0 -0
  510. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/azure/README.md +0 -0
  511. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/cloud_meta.py +0 -0
  512. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/cloud_platform/gcp/README.md +0 -0
  513. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/pipelines/pipeline_executor.py +0 -0
  514. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/Readme.md +0 -0
  515. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/__init__.py +0 -0
  516. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_loaders/__init__.py +0 -0
  517. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_loaders/heavy/__init__.py +0 -0
  518. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_loaders/heavy/s3_heavy_to_data_source.py +0 -0
  519. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_loaders/light/__init__.py +0 -0
  520. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_loaders/light/csv_to_data_source.py +0 -0
  521. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_loaders/light/json_to_data_source.py +0 -0
  522. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_loaders/light/s3_to_data_source_light.py +0 -0
  523. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_data/__init__.py +0 -0
  524. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_data/heavy/__init__.py +0 -0
  525. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_data/heavy/emr/Readme.md +0 -0
  526. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_data/heavy/glue/Readme.md +0 -0
  527. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_data/light/__init__.py +0 -0
  528. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_data/light/clean_data.py +0 -0
  529. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_data/light/data_to_data_light.py +0 -0
  530. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/__init__.py +0 -0
  531. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/heavy/__init__.py +0 -0
  532. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/heavy/chunk/__init__.py +0 -0
  533. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/heavy/chunk/data_to_features_chunk.py +0 -0
  534. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/heavy/emr/Readme.md +0 -0
  535. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/heavy/glue/Readme.md +0 -0
  536. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/heavy/storage/data_to_features_heavy_old.py +0 -0
  537. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/light/__init__.py +0 -0
  538. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/light/data_to_features_light.py +0 -0
  539. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/data_to_features/light/molecular_descriptors.py +0 -0
  540. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/features_to_features/__init__.py +0 -0
  541. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/features_to_features/heavy/emr/Readme.md +0 -0
  542. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/features_to_features/heavy/glue/Readme.md +0 -0
  543. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/features_to_model/__init__.py +0 -0
  544. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/model_to_endpoint/__init__.py +0 -0
  545. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/model_to_endpoint/model_to_endpoint.py +0 -0
  546. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/pandas_transforms/__init__.py +0 -0
  547. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/pandas_transforms/data_to_pandas.py +0 -0
  548. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/pandas_transforms/features_to_pandas.py +0 -0
  549. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/pandas_transforms/pandas_to_data.py +0 -0
  550. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/pandas_transforms/pandas_to_features.py +0 -0
  551. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/pandas_transforms/pandas_to_features_chunked.py +0 -0
  552. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/transforms/transform.py +0 -0
  553. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/__init__.py +0 -0
  554. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/column_subset_view.py +0 -0
  555. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/computation_view.py +0 -0
  556. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/create_view.py +0 -0
  557. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/display_view.py +0 -0
  558. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/inference_view.py +0 -0
  559. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/pandas_to_view.py +0 -0
  560. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/core/views/storage/mdq_view.py +0 -0
  561. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/chem_info/Readme.md +0 -0
  562. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/chem_info/mol_descriptors.py +0 -0
  563. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/chem_info/mol_standardize.py +0 -0
  564. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/chem_info/molecular_descriptors.py +0 -0
  565. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/chem_info/morgan_fingerprints.py +0 -0
  566. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/chem_info/requirements.txt +0 -0
  567. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/meta_endpoints/example.py +0 -0
  568. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/network_security/Readme.md +0 -0
  569. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/proximity/Readme.md +0 -0
  570. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/proximity/feature_space_proximity.template +0 -0
  571. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/proximity/generated_model_script.py +0 -0
  572. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/proximity/proximity.py +0 -0
  573. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/proximity/requirements.txt +0 -0
  574. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/Readme.md +0 -0
  575. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/bayesian_ridge.template +0 -0
  576. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/ensemble_xgb.template +0 -0
  577. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/gaussian_process.template +0 -0
  578. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/generated_model_script.py +0 -0
  579. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/meta_uq.template +0 -0
  580. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/ngboost.template +0 -0
  581. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/proximity.py +0 -0
  582. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_models/uq_models/requirements.txt +0 -0
  583. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_script_example/custom_model_script.py +0 -0
  584. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/custom_script_example/requirements.txt +0 -0
  585. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/ensemble_xgb/ensemble_xgb.template +0 -0
  586. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/ensemble_xgb/generated_model_script.py +0 -0
  587. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/ensemble_xgb/requirements.txt +0 -0
  588. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/pytorch_model/generated_model_script.py +0 -0
  589. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/pytorch_model/pytorch.template +0 -0
  590. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/pytorch_model/requirements.txt +0 -0
  591. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/scikit_learn/generated_model_script.py +0 -0
  592. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/scikit_learn/requirements.txt +0 -0
  593. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/scikit_learn/scikit_learn.template +0 -0
  594. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/script_generation.py +0 -0
  595. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/uq_models/generated_model_script.py +0 -0
  596. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/uq_models/mapie.template +0 -0
  597. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/uq_models/requirements.txt +0 -0
  598. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/xgb_model/requirements.txt +0 -0
  599. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/model_scripts/xgb_model/xgb_model.template +0 -0
  600. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/repl/__init__.py +0 -0
  601. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/repl/workbench_shell.py +0 -0
  602. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/resources/open_source_api.key +0 -0
  603. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/resources/signature_verify_pub.pem +0 -0
  604. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/scripts/check_double_bond_stereo.py +0 -0
  605. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/scripts/glue_launcher.py +0 -0
  606. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/scripts/ml_pipeline_batch.py +0 -0
  607. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/scripts/monitor_cloud_watch.py +0 -0
  608. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/scripts/redis_expire.py +0 -0
  609. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/scripts/redis_report.py +0 -0
  610. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/scripts/show_config.py +0 -0
  611. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/dark/base_css.url +0 -0
  612. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/dark/custom.css +0 -0
  613. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/dark/plotly.json +0 -0
  614. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/light/base_css.url +0 -0
  615. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/light/branding.json +0 -0
  616. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/light/custom.css +0 -0
  617. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/light/plotly.json +0 -0
  618. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/midnight_blue/base_css.url +0 -0
  619. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/midnight_blue/branding.json +0 -0
  620. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/midnight_blue/custom.css +0 -0
  621. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/midnight_blue/plotly.json +0 -0
  622. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/quartz/base_css.url +0 -0
  623. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/quartz/custom.css +0 -0
  624. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/quartz/plotly.json +0 -0
  625. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/quartz_dark/base_css.url +0 -0
  626. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/quartz_dark/custom.css +0 -0
  627. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/themes/quartz_dark/plotly.json +0 -0
  628. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/__init__.py +0 -0
  629. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/ai_compound_generator.py +0 -0
  630. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/ai_summary.py +0 -0
  631. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/ai_synth.py +0 -0
  632. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/athena_utils.py +0 -0
  633. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/aws_utils.py +0 -0
  634. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/bulk_utils.py +0 -0
  635. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/cache.py +0 -0
  636. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/__init__.py +0 -0
  637. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/fingerprints.py +0 -0
  638. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/misc.py +0 -0
  639. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/mol_descriptors.py +0 -0
  640. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/mol_standardize.py +0 -0
  641. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/mol_tagging.py +0 -0
  642. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/projections.py +0 -0
  643. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/salts.py +0 -0
  644. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/sdf.py +0 -0
  645. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/toxicity.py +0 -0
  646. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/chem_utils/vis.py +0 -0
  647. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/cloudwatch_handler.py +0 -0
  648. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/cloudwatch_utils.py +0 -0
  649. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/color_utils.py +0 -0
  650. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/dashboard_metrics.py +0 -0
  651. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/datetime_utils.py +0 -0
  652. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/deprecated_utils.py +0 -0
  653. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/df_to_endpoint.py +0 -0
  654. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/ecs_info.py +0 -0
  655. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/endpoint_metrics.py +0 -0
  656. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/extract_model_artifact.py +0 -0
  657. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/glue_utils.py +0 -0
  658. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/graph_utils.py +0 -0
  659. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/ipython_utils.py +0 -0
  660. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/json_utils.py +0 -0
  661. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/lambda_utils.py +0 -0
  662. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/log_utils.py +0 -0
  663. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/markdown_utils.py +0 -0
  664. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/monitor_utils.py +0 -0
  665. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/pandas_utils.py +0 -0
  666. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/performance_utils.py +0 -0
  667. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/pipeline_utils.py +0 -0
  668. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/plot_utils.py +0 -0
  669. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/plugin_manager.py +0 -0
  670. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/prox_utils.py +0 -0
  671. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/redis_cache.py +0 -0
  672. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/repl_utils.py +0 -0
  673. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/s3_utils.py +0 -0
  674. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/shap_utils.py +0 -0
  675. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/shapley_values.py +0 -0
  676. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/symbols.py +0 -0
  677. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/test_data_generator.py +0 -0
  678. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/theme_manager.py +0 -0
  679. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/trace_calls.py +0 -0
  680. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/type_abbrev.py +0 -0
  681. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/workbench_cache.py +0 -0
  682. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/workbench_event_bridge.py +0 -0
  683. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/workbench_logging.py +0 -0
  684. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/utils/workbench_sqs.py +0 -0
  685. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/component_interface.py +0 -0
  686. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/correlation_matrix.py +0 -0
  687. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/data_details_markdown.py +0 -0
  688. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/endpoint_metric_plots.py +0 -0
  689. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/experiments/dashboard_metric_plots.py +0 -0
  690. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/experiments/outlier_plot.py +0 -0
  691. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/model_plot.py +0 -0
  692. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugin_interface.py +0 -0
  693. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugin_unit_test.py +0 -0
  694. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/ag_table.py +0 -0
  695. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/confusion_matrix.py +0 -0
  696. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/dashboard_status.py +0 -0
  697. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/data_details.py +0 -0
  698. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/endpoint_details.py +0 -0
  699. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/generated_compounds.py +0 -0
  700. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/graph_plot.py +0 -0
  701. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/license_details.py +0 -0
  702. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/model_details.py +0 -0
  703. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/molecule_panel.py +0 -0
  704. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/molecule_viewer.py +0 -0
  705. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/pipeline_details.py +0 -0
  706. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/proximity_mini_graph.py +0 -0
  707. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/scatter_plot.py +0 -0
  708. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/plugins/shap_summary_plot.py +0 -0
  709. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/regression_plot.py +0 -0
  710. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/components/violin_plots.py +0 -0
  711. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/page_views/data_sources_page_view.py +0 -0
  712. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/page_views/endpoints_page_view.py +0 -0
  713. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/page_views/feature_sets_page_view.py +0 -0
  714. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/page_views/main_page.py +0 -0
  715. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/page_views/models_page_view.py +0 -0
  716. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/page_views/page_view.py +0 -0
  717. {workbench-0.8.186 → workbench-0.8.188}/src/workbench/web_interface/page_views/pipelines_page_view.py +0 -0
  718. {workbench-0.8.186 → workbench-0.8.188}/src/workbench.egg-info/dependency_links.txt +0 -0
  719. {workbench-0.8.186 → workbench-0.8.188}/src/workbench.egg-info/requires.txt +0 -0
  720. {workbench-0.8.186 → workbench-0.8.188}/src/workbench.egg-info/top_level.txt +0 -0
  721. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/100_percent_models.py +0 -0
  722. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_aqsol_artifacts.py +0 -0
  723. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_aqsol_rt_artifacts.py +0 -0
  724. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_aqsol_uq_artifacts.py +0 -0
  725. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_basic_test_artifacts.py +0 -0
  726. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_copy_artifacts.py +0 -0
  727. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_empty_model_group.py +0 -0
  728. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_endpoints_for_timing.py +0 -0
  729. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_graph_artifacts.py +0 -0
  730. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_knn_artifacts.py +0 -0
  731. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_meta_endpoints.py +0 -0
  732. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_pipeline_model.py +0 -0
  733. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_proximity_models.py +0 -0
  734. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_quant_regression_artifacts.py +0 -0
  735. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_realtime_endpoint.py +0 -0
  736. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_training_adjusted_artifacts.py +0 -0
  737. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/create_wine_artifacts.py +0 -0
  738. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/delete_stress_test_artifacts.py +0 -0
  739. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/delete_test_artifacts.py +0 -0
  740. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/hyper_testing.py +0 -0
  741. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/hyper_uq_testing.py +0 -0
  742. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/regression_ensemble.py +0 -0
  743. {workbench-0.8.186 → workbench-0.8.188}/test_artifacts/stress_test_aws.py +0 -0
  744. {workbench-0.8.186 → workbench-0.8.188}/tests/README.md +0 -0
  745. {workbench-0.8.186 → workbench-0.8.188}/tests/artifacts/data_source_tests.py +0 -0
  746. {workbench-0.8.186 → workbench-0.8.188}/tests/artifacts/empty_model_group.py +0 -0
  747. {workbench-0.8.186 → workbench-0.8.188}/tests/artifacts/featureset_ingest_boundaries.py +0 -0
  748. {workbench-0.8.186 → workbench-0.8.188}/tests/artifacts/featureset_tests.py +0 -0
  749. {workbench-0.8.186 → workbench-0.8.188}/tests/artifacts/graph_tests.py +0 -0
  750. {workbench-0.8.186 → workbench-0.8.188}/tests/artifacts/model_metrics_tests.py +0 -0
  751. {workbench-0.8.186 → workbench-0.8.188}/tests/artifacts/model_tests.py +0 -0
  752. {workbench-0.8.186 → workbench-0.8.188}/tests/aws_account/aws_account_clamp_tests.py +0 -0
  753. {workbench-0.8.186 → workbench-0.8.188}/tests/cached/cached_artifact_tests.py +0 -0
  754. {workbench-0.8.186 → workbench-0.8.188}/tests/chem_info/test_tautomerization.py +0 -0
  755. {workbench-0.8.186 → workbench-0.8.188}/tests/corner_cases/end_to_end.py +0 -0
  756. {workbench-0.8.186 → workbench-0.8.188}/tests/df_store/df_store_tests.py +0 -0
  757. {workbench-0.8.186 → workbench-0.8.188}/tests/lambda/decompress_layers.py +0 -0
  758. {workbench-0.8.186 → workbench-0.8.188}/tests/pandas_tests/test_drift.py +0 -0
  759. {workbench-0.8.186 → workbench-0.8.188}/tests/parameter_store/param_store_tests.py +0 -0
  760. {workbench-0.8.186 → workbench-0.8.188}/tests/plugin_tests/crashing_plugin.py +0 -0
  761. {workbench-0.8.186 → workbench-0.8.188}/tests/pytorch/pytorch_hello.py +0 -0
  762. {workbench-0.8.186 → workbench-0.8.188}/tests/requirements-dev.txt +0 -0
  763. {workbench-0.8.186 → workbench-0.8.188}/tests/specific/capital_tests.py +0 -0
  764. {workbench-0.8.186 → workbench-0.8.188}/tests/specific/column_changes.py +0 -0
  765. {workbench-0.8.186 → workbench-0.8.188}/tests/specific/config_manager.py +0 -0
  766. {workbench-0.8.186 → workbench-0.8.188}/tests/specific/deletion_tests.py +0 -0
  767. {workbench-0.8.186 → workbench-0.8.188}/tests/specific/shap_tests.py +0 -0
  768. {workbench-0.8.186 → workbench-0.8.188}/tests/transforms/data_to_data_tests.py +0 -0
  769. {workbench-0.8.186 → workbench-0.8.188}/tests/transforms/data_to_features_tests.py +0 -0
  770. {workbench-0.8.186 → workbench-0.8.188}/tests/transforms/features_to_model_tests.py +0 -0
  771. {workbench-0.8.186 → workbench-0.8.188}/tests/transforms/model_to_endpoint_tests.py +0 -0
  772. {workbench-0.8.186 → workbench-0.8.188}/tests/transforms/pandas_to_data_tests.py +0 -0
  773. {workbench-0.8.186 → workbench-0.8.188}/tests/transforms/pandas_to_features_test.py +0 -0
  774. {workbench-0.8.186 → workbench-0.8.188}/tests/views/view_tests.py +0 -0
  775. {workbench-0.8.186 → workbench-0.8.188}/tests/views/view_tests_complex.py +0 -0
  776. {workbench-0.8.186 → workbench-0.8.188}/tests/web_components/confusion_matrix_test.py +0 -0
  777. {workbench-0.8.186 → workbench-0.8.188}/tests/web_components/correlation_matrix_test.py +0 -0
  778. {workbench-0.8.186 → workbench-0.8.188}/tests/web_components/graph_plot_test.py +0 -0
  779. {workbench-0.8.186 → workbench-0.8.188}/tests/web_components/plugin_interface_test.py +0 -0
  780. {workbench-0.8.186 → workbench-0.8.188}/tests/web_components/scatter_plot_test.py +0 -0
  781. {workbench-0.8.186 → workbench-0.8.188}/ui_testing/assets/custom.css +0 -0
  782. {workbench-0.8.186 → workbench-0.8.188}/ui_testing/table_comparison.py +0 -0
  783. {workbench-0.8.186 → workbench-0.8.188}/ui_testing/theme_switching.py +0 -0
  784. {workbench-0.8.186 → workbench-0.8.188}/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.186
3
+ Version: 0.8.188
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
@@ -10,6 +10,7 @@ Classifier: Development Status :: 4 - Beta
10
10
  Classifier: Programming Language :: Python :: 3.10
11
11
  Classifier: Programming Language :: Python :: 3.11
12
12
  Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
13
14
  Classifier: Topic :: Scientific/Engineering
14
15
  Requires-Python: >=3.10
15
16
  Description-Content-Type: text/markdown
@@ -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.182
32
+ RUN pip install --no-cache-dir workbench==0.8.186
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
  ],
@@ -19,6 +19,7 @@ classifiers = [
19
19
  "Programming Language :: Python :: 3.10",
20
20
  "Programming Language :: Python :: 3.11",
21
21
  "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
22
23
  "Topic :: Scientific/Engineering",
23
24
  ]
24
25
  authors = [{ name = "SuperCowPowers LLC", email = "support@supercowpowers.com" }]
@@ -92,6 +93,7 @@ workbench_config = "workbench.scripts.show_config:main"
92
93
  glue_launcher = "workbench.scripts.glue_launcher:main"
93
94
  ml_pipeline_batch = "workbench.scripts.ml_pipeline_batch:main"
94
95
  ml_pipeline_sqs = "workbench.scripts.ml_pipeline_sqs:main"
96
+ lambda_launcher = "workbench.scripts.lambda_launcher:main"
95
97
 
96
98
  [tool.pytest.ini_options]
97
99
  addopts = "-v --cov-report term-missing"
@@ -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.")
@@ -0,0 +1,39 @@
1
+ import sys
2
+ import os
3
+ import importlib.util
4
+
5
+
6
+ def main():
7
+ if len(sys.argv) != 2:
8
+ print("Usage: lambda_launcher <handler_module_name>")
9
+ sys.exit(1)
10
+
11
+ handler_file = sys.argv[1]
12
+
13
+ # Add .py if not present
14
+ if not handler_file.endswith(".py"):
15
+ handler_file += ".py"
16
+
17
+ # Check if file exists
18
+ if not os.path.exists(handler_file):
19
+ print(f"Error: File '{handler_file}' not found")
20
+ sys.exit(1)
21
+
22
+ # Load the module dynamically
23
+ spec = importlib.util.spec_from_file_location("lambda_module", handler_file)
24
+ lambda_module = importlib.util.module_from_spec(spec)
25
+ spec.loader.exec_module(lambda_module)
26
+
27
+ # Call the lambda_handler
28
+ print(f"Invoking lambda_handler from {handler_file}...")
29
+ print("-" * 50)
30
+
31
+ result = lambda_module.lambda_handler({}, {})
32
+
33
+ print("-" * 50)
34
+ print("Result:")
35
+ print(result)
36
+
37
+
38
+ if __name__ == "__main__":
39
+ main()
@@ -158,9 +158,14 @@ def main():
158
158
  action="store_true",
159
159
  help="Set DT=True (models and endpoints will have '-dt' suffix)",
160
160
  )
161
+ parser.add_argument(
162
+ "--promote",
163
+ action="store_true",
164
+ help="Set Promote=True (models and endpoints will use promoted naming",
165
+ )
161
166
  args = parser.parse_args()
162
167
  try:
163
- submit_to_sqs(args.script_file, args.size, realtime=args.realtime, dt=args.dt)
168
+ submit_to_sqs(args.script_file, args.size, realtime=args.realtime, dt=args.dt, promote=args.promote)
164
169
  except Exception as e:
165
170
  print(f"\n❌ ERROR: {e}")
166
171
  log.error(f"Error: {e}")
@@ -4,16 +4,13 @@ import os
4
4
  import sys
5
5
  import platform
6
6
  import logging
7
- import importlib.resources as resources # noqa: F401 Python 3.9 compatibility
8
7
  from typing import Any, Dict
8
+ from importlib.resources import files, as_file
9
9
 
10
10
  # Workbench imports
11
11
  from workbench.utils.license_manager import LicenseManager
12
12
  from workbench_bridges.utils.execution_environment import running_as_service
13
13
 
14
- # Python 3.9 compatibility
15
- from workbench.utils.resource_utils import get_resource_path
16
-
17
14
 
18
15
  class FatalConfigError(Exception):
19
16
  """Exception raised for errors in the configuration."""
@@ -172,8 +169,7 @@ class ConfigManager:
172
169
  Returns:
173
170
  str: The open source API key.
174
171
  """
175
- # Python 3.9 compatibility
176
- with get_resource_path("workbench.resources", "open_source_api.key") as open_source_key_path:
172
+ with as_file(files("workbench.resources").joinpath("open_source_api.key")) as open_source_key_path:
177
173
  with open(open_source_key_path, "r") as key_file:
178
174
  return key_file.read().strip()
179
175
 
@@ -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
@@ -6,15 +6,12 @@ import json
6
6
  import logging
7
7
  import requests
8
8
  from typing import Union
9
- import importlib.resources as resources # noqa: F401 Python 3.9 compatibility
10
9
  from datetime import datetime
11
10
  from cryptography.hazmat.primitives import hashes
12
11
  from cryptography.hazmat.primitives.asymmetric import padding
13
12
  from cryptography.hazmat.primitives import serialization
14
13
  from cryptography.hazmat.backends import default_backend
15
-
16
- # Python 3.9 compatibility
17
- from workbench.utils.resource_utils import get_resource_path
14
+ from importlib.resources import files, as_file
18
15
 
19
16
 
20
17
  class FatalLicenseError(Exception):
@@ -140,8 +137,7 @@ class LicenseManager:
140
137
  Returns:
141
138
  The public key as an object.
142
139
  """
143
- # Python 3.9 compatibility
144
- with get_resource_path("workbench.resources", "signature_verify_pub.pem") as public_key_path:
140
+ with as_file(files("workbench.resources").joinpath("signature_verify_pub.pem")) as public_key_path:
145
141
  with open(public_key_path, "rb") as key_file:
146
142
  public_key_data = key_file.read()
147
143