workbench 0.8.157__py3-none-any.whl → 0.8.158__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- workbench/core/artifacts/data_source_abstract.py +1 -1
- workbench/core/artifacts/feature_set_core.py +2 -6
- workbench/core/transforms/pandas_transforms/pandas_to_features.py +6 -1
- workbench/model_scripts/xgb_model/generated_model_script.py +4 -4
- workbench/utils/cloudwatch_handler.py +1 -9
- {workbench-0.8.157.dist-info → workbench-0.8.158.dist-info}/METADATA +3 -3
- {workbench-0.8.157.dist-info → workbench-0.8.158.dist-info}/RECORD +11 -11
- {workbench-0.8.157.dist-info → workbench-0.8.158.dist-info}/WHEEL +0 -0
- {workbench-0.8.157.dist-info → workbench-0.8.158.dist-info}/entry_points.txt +0 -0
- {workbench-0.8.157.dist-info → workbench-0.8.158.dist-info}/licenses/LICENSE +0 -0
- {workbench-0.8.157.dist-info → workbench-0.8.158.dist-info}/top_level.txt +0 -0
|
@@ -614,12 +614,8 @@ class FeatureSetCore(Artifact):
|
|
|
614
614
|
Note: Since FeatureSet is a composite of DataSource and FeatureGroup, we need to
|
|
615
615
|
check both to see if the FeatureSet is ready."""
|
|
616
616
|
|
|
617
|
-
# Check
|
|
618
|
-
|
|
619
|
-
existing_meta = self.workbench_meta()
|
|
620
|
-
feature_set_ready = set(existing_meta.keys()).issuperset(expected_meta)
|
|
621
|
-
if not feature_set_ready:
|
|
622
|
-
self.log.info(f"FeatureSet {self.name} is not ready!")
|
|
617
|
+
# Check if our parent class (Artifact) is ready
|
|
618
|
+
if not super().ready():
|
|
623
619
|
return False
|
|
624
620
|
|
|
625
621
|
# Okay now call/return the DataSource ready() method
|
|
@@ -378,13 +378,18 @@ class PandasToFeatures(Transform):
|
|
|
378
378
|
def ensure_feature_group_created(self, feature_group):
|
|
379
379
|
status = feature_group.describe().get("FeatureGroupStatus")
|
|
380
380
|
while status == "Creating":
|
|
381
|
-
self.log.debug("FeatureSet being Created
|
|
381
|
+
self.log.debug("FeatureSet being Created…")
|
|
382
382
|
time.sleep(5)
|
|
383
383
|
status = feature_group.describe().get("FeatureGroupStatus")
|
|
384
|
+
|
|
384
385
|
if status == "Created":
|
|
385
386
|
self.log.info(f"FeatureSet {feature_group.name} successfully created")
|
|
386
387
|
else:
|
|
388
|
+
# Get the detailed failure reason
|
|
389
|
+
description = feature_group.describe()
|
|
390
|
+
failure_reason = description.get("FailureReason", "No failure reason provided")
|
|
387
391
|
self.log.critical(f"FeatureSet {feature_group.name} creation failed with status: {status}")
|
|
392
|
+
self.log.critical(f"Failure reason: {failure_reason}")
|
|
388
393
|
|
|
389
394
|
def wait_for_rows(self, expected_rows: int):
|
|
390
395
|
"""Wait for AWS Feature Group to fully populate the Offline Storage"""
|
|
@@ -29,11 +29,11 @@ from typing import List, Tuple
|
|
|
29
29
|
# Template Parameters
|
|
30
30
|
TEMPLATE_PARAMS = {
|
|
31
31
|
"model_type": "regressor",
|
|
32
|
-
"target_column": "
|
|
33
|
-
"features": ['
|
|
32
|
+
"target_column": "iq_score",
|
|
33
|
+
"features": ['height', 'weight', 'salary', 'age', 'likes_dogs'],
|
|
34
34
|
"compressed_features": [],
|
|
35
|
-
"model_metrics_s3_path": "s3://
|
|
36
|
-
"train_all_data":
|
|
35
|
+
"model_metrics_s3_path": "s3://sandbox-sageworks-artifacts/models/abc-regression/training",
|
|
36
|
+
"train_all_data": False
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
# Function to check if dataframe is empty
|
|
@@ -35,8 +35,7 @@ class CloudWatchHandler(logging.Handler):
|
|
|
35
35
|
self.sequence_token = None
|
|
36
36
|
self.log_group_name = "WorkbenchLogGroup"
|
|
37
37
|
|
|
38
|
-
# Create the log
|
|
39
|
-
self.create_log_group()
|
|
38
|
+
# Create the log stream
|
|
40
39
|
self.create_log_stream()
|
|
41
40
|
|
|
42
41
|
def emit(self, record):
|
|
@@ -94,13 +93,6 @@ class CloudWatchHandler(logging.Handler):
|
|
|
94
93
|
"""Ensure all logs are sent"""
|
|
95
94
|
self.send_logs() # Flush remaining logs in the buffer
|
|
96
95
|
|
|
97
|
-
def create_log_group(self):
|
|
98
|
-
"""Create CloudWatch Log Group if it doesn't exist"""
|
|
99
|
-
try:
|
|
100
|
-
self.cloudwatch_client.create_log_group(logGroupName=self.log_group_name)
|
|
101
|
-
except self.cloudwatch_client.exceptions.ResourceAlreadyExistsException:
|
|
102
|
-
pass
|
|
103
|
-
|
|
104
96
|
def create_log_stream(self):
|
|
105
97
|
"""Create CloudWatch Log Stream if it doesn't exist"""
|
|
106
98
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: workbench
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.158
|
|
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
|
|
@@ -107,9 +107,9 @@ All of the Dashboard pages, subpages, and plugins use our new `ThemeManager()` c
|
|
|
107
107
|
|
|
108
108
|
Powered by AWS® to accelerate your Machine Learning Pipelines development with our new [Dashboard for ML Pipelines](https://aws.amazon.com/marketplace/pp/prodview-5idedc7uptbqo). Getting started with Workbench is a snap and can be billed through AWS.
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
### Coming Soon: `v0.9`
|
|
111
111
|
|
|
112
|
-
We'
|
|
112
|
+
We're getting ready for our `v0.9` release. Here's the road map: [Workbench RoadMaps](https://supercowpowers.github.io/workbench/road_maps/0_9_0/)
|
|
113
113
|
|
|
114
114
|
# Welcome to Workbench
|
|
115
115
|
The Workbench framework makes AWS® both easier to use and more powerful. Workbench handles all the details around updating and managing a complex set of AWS Services. With a simple-to-use Python API and a beautiful set of web interfaces, Workbench makes creating AWS ML pipelines a snap. It also dramatically improves both the usability and visibility across the entire spectrum of services: Glue Job, Athena, Feature Store, Models, and Endpoints, Workbench makes it easy to build production ready, AWS powered, machine learning pipelines.
|
|
@@ -51,10 +51,10 @@ workbench/core/artifacts/__init__.py,sha256=ps7rA_rbWnDbvWbg4kvu--IKMY8WmbPRyv4S
|
|
|
51
51
|
workbench/core/artifacts/artifact.py,sha256=mF1lqQ8EP43zMRSxqPYuWoHRwQTjyWdpW9LewU7utEE,17517
|
|
52
52
|
workbench/core/artifacts/athena_source.py,sha256=RNmCe7s6uH4gVHpcdJcL84aSbF5Q1ahJBLLGwHYRXEU,26081
|
|
53
53
|
workbench/core/artifacts/cached_artifact_mixin.py,sha256=TNRq-4frDS0GRodfnz6qN2SGP0U_QglZw5X5gw-K7-Y,3755
|
|
54
|
-
workbench/core/artifacts/data_source_abstract.py,sha256=
|
|
54
|
+
workbench/core/artifacts/data_source_abstract.py,sha256=5IRCzFVK-17cd4NXPMRfx99vQAmQ0WHE5jcm5RfsVTg,10619
|
|
55
55
|
workbench/core/artifacts/data_source_factory.py,sha256=YL_tA5fsgubbB3dPF6T4tO0rGgz-6oo3ge4i_YXVC-M,2380
|
|
56
56
|
workbench/core/artifacts/endpoint_core.py,sha256=L6uWOxHKItjbpRS2rFrAbxAqDyZIv2CO9dnZpohKrUI,48768
|
|
57
|
-
workbench/core/artifacts/feature_set_core.py,sha256=
|
|
57
|
+
workbench/core/artifacts/feature_set_core.py,sha256=055VdSYR09HP4ygAuYvIYtHQ7Ec4XxsZygpgEl5H5jQ,29136
|
|
58
58
|
workbench/core/artifacts/model_core.py,sha256=WjiZyqwUVeVZF22FO8zXFoHmgh-Vd6c_KQLx_da_FTQ,50194
|
|
59
59
|
workbench/core/artifacts/monitor_core.py,sha256=BP6UuCyBI4zB2wwcIXvUw6RC0EktTcQd5Rv0x73qzio,37670
|
|
60
60
|
workbench/core/cloud_platform/cloud_meta.py,sha256=J3qqMLdzikRRI9TC7UEk9Ib2-64ovU8X-lzLxhze1uY,8669
|
|
@@ -108,7 +108,7 @@ workbench/core/transforms/pandas_transforms/__init__.py,sha256=xL4MT8-fZ1SFqDbTL
|
|
|
108
108
|
workbench/core/transforms/pandas_transforms/data_to_pandas.py,sha256=sJHPeuNF8Q8aQqgRnkdWkyvur5cbggdUVIwR-xF3Dlo,3621
|
|
109
109
|
workbench/core/transforms/pandas_transforms/features_to_pandas.py,sha256=af6xdPt2V4zhh-SzQa_UYxdmNMzMLXbrbsznV5QoIJg,3441
|
|
110
110
|
workbench/core/transforms/pandas_transforms/pandas_to_data.py,sha256=cqo6hQmzUGUFACvNuVLZQdgrlXrQIu4NjqK-ujPmoIc,9181
|
|
111
|
-
workbench/core/transforms/pandas_transforms/pandas_to_features.py,sha256=
|
|
111
|
+
workbench/core/transforms/pandas_transforms/pandas_to_features.py,sha256=XiUz2BqOX4N34g6hvFvcLswhkEouyU0AjyIy9EGv2zg,20440
|
|
112
112
|
workbench/core/transforms/pandas_transforms/pandas_to_features_chunked.py,sha256=0R8mQlWfbIlTVmYUmrtu2gsw0AE815k6kqPgpd0bmyQ,4422
|
|
113
113
|
workbench/core/views/__init__.py,sha256=UZJMAJBCMVM3uSYmnFg8c2LWtdu9-479WNAdVMIohAc,962
|
|
114
114
|
workbench/core/views/column_subset_view.py,sha256=vGDKTTGrPIY-IFOeWvudJrhKiq0OjWDp5rTuuj-X40U,4261
|
|
@@ -158,7 +158,7 @@ workbench/model_scripts/quant_regression/quant_regression.template,sha256=AQihff
|
|
|
158
158
|
workbench/model_scripts/quant_regression/requirements.txt,sha256=jWlGc7HH7vqyukTm38LN4EyDi8jDUPEay4n45z-30uc,104
|
|
159
159
|
workbench/model_scripts/scikit_learn/requirements.txt,sha256=aVvwiJ3LgBUhM_PyFlb2gHXu_kpGPho3ANBzlOkfcvs,107
|
|
160
160
|
workbench/model_scripts/scikit_learn/scikit_learn.template,sha256=d4pgeZYFezUQsB-7iIsjsUgB1FM6d27651wpfDdXmI0,12640
|
|
161
|
-
workbench/model_scripts/xgb_model/generated_model_script.py,sha256=
|
|
161
|
+
workbench/model_scripts/xgb_model/generated_model_script.py,sha256=BDExjY02zSbcCloW4VNzHvej_kS3H0uJxa92egoASNY,17954
|
|
162
162
|
workbench/model_scripts/xgb_model/requirements.txt,sha256=jWlGc7HH7vqyukTm38LN4EyDi8jDUPEay4n45z-30uc,104
|
|
163
163
|
workbench/model_scripts/xgb_model/xgb_model.template,sha256=RaUr8X6al5R2IILNKgGUH05Gb4H7AFFG9RE524_VH7Q,17935
|
|
164
164
|
workbench/repl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -197,7 +197,7 @@ workbench/utils/aws_utils.py,sha256=XckM0vzud7Nx1OxD1GoYGLQxdj1PqeQ43cN66tnrRYI,
|
|
|
197
197
|
workbench/utils/bulk_utils.py,sha256=s1lYN2Uk536MNGetekLYL_VL0N34hUjk1FX9BAz3Qu0,1182
|
|
198
198
|
workbench/utils/cache.py,sha256=0R5RXYEz_XHARK3anmQC4VRMawMks_cJ8S4vwC2roAE,5524
|
|
199
199
|
workbench/utils/chem_utils.py,sha256=tLTAvLKTOiYSzbVQF0M8V5-ej36IVgr21CNB2vVJjYQ,56780
|
|
200
|
-
workbench/utils/cloudwatch_handler.py,sha256=
|
|
200
|
+
workbench/utils/cloudwatch_handler.py,sha256=dtnkr8tXtTRAASQ60QO0lz3SRA5LEbzsK1VCIqblfKs,5157
|
|
201
201
|
workbench/utils/color_utils.py,sha256=TmDGLK44t975lkfjt_1O-ee02QxrKfke7vPuXb-V-Uo,11779
|
|
202
202
|
workbench/utils/config_manager.py,sha256=Yj43Ta67dn34XdOcKcOvXw38ln6TRiv4DePXjPt2jg8,17641
|
|
203
203
|
workbench/utils/dashboard_metrics.py,sha256=cNFI0GIAjd_IiDzM1oebsJ2QkRZuW068W_66ZC3J100,7398
|
|
@@ -275,9 +275,9 @@ workbench/web_interface/page_views/main_page.py,sha256=QIGiQPXu5Q9TU15nPEAYa6sjQ
|
|
|
275
275
|
workbench/web_interface/page_views/models_page_view.py,sha256=M0bdC7bAzLyIaE2jviY12FF4abdMFZmg6sFuOY_LaGI,2650
|
|
276
276
|
workbench/web_interface/page_views/page_view.py,sha256=Gh6YnpOGlUejx-bHZAf5pzqoQ1H1R0OSwOpGhOBO06w,455
|
|
277
277
|
workbench/web_interface/page_views/pipelines_page_view.py,sha256=v2pxrIbsHBcYiblfius3JK766NZ7ciD2yPx0t3E5IJo,2656
|
|
278
|
-
workbench-0.8.
|
|
279
|
-
workbench-0.8.
|
|
280
|
-
workbench-0.8.
|
|
281
|
-
workbench-0.8.
|
|
282
|
-
workbench-0.8.
|
|
283
|
-
workbench-0.8.
|
|
278
|
+
workbench-0.8.158.dist-info/licenses/LICENSE,sha256=z4QMMPlLJkZjU8VOKqJkZiQZCEZ--saIU2Z8-p3aVc0,1080
|
|
279
|
+
workbench-0.8.158.dist-info/METADATA,sha256=gzWmV7xJLnwpDa2r_SM6XIOPXR2zNb6shhtoEwHD1d4,9393
|
|
280
|
+
workbench-0.8.158.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
281
|
+
workbench-0.8.158.dist-info/entry_points.txt,sha256=oZykkheWiiIBjRE8cS5SdcxwmZKSFaQEGwMBjNh-eNM,238
|
|
282
|
+
workbench-0.8.158.dist-info/top_level.txt,sha256=Dhy72zTxaA_o_yRkPZx5zw-fwumnjGaeGf0hBN3jc_w,10
|
|
283
|
+
workbench-0.8.158.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|