Spaces:
Running
Running
import yaml | |
import giskard as gsk | |
import time | |
class PipelineReport: | |
def __init__(self, scan_result): | |
self.scan_result = scan_result | |
def to_html(self): | |
return self.scan_result.to_html() | |
def to_markdown(self, template): | |
return self.scan_result.to_markdown(template="github") | |
class PipelineRunner: | |
def __init__(self, loaders): | |
self.loaders = loaders | |
def run(self, loader_id, **kwargs): | |
# Get the loader | |
loader = self.loaders[loader_id] | |
# Get scan configuration | |
scan_config_path = kwargs.pop("scan_config", None) | |
params, detectors = None, None | |
if scan_config_path is not None: | |
with open(scan_config_path) as yaml_f: | |
scan_config = yaml.load(yaml_f, Loader=yaml.Loader) | |
params = dict(scan_config.get("configuration", None)) | |
detectors = list(scan_config.get("detectors", None)) | |
start = time.time() | |
# Load the model and dataset | |
gsk_model, gsk_dataset = loader.load_giskard_model_dataset(**kwargs) | |
print(f"Loading took {time.time() - start:.2f}s") | |
start = time.time() | |
# Run the scanner | |
scan_result = gsk.scan(gsk_model, gsk_dataset, params=params, only=detectors) | |
print(f"Scanning took {time.time() - start:.2f}s") | |
# Report | |
report = PipelineReport(scan_result) | |
return report | |