gaogaotiantian / objprint

A library that can print Python objects in human readable format
Apache License 2.0
519 stars 43 forks source link

pydantic.BaseModel 对象无法正确打印 #80

Open fyc09 opened 2 years ago

fyc09 commented 2 years ago

我在使用 pydantic + objprint,打印对象使用了 #52 中的方法,但程序在 op 处阻塞住。

from objprint import op
from pydantic import BaseModel

class A(BaseModel):
    a: int

obj = A(a=1)
op(obj, honor_existing=False)
sledgeh4w commented 1 year ago

继承BaseModel的类都有一个Config属性,这个属性好像有着很复杂的引用关系,就导致一直阻塞,可以在调用op时指定遍历深度就能避免阻塞。

op(obj, honor_existing=False, depth=1)
fyc09 commented 1 year ago

但当我使用 0.2.1 版本的 objprint,这段程序就可以正常工作。我还发现 #65 之前的所有版本都可以正常运行这段函数,在 https://github.com/gaogaotiantian/objprint/commit/a855ff8af814bee6b1a79a5acfd6440924f5e79f 以前都是正确的。