Module signals_notebook.base

Expand source code
import inspect
import logging
from typing import no_type_check

from pydantic import BaseModel

log = logging.getLogger(__name__)


class PatchedModel(BaseModel):
    """
    https://github.com/samuelcolvin/pydantic/issues/1577
    Adds ability to use properties with setters
    """

    @no_type_check
    def __setattr__(self, name, value):
        try:
            super().__setattr__(name, value)
        except ValueError as e:
            log.exception('Cannot set attribute to %s', self.__class__.__name__)
            setters = inspect.getmembers(
                self.__class__, predicate=lambda x: isinstance(x, property) and x.fset is not None
            )
            for setter_name, _ in setters:
                if setter_name == name:
                    object.__setattr__(self, name, value)
                    break
            else:
                raise e

Classes

class PatchedModel (**data: Any)

https://github.com/samuelcolvin/pydantic/issues/1577 Adds ability to use properties with setters

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class PatchedModel(BaseModel):
    """
    https://github.com/samuelcolvin/pydantic/issues/1577
    Adds ability to use properties with setters
    """

    @no_type_check
    def __setattr__(self, name, value):
        try:
            super().__setattr__(name, value)
        except ValueError as e:
            log.exception('Cannot set attribute to %s', self.__class__.__name__)
            setters = inspect.getmembers(
                self.__class__, predicate=lambda x: isinstance(x, property) and x.fset is not None
            )
            for setter_name, _ in setters:
                if setter_name == name:
                    object.__setattr__(self, name, value)
                    break
            else:
                raise e

Ancestors

  • pydantic.main.BaseModel
  • pydantic.utils.Representation

Subclasses