reflex-dev/reflex

Database issues caused by '@ computed_field'

Opened this issue · 0 comments

Reflex: 0.8.11
OS: windows 11
python: 3.12

I created the database model in the following way, But an error occurred, and I found that it was related to '@ computed_field', It seems to conflict with the '@ computed_field' feature

class Stock(rx.Model, table=True):
    __tablename__ = 'stock'
    id: int | None = Field(default=None, primary_key=True)
    timestamp: date
    code: str
    open: float
    high: float
    low: float
    close: float

    @computed_field
    def color(self) -> str:
        if self.close > self.open:
            return 'red'
        else:
            return 'green'

Error Log

Process granian-worker:
Traceback (most recent call last):
  File "C:\Users\root\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\Lib\multiprocessing\process.py", line 314, in _bootstrap
    self.run()
  File "C:\Users\root\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\Lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\granian\server\mp.py", line 65, in wrapped
    callback = callback_loader()
               ^^^^^^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\granian\_internal.py", line 65, in load_target
    module = load_module(path)
             ^^^^^^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\granian\_internal.py", line 47, in load_module
    __import__(module_name)
  File "E:\Works\RedRedFireFire\RedRedFireFire\RedRedFireFire.py", line 4, in <module>
    from RedRedFireFire.backend.server import app as backend_app
  File "E:\Works\RedRedFireFire\RedRedFireFire\backend\server.py", line 8, in <module>
    from RedRedFireFire.backend.stock import router
  File "E:\Works\RedRedFireFire\RedRedFireFire\backend\stock.py", line 82, in <module>
    from RedRedFireFire.database.dbmanager import DBManager
  File "E:\Works\RedRedFireFire\RedRedFireFire\database\dbmanager.py", line 7, in <module>
    from RedRedFireFire.database.tables import Stock
  File "E:\Works\RedRedFireFire\RedRedFireFire\database\tables.py", line 8, in <module>
    class Stock(rx.Model, table=True):
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\sqlmodel\main.py", line 539, in __new__
    new_cls = super().__new__(cls, name, bases, dict_used, **config_kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\v1\main.py", line 221, in __new__
    inferred = ModelField.infer(
               ^^^^^^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\v1\fields.py", line 504, in infer
    return cls(
           ^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\v1\fields.py", line 434, in __init__
    self.prepare()
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\v1\fields.py", line 544, in prepare
    self._set_default_and_type()
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\v1\fields.py", line 568, in _set_default_and_type
    default_value = self.get_default()
                    ^^^^^^^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\v1\fields.py", line 437, in get_default
    return smart_deepcopy(self.default) if self.default_factory is None else self.default_factory()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\v1\utils.py", line 694, in smart_deepcopy
    return deepcopy(obj)  # slowest way when we actually might need a deepcopy
           ^^^^^^^^^^^^^
  File "C:\Users\root\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\Lib\copy.py", line 162, in deepcopy
    y = _reconstruct(x, memo, *rv)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\root\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\Lib\copy.py", line 260, in _reconstruct
    if hasattr(y, '__setstate__'):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\_internal\_decorators.py", line 210, in __getattr__
    return getattr(self.wrapped, name)
                   ^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\_internal\_decorators.py", line 210, in __getattr__
    return getattr(self.wrapped, name)
                   ^^^^^^^^^^^^
  File "E:\Works\RedRedFireFire\.venv\Lib\site-packages\pydantic\_internal\_decorators.py", line 210, in __getattr__
    return getattr(self.wrapped, name)
                   ^^^^^^^^^^^^
  [Previous line repeated 949 more times]