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

1# ===================================================== 

2# Imports 

3# ===================================================== 

4from typing import Annotated 

5 

6from pydantic import Field, field_validator, ValidationInfo 

7 

8from mt_metadata.base import MetadataBase 

9from mt_metadata.common import LicenseEnum 

10 

11 

12# ===================================================== 

13 

14 

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 ] 

30 

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}")