Skip to content

Commit 18b08b7

Browse files
authored
allow None in eval response (#715)
1 parent ab45038 commit 18b08b7

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

api/tests/unit-tests/schemas/test_evaluation.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,3 +382,20 @@ def test_EvaluationResponse():
382382
created_at=datetime.now(),
383383
meta={},
384384
)
385+
386+
# test validation for meta
387+
er = schemas.EvaluationResponse(
388+
id=1,
389+
dataset_names=["ds"],
390+
model_name="test",
391+
filters=schemas.Filter(),
392+
parameters=schemas.EvaluationParameters(
393+
task_type=enums.TaskType.CLASSIFICATION,
394+
),
395+
status=enums.EvaluationStatus.DONE,
396+
metrics=[],
397+
confusion_matrices=[],
398+
created_at=datetime.now(),
399+
meta=None,
400+
)
401+
assert er.meta == {}

api/valor_api/schemas/evaluation.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ class EvaluationResponse(BaseModel):
276276
parameters: EvaluationParameters
277277
status: EvaluationStatus
278278
created_at: datetime.datetime
279-
meta: dict[str, str | int | float] | None
279+
meta: dict[str, str | int | float] | None = {}
280280
metrics: list[Metric] | None = None
281281
confusion_matrices: list[ConfusionMatrixResponse] | None = None
282282
ignored_pred_labels: list[Label] | None = None
@@ -286,3 +286,9 @@ class EvaluationResponse(BaseModel):
286286
model_config = ConfigDict(
287287
extra="allow", protected_namespaces=("protected_",)
288288
)
289+
290+
# make sure that `meta` is a dictionary
291+
@field_validator("meta")
292+
@classmethod
293+
def null_to_empty_dict(cls, v):
294+
return v or {}

0 commit comments

Comments
 (0)