Skip to content

Commit 3298dbc

Browse files
authored
Nk/fix pydantic validate default warning (#636)
* Call validate_default insdie config, not annotation Signed-off-by: Nijat Khanbabayev <nijat.khanbabayev@cubistsystematic.com> * Add test that no warning pops up Signed-off-by: Nijat Khanbabayev <nijat.khanbabayev@cubistsystematic.com> --------- Signed-off-by: Nijat Khanbabayev <nijat.khanbabayev@cubistsystematic.com>
1 parent e24e2e2 commit 3298dbc

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

csp/impl/wiring/signature.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
if USE_PYDANTIC:
1818
from pydantic import (
19-
Field,
2019
ValidationError,
2120
ValidationInfo,
2221
WrapValidator,
@@ -67,7 +66,7 @@ def _create_pydantic_models(self, name, inputs, outputs, defaults):
6766
for defn in inputs:
6867
if defn.kind != ArgKind.ALARM:
6968
default = defaults.get(defn.name, ...)
70-
typ = Annotated[adjust_annotations(defn.typ, make_optional=True), Field(validate_default=True)]
69+
typ = adjust_annotations(defn.typ, make_optional=True)
7170
if defn.kind.is_scalar(): # Allow for SnapType and SnapKeyType
7271
typ = Annotated[typ, WrapValidator(make_snap_validator(defn.typ))]
7372
input_fields[f"{INPUT_PREFIX}{defn.name}"] = (typ, default)
@@ -89,7 +88,7 @@ def track_fields(cls, v, info):
8988
return v
9089

9190
# https://docs.pydantic.dev/latest/concepts/models/#dynamic-model-creation
92-
config = {"arbitrary_types_allowed": True, "extra": "forbid"}
91+
config = {"arbitrary_types_allowed": True, "extra": "forbid", "validate_default": True}
9392
validators = {
9493
"validate_tvars": model_validator(mode="after")(validate_tvars),
9594
"track_fields": field_validator("*", mode="before")(track_fields),

csp/tests/test_type_checking.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import sys
55
import typing
66
import unittest
7+
import warnings
78
from datetime import datetime, time, timedelta
89
from typing import Callable, Dict, List, Optional, Union
910

@@ -67,6 +68,12 @@ def graph():
6768

6869
csp.run(graph, starttime=datetime(2020, 2, 7, 9), endtime=datetime(2020, 2, 7, 9, 1))
6970

71+
def test_const_eq_scalar_no_warning(self):
72+
with warnings.catch_warnings(record=True) as caught:
73+
warnings.simplefilter("always")
74+
_ = csp.const(1) == 1
75+
self.assertEqual(len(caught), 0)
76+
7077
def test_runtime_type_check(self):
7178
## native output type
7279
@csp.node

0 commit comments

Comments
 (0)