def __setattr__(self, key, value): # Resolve Forward references before we begin the cast process # TODO: This seems like it would be a performance issue -- can we do something up front to make sure that all # forward references are covered globally hint = self._field_for(key) super().__setattr__( key, cast(hint, value, getattr(self, '_coercion_allowed', None)) if hint else value)
def __setattr__(self, key, value): if key != 'v' or not self.set_v(value): hints = get_type_hints(type(self)) super().__setattr__( key, cast(hints[key], value) if key in hints else value)
def append(self, item) -> None: v = cast(self._typ, item) if isinstance(v, list): super().extend(v) else: super().append(v)
def __setitem__(self, key, value): super().__setitem__(key, cast(self._typ, value))
def __setattr__(self, key, value): # Resolve Forward references before we begin the cast process hints = get_type_hints(type(self), getmodule(self).__dict__) super().__setattr__( key, cast(hints[key], value, getattr(self, '_coercion_allowed', None)) if key in hints else value)