Skip to content

Commit 7d71f65

Browse files
committed
Serialize NaNs as None
1 parent b8121aa commit 7d71f65

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/psup_stac_converter/utils/models.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import datetime as dt
22
from typing import Literal, Optional
33

4+
import pandas as pd
45
from geojson_pydantic import Feature
5-
from pydantic import BaseModel, field_validator
6+
from pydantic import BaseModel, field_serializer, field_validator
67

78

89
class CubedataDimensionBase(BaseModel):
@@ -22,6 +23,12 @@ class CubedataDimensionBase(BaseModel):
2223
reference_system: Optional[str | int]
2324
unit: Optional[str] = None
2425

26+
@field_serializer("extent", "values", mode="plain")
27+
def ser_number(
28+
self, value: list[str | int | float | None]
29+
) -> list[str | int | float | None]:
30+
return [element if pd.notnull(element) else None for element in value]
31+
2532

2633
class CubedataVariable(BaseModel):
2734
"""A *Variable Object* defines a variable (or a multi-dimensional array).
@@ -54,6 +61,12 @@ class CubedataVariable(BaseModel):
5461
values: Optional[list[str | int | float]] = None
5562
unit: Optional[str] = None
5663

64+
@field_serializer("extent", mode="plain")
65+
def ser_number(
66+
self, value: list[str | int | float | None]
67+
) -> list[str | int | float | None]:
68+
return [element if pd.notnull(element) else None for element in value]
69+
5770

5871
class HorizontalSpatialRasterDimension(CubedataDimensionBase):
5972
"""A spatial raster dimension in one of the horizontal (x or y) directions.

0 commit comments

Comments
 (0)