Coverage for C: \ Users \ peaco \ OneDrive \ Documents \ GitHub \ mt_metadata \ mt_metadata \ common \ copyright.py: 93%
15 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-10 00:11 -0800
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-10 00:11 -0800
1# =====================================================
2# Imports
3# =====================================================
4from typing import Annotated
6from pydantic import Field, field_validator, ValidationInfo
8from mt_metadata.base import MetadataBase
9from mt_metadata.common import LicenseEnum
12# =====================================================
15class Copyright(MetadataBase):
16 release_license: Annotated[
17 LicenseEnum,
18 Field(
19 default="CC BY 4.0",
20 description="How the data can be used. The options are based on https://github.com/spdx/license-list-data",
21 alias=None,
22 json_schema_extra={
23 "units": None,
24 "required": True,
25 "examples": "CC BY",
26 "type": "string",
27 },
28 ),
29 ]
31 @field_validator("release_license", mode="before")
32 @classmethod
33 def validate_license(cls, value: str, info: ValidationInfo) -> str:
34 """
35 Validate that the value is a valid license.
36 """
37 if value in [None, ""]:
38 return "CC BY 4.0"
39 value = (
40 value.replace("-", "_")
41 .replace(" ", "_")
42 .replace(".", "_")
43 .replace("(", "_")
44 .replace(")", "_")
45 .replace("/", "_")
46 .replace(":", "_")
47 )
48 if value in LicenseEnum.__members__:
49 return LicenseEnum[value].value
50 else:
51 raise NameError(f"License is not an acceptable license: {value}")