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