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
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-10 00:11 -0800
1# =====================================================
2# Imports
3# =====================================================
4from typing import Annotated
6import numpy as np
7import pandas as pd
8from pydantic import Field, field_validator
10from mt_metadata.base import MetadataBase
11from mt_metadata.common.mttime import MTime
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 ]
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 ]
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 ]
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 ]
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()
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]