I have a pydantic model like this:
class SomeModel(pydantic.BaseModel):
name: str
content: str
previous_model: typing.Optional["SomeModel"] = None
My code look like this, this is greatly simplified, In my real code there are many and circular dependencies occur by chance occasionally rather than being purposefully created:
models = [
SomeModel("bob", "2"),
SomeModel("bob", "2"),
]
models[0].previous_model = models[1]
models[1].previous_model = models[0]
models.remove(models[0])
This throws the following error:
File "c:\Users\username\project-name\src\main.py", line 108, in run_all
models.remove(models[0])
File "pydantic\main.py", line 902, in pydantic.main.BaseModel.__eq__
File "pydantic\main.py", line 445, in pydantic.main.BaseModel.dict
File "pydantic\main.py", line 861, in _iter
File "pydantic\main.py", line 736, in pydantic.main.BaseModel._get_value
File "pydantic\main.py", line 445, in pydantic.main.BaseModel.dict
File "pydantic\main.py", line 861, in _iter
File "pydantic\main.py", line 736, in pydantic.main.BaseModel._get_value
File "pydantic\main.py", line 445, in pydantic.main.BaseModel.dict
File "pydantic\main.py", line 861, in _iter
File "pydantic\main.py", line 736, in pydantic.main.BaseModel._get_value
File "pydantic\main.py", line 445, in pydantic.main.BaseModel.dict
File "pydantic\main.py", line 861, in _iter
File "pydantic\main.py", line 736, in pydantic.main.BaseModel._get_value
File "pydantic\main.py", line 445, in pydantic.main.BaseModel.dict
File "pydantic\main.py", line 861, in _iter
... Snip several hunderd more lines
File "pydantic\main.py", line 734, in pydantic.main.BaseModel._get_value
File "pydantic\main.py", line 304, in pydantic.main.ModelMetaclass.__instancecheck__
RecursionError: maximum recursion depth exceeded
I don't really need the previous_model field to be included in the equality at all. Is there a way to exclude it so that my stack doesn't overflow? This field is irrelevant for the purpose equality in this case.