Skip to content

Commit 9f465ea

Browse files
committed
Add time zone metadata
Different metadata structure for gt3x and bin
1 parent 3dbf583 commit 9f465ea

4 files changed

Lines changed: 26 additions & 0 deletions

File tree

src/wristpy/core/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ class WatchData(BaseModel):
118118
temperature: Optional[Measurement] = None
119119
idle_sleep_mode_flag: Optional[bool] = None
120120
dynamic_range: Optional[tuple[float, float]] = None
121+
time_zone: Optional[str] = None
121122

122123
@field_validator("acceleration")
123124
def validate_acceleration(cls, v: Measurement) -> Measurement:

src/wristpy/core/orchestrator.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@ def _run_file(
419419
"activity_metric": activity_metric,
420420
"nonwear_algorithm": list(nonwear_algorithm),
421421
"input_file": str(input),
422+
"time_zone": watch_data.time_zone,
422423
}
423424

424425
results = writers.OrchestratorResults(

src/wristpy/io/readers/readers.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ def read_watch_data(file_name: Union[pathlib.Path, str]) -> models.WatchData:
4545
idle_sleep_mode_flag = (
4646
data["metadata"]["device_feature_enabled"]["sleep_mode"].lower() == "true"
4747
)
48+
time_zone = f"GMT {data['metadata']['info']['TimeZone']}"
49+
elif file_type == ".bin":
50+
time_zone = data["metadata"]["Configuration Info"]["Time Zone"]
4851

4952
dynamic_range = _extract_dynamic_range(
5053
metadata=data["metadata"],
@@ -59,6 +62,7 @@ def read_watch_data(file_name: Union[pathlib.Path, str]) -> models.WatchData:
5962
temperature=measurements.get("temperature"),
6063
idle_sleep_mode_flag=idle_sleep_mode_flag,
6164
dynamic_range=dynamic_range,
65+
time_zone=str(time_zone),
6266
)
6367

6468

tests/unit/test_readers.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,23 @@ def test_extract_dynamic_range_gt3x(sample_data_gt3x: pathlib.Path) -> None:
7474
assert (
7575
result == expected_dynamic_range
7676
), f"Expected dynamic range of: {expected_dynamic_range}, result was: {result}"
77+
78+
79+
def test_timezone_extraction_gt3x(sample_data_gt3x: pathlib.Path) -> None:
80+
"""Test extracting timezone metadata from .gt3x files."""
81+
expected_timezone = "GMT -05:00:00"
82+
watch_data = readers.read_watch_data(sample_data_gt3x)
83+
84+
assert (
85+
watch_data.time_zone == expected_timezone
86+
), f"Expected timezone of: {expected_timezone}, result was: {watch_data.time_zone}"
87+
88+
89+
def test_timezone_extraction_bin(sample_data_bin: pathlib.Path) -> None:
90+
"""Test extracting timezone metadata from .bin files."""
91+
expected_timezone = "GMT -05:00"
92+
watch_data = readers.read_watch_data(sample_data_bin)
93+
94+
assert (
95+
watch_data.time_zone == expected_timezone
96+
), f"Expected timezone of: {expected_timezone}, result was: {watch_data.time_zone}"

0 commit comments

Comments
 (0)