diff --git a/src/dabmodel/model.py b/src/dabmodel/model.py index 956c87a..5eab716 100644 --- a/src/dabmodel/model.py +++ b/src/dabmodel/model.py @@ -298,7 +298,7 @@ class DABFieldInfo: self._constraints = constraints @property - def doc(self): + def doc(self) -> str: """Returns Field's documentation""" return self._doc @@ -325,7 +325,7 @@ class DABField(Generic[T_Field]): self._source = s @property - def doc(self): + def doc(self) -> str: """Returns Field's documentation""" return self._info.doc @@ -403,10 +403,14 @@ class ModelSpecView: __slots__ = ("_vals", "_types", "_touched", "_name", "_module") - def __init__(self, values: dict, types_map: dict[str, type], name, module): + def __init__(self, values: dict[str, Any], types_map: dict[str, type], name: str, module: str): + self._name: str + self._vals: dict[str, Any] + self._types: dict[str, type] + self._touched: set + self._module: str object.__setattr__(self, "_vals", dict(values)) object.__setattr__(self, "_types", types_map) - object.__setattr__(self, "_touched", set()) object.__setattr__(self, "_name", name) object.__setattr__(self, "_module", module) @@ -421,16 +425,16 @@ class ModelSpecView: return self._module @__module__.setter - def __module__(self, value): + def __module__(self, value: str): pass - def __getattr__(self, name): + def __getattr__(self, name: str) -> Any: """internal proxy getattr""" if name not in self._types: raise AttributeError(f"Unknown field {name}") return self._vals[name] - def __setattr__(self, name, value): + def __setattr__(self, name: str, value: Any): """internal proxy setattr""" if name not in self._types: raise NonExistingField(f"Cannot set unknown field {name}") @@ -446,7 +450,6 @@ class ModelSpecView: raise InvalidFieldValue(f"Field <{name}> value is not of expected type {T}.") from exp self._vals[name] = value - self._touched.add(name) def export(self) -> dict: """exports all proxified values""" @@ -621,7 +624,7 @@ class BaseMeta(type): orig_setattr = namespace.get("__setattr__", object.__setattr__) - def guarded_setattr(self, key, value): + def guarded_setattr(self, key: str, value: Any): if key.startswith("_"): # allow private and dunder attrs return orig_setattr(self, key, value) # block writes after init if key is readonly