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.

Potentially problematic release.


This version of workbench might be problematic. Click here for more details.

@@ -259,7 +259,7 @@ class DataSourceAbstract(Artifact):
259
259
  def ready(self) -> bool:
260
260
  """Is the DataSource ready?"""
261
261
 
262
- # Check if the Artifact is ready
262
+ # Check if our parent class (Artifact) is ready
263
263
  if not super().ready():
264
264
  return False
265
265
 
@@ -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 the expected metadata for the FeatureSet
618
- expected_meta = self.expected_meta()
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": "udm_asy_res_value",
33
- "features": ['bcut2d_logplow', 'numradicalelectrons', 'smr_vsa5', 'fr_lactam', 'fr_morpholine', 'fr_aldehyde', 'slogp_vsa1', 'fr_amidine', 'bpol', 'fr_ester', 'fr_azo', 'kappa3', 'peoe_vsa5', 'fr_ketone_topliss', 'vsa_estate9', 'estate_vsa9', 'bcut2d_mrhi', 'fr_ndealkylation1', 'numrotatablebonds', 'minestateindex', 'fr_quatn', 'peoe_vsa3', 'fr_epoxide', 'fr_aniline', 'minpartialcharge', 'fr_nitroso', 'fpdensitymorgan2', 'fr_oxime', 'fr_sulfone', 'smr_vsa1', 'kappa1', 'fr_pyridine', 'numaromaticrings', 'vsa_estate6', 'molmr', 'estate_vsa1', 'fr_dihydropyridine', 'vsa_estate10', 'fr_alkyl_halide', 'chi2n', 'fr_thiocyan', 'fpdensitymorgan1', 'fr_unbrch_alkane', 'slogp_vsa9', 'chi4n', 'fr_nitro_arom', 'fr_al_oh', 'fr_furan', 'fr_c_s', 'peoe_vsa8', 'peoe_vsa14', 'numheteroatoms', 'fr_ndealkylation2', 'maxabspartialcharge', 'vsa_estate2', 'peoe_vsa7', 'apol', 'numhacceptors', 'fr_tetrazole', 'vsa_estate1', 'peoe_vsa9', 'naromatom', 'bcut2d_chghi', 'fr_sh', 'fr_halogen', 'slogp_vsa4', 'fr_benzodiazepine', 'molwt', 'fr_isocyan', 'fr_prisulfonamd', 'maxabsestateindex', 'minabsestateindex', 'peoe_vsa11', 'slogp_vsa12', 'estate_vsa5', 'numaliphaticcarbocycles', 'bcut2d_mwlow', 'slogp_vsa7', 'fr_allylic_oxid', 'fr_methoxy', 'fr_nh0', 'fr_coo2', 'fr_phenol', 'nacid', 'nbase', 'chi3v', 'fr_ar_nh', 'fr_nitrile', 'fr_imidazole', 'fr_urea', 'bcut2d_mrlow', 'chi1', 'smr_vsa6', 'fr_aryl_methyl', 'narombond', 'fr_alkyl_carbamate', 'fr_piperzine', 'exactmolwt', 'qed', 'chi0n', 'fr_sulfonamd', 'fr_thiazole', 'numvalenceelectrons', 'fr_phos_acid', 'peoe_vsa12', 'fr_nh1', 'fr_hdrzine', 'fr_c_o_nocoo', 'fr_lactone', 'estate_vsa6', 'bcut2d_logphi', 'vsa_estate7', 'peoe_vsa13', 'numsaturatedcarbocycles', 'fr_nitro', 'fr_phenol_noorthohbond', 'rotratio', 'fr_barbitur', 'fr_isothiocyan', 'balabanj', 'fr_arn', 'fr_imine', 'maxpartialcharge', 'fr_sulfide', 'slogp_vsa11', 'fr_hoccn', 'fr_n_o', 'peoe_vsa1', 'slogp_vsa6', 'heavyatommolwt', 'fractioncsp3', 'estate_vsa8', 'peoe_vsa10', 'numaliphaticrings', 'fr_thiophene', 'maxestateindex', 'smr_vsa10', 'labuteasa', 'smr_vsa2', 'fpdensitymorgan3', 'smr_vsa9', 'slogp_vsa10', 'numaromaticheterocycles', 'fr_nh2', 'fr_diazo', 'chi3n', 'fr_ar_coo', 'slogp_vsa5', 'fr_bicyclic', 'fr_amide', 'estate_vsa10', 'fr_guanido', 'chi1n', 'numsaturatedrings', 'fr_piperdine', 'fr_term_acetylene', 'estate_vsa4', 'slogp_vsa3', 'fr_coo', 'fr_ether', 'estate_vsa7', 'bcut2d_chglo', 'fr_oxazole', 'peoe_vsa6', 'hallkieralpha', 'peoe_vsa2', 'chi2v', 'nocount', 'vsa_estate5', 'fr_nhpyrrole', 'fr_al_coo', 'bertzct', 'estate_vsa11', 'minabspartialcharge', 'slogp_vsa8', 'fr_imide', 'kappa2', 'numaliphaticheterocycles', 'numsaturatedheterocycles', 'fr_hdrzone', 'smr_vsa4', 'fr_ar_n', 'nrot', 'smr_vsa8', 'slogp_vsa2', 'chi4v', 'fr_phos_ester', 'fr_para_hydroxylation', 'smr_vsa3', 'nhohcount', 'estate_vsa2', 'mollogp', 'tpsa', 'fr_azide', 'peoe_vsa4', 'numhdonors', 'fr_al_oh_notert', 'fr_c_o', 'chi0', 'fr_nitro_arom_nonortho', 'vsa_estate3', 'fr_benzene', 'fr_ketone', 'vsa_estate8', 'smr_vsa7', 'fr_ar_oh', 'fr_priamide', 'ringcount', 'estate_vsa3', 'numaromaticcarbocycles', 'bcut2d_mwhi', 'chi1v', 'heavyatomcount', 'vsa_estate4', 'chi0v'],
32
+ "target_column": "iq_score",
33
+ "features": ['height', 'weight', 'salary', 'age', 'likes_dogs'],
34
34
  "compressed_features": [],
35
- "model_metrics_s3_path": "s3://idb-prod-sageworks-artifacts/models/logd-reg-0-20250717/training",
36
- "train_all_data": True
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 group and stream
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.157
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
- **Road Map: `v0.9.0`**
110
+ ### Coming Soon: `v0.9`
111
111
 
112
- We've used the feedback from our current beta testers to improve the framework and we've constructed a mini road map for the upcoming Workbench version 0.9.0. Please see [Workbench RoadMaps](https://supercowpowers.github.io/workbench/road_maps/0_9_0/)
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=27WVCQkIDO-cj0URdDu-9LLnuWxU_3_0wyLt4iFIwsg,10604
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=7yyy_0RFmrhcXqZHVb0P6suo3ye1tSO_kJqqiGgjrFw,29377
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=wdPFnnVUBbMK2_xTSbGJ9x2TESHf6znHl3LwXtPxlX0,20183
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=aqrDobLcMysjc-q8p5aCyPXPrVlia14CbARRqaG8--Q,21083
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=ocrj4oXIBIBZHax_ekk4E4r-tD-yTrlDmZeKRFBauOo,5491
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.157.dist-info/licenses/LICENSE,sha256=z4QMMPlLJkZjU8VOKqJkZiQZCEZ--saIU2Z8-p3aVc0,1080
279
- workbench-0.8.157.dist-info/METADATA,sha256=F0BA7wvUuJGEBJ-uj84XE6p_e8zM98UVjniG_rP56hE,9497
280
- workbench-0.8.157.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
281
- workbench-0.8.157.dist-info/entry_points.txt,sha256=oZykkheWiiIBjRE8cS5SdcxwmZKSFaQEGwMBjNh-eNM,238
282
- workbench-0.8.157.dist-info/top_level.txt,sha256=Dhy72zTxaA_o_yRkPZx5zw-fwumnjGaeGf0hBN3jc_w,10
283
- workbench-0.8.157.dist-info/RECORD,,
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,,