Source code for marshmallow_utils.fields.identifier

# -*- coding: utf-8 -*-
#
# Copyright (C) 2021-2022 CERN.
#
# Marshmallow-Utils is free software; you can redistribute it and/or modify
# it under the terms of the MIT License; see LICENSE file for more details.

"""Identifier field."""

from marshmallow.fields import List


[docs]class IdentifierSet(List): """Identifier list with deduplication. It assumes the items of the list contain a *scheme* property. """ default_error_messages = { "multiple_values": "Only one identifier per scheme is allowed.", } def _validate(self, value): """Validates the list of identifiers.""" schemes = [identifier["scheme"] for identifier in value] if not len(value) == len(set(schemes)): raise self.make_error(key="multiple_values")