from atlas_um.logs import logger from .claim_values_serializers import RegisteredSerializers class ClaimsSerializer: @classmethod def serialize(cls, query_results): """Expects query_results to be a list of tuples of form: (claim_name, claim_value) """ names = {} for name, value in query_results: if name not in names: names[name] = [value] else: names[name].append(value) claims = {} for name, values in names.items(): serializer_name = name.claim_values_serializer try: serializer = RegisteredSerializers.of(serializer_name) except KeyError: logger.bind(serializer_name=serializer_name).error( "No registered serializer" ) continue claims[name.url] = serializer.serialize(values) return claims