Compare commits

...

1 Commits

Author SHA1 Message Date
cclecle
4dca3eb9d1 improve typing 2025-09-06 01:43:20 +02:00

View File

@@ -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