Skip to content

Commit 42e29c8

Browse files
committed
fix: restrict __setattr__ range handling to declared model fields
- Only apply _handle_value for fields in model_fields (v2) / __fields__ (v1) - Prevents range handling from intercepting private attrs, __dict__, __pydantic_private__, and controller-added fields
1 parent e3985fc commit 42e29c8

2 files changed

Lines changed: 4 additions & 10 deletions

File tree

‎src/oold/model/__init__.py‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -622,11 +622,8 @@ def _handle_value(self, name, value):
622622

623623
def __setattr__(self, name, value, internal=False):
624624
# print("__setattr__", name, value)
625-
if not internal and name not in [
626-
"__dict__",
627-
"__pydantic_private__",
628-
"__iris__",
629-
]:
625+
# Only apply range handling for declared model fields
626+
if not internal and name in self.model_fields:
630627
value = self._handle_value(name, value)
631628

632629
return super().__setattr__(name, value)

‎src/oold/model/v1/__init__.py‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -538,11 +538,8 @@ def _handle_value(self, name, value):
538538

539539
def __setattr__(self, name, value, internal=False):
540540
# print("__setattr__", name, value)
541-
if not internal and name not in [
542-
"__dict__",
543-
"__pydantic_private__",
544-
"__iris__",
545-
]:
541+
# Only apply range handling for declared model fields
542+
if not internal and name in self.__fields__:
546543
value = self._handle_value(name, value)
547544

548545
return super().__setattr__(name, value)

0 commit comments

Comments
 (0)