def _get_endpoint_features( project: str, endpoint_id: str, features: Optional[str] ) -> List[Features]: if not features: url = f"projects/{project}/model-endpoints/{endpoint_id}/features" raise MLRunNotFoundError(f"Endpoint features not found' - {url}") parsed_features: List[dict] = json.loads(features) if features is not None else [] feature_objects = [Features(**feature) for feature in parsed_features] return feature_objects
def get_endpoint_features( feature_names: List[str], feature_stats: Optional[dict], current_stats: Optional[dict], ) -> List[Features]: safe_feature_stats = feature_stats or {} safe_current_stats = current_stats or {} features = [] for name in feature_names: if feature_stats is not None and name not in feature_stats: logger.warn(f"Feature '{name}' missing from 'feature_stats'") if current_stats is not None and name not in current_stats: logger.warn(f"Feature '{name}' missing from 'current_stats'") f = Features.new(name, safe_feature_stats.get(name), safe_current_stats.get(name)) features.append(f) return features