Source code for semi_cr.core.lab.utils.qharbor.dataset

from dataclasses import asdict

from qdrive import authenticate_with_console, dataset

from .attributes import MeasurementAttributes


[docs] def flatten_unique(d): result = {} for key, value in d.items(): if isinstance(value, dict): nested = flatten_unique(value) for k, v in nested.items(): if k in result: raise ValueError(f"Duplicate key found: {k}") result[k] = v else: if key in result: raise ValueError(f"Duplicate key found: {key}") result[key] = value return result
[docs] def make_qharbor_dataset(attributes: MeasurementAttributes) -> dataset: qharbor_attributes = attributes.qharbor_attributes qharbor_attributes_dict = asdict(qharbor_attributes) qharbor_attributes_flat = flatten_unique(qharbor_attributes_dict) qharbor_dataset = dataset.create( name=attributes.name, description=attributes.description, scope_name=attributes.scope, attributes=qharbor_attributes_flat, ) try: return qharbor_dataset except Exception: authenticate_with_console() return qharbor_dataset