Coverage for C: \ Users \ peaco \ OneDrive \ Documents \ GitHub \ mt_metadata \ mt_metadata \ transfer_functions \ io \ zonge \ metadata \ gdp.py: 100%

19 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 

6import numpy as np 

7import pandas as pd 

8from pydantic import Field, field_validator 

9 

10from mt_metadata.base import MetadataBase 

11from mt_metadata.common.mttime import MTime 

12 

13 

14# ===================================================== 

15class GDP(MetadataBase): 

16 date: Annotated[ 

17 MTime | str | float | int | np.datetime64 | pd.Timestamp | None, 

18 Field( 

19 default_factory=lambda: MTime(time_stamp=None).date, 

20 description="start date of the measurement", 

21 alias=None, 

22 json_schema_extra={ 

23 "units": None, 

24 "required": False, 

25 "examples": ["01/01/2020"], 

26 }, 

27 ), 

28 ] 

29 

30 time: Annotated[ 

31 MTime | str | float | int | np.datetime64 | pd.Timestamp | None, 

32 Field( 

33 default_factory=lambda: MTime(time_stamp=None), 

34 description="start time of the measurement", 

35 alias=None, 

36 json_schema_extra={ 

37 "units": None, 

38 "required": False, 

39 "examples": ["12:00:00"], 

40 }, 

41 ), 

42 ] 

43 

44 type: Annotated[ 

45 str | None, 

46 Field( 

47 default=None, 

48 description="Type of GPD", 

49 alias=None, 

50 json_schema_extra={ 

51 "units": None, 

52 "required": False, 

53 "examples": ["zen"], 

54 }, 

55 ), 

56 ] 

57 

58 prog_ver: Annotated[ 

59 str | None, 

60 Field( 

61 default=None, 

62 description="version of hadware in the GDP", 

63 alias=None, 

64 json_schema_extra={ 

65 "units": None, 

66 "required": False, 

67 "examples": [0], 

68 }, 

69 ), 

70 ] 

71 

72 @field_validator("date", mode="before") 

73 @classmethod 

74 def validate_date( 

75 cls, field_value: MTime | float | int | np.datetime64 | pd.Timestamp | str 

76 ): 

77 return MTime(time_stamp=field_value).isodate() 

78 

79 @field_validator("time", mode="before") 

80 @classmethod 

81 def validate_time( 

82 cls, field_value: MTime | float | int | np.datetime64 | pd.Timestamp | str 

83 ): 

84 return MTime(time_stamp=field_value).isoformat().split("T")[1]