febus982/cloudevents-pydantic

View on GitHub
cloudevents_pydantic/events/fields/metadata/_fields.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# ==============================================================================
#  Copyright (c) 2024 Federico Busetti                                         =
#  <729029+febus982@users.noreply.github.com>                                  =
#                                                                              =
#  Permission is hereby granted, free of charge, to any person obtaining a     =
#  copy of this software and associated documentation files (the "Software"),  =
#  to deal in the Software without restriction, including without limitation   =
#  the rights to use, copy, modify, merge, publish, distribute, sublicense,    =
#  and/or sell copies of the Software, and to permit persons to whom the       =
#  Software is furnished to do so, subject to the following conditions:        =
#                                                                              =
#  The above copyright notice and this permission notice shall be included in  =
#  all copies or substantial portions of the Software.                         =
#                                                                              =
#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  =
#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    =
#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL     =
#  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  =
#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     =
#  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         =
#  DEALINGS IN THE SOFTWARE.                                                   =
# ==============================================================================

from cloudevents.pydantic.fields_docs import FIELD_DESCRIPTIONS
from pydantic.fields import Field, FieldInfo


def _ce_field_metadata(field_name: str) -> FieldInfo:
    return Field(
        title=FIELD_DESCRIPTIONS[field_name].get("title"),
        description=FIELD_DESCRIPTIONS[field_name].get("description"),
        examples=[FIELD_DESCRIPTIONS[field_name].get("example")],
    )


FieldData: FieldInfo = _ce_field_metadata("data")
FieldSource: FieldInfo = _ce_field_metadata("source")
FieldId: FieldInfo = _ce_field_metadata("id")
FieldType: FieldInfo = _ce_field_metadata("type")
FieldSpecVersion: FieldInfo = _ce_field_metadata("specversion")
FieldTime: FieldInfo = _ce_field_metadata("time")
FieldSubject: FieldInfo = _ce_field_metadata("subject")
FieldDataContentType: FieldInfo = _ce_field_metadata("datacontenttype")
FieldDataSchema: FieldInfo = _ce_field_metadata("dataschema")