小编ale*_*ull的帖子

有没有办法从 FastAPI 自动生成的文档中排除 Pydantic 模型?

有没有办法让 FastAPI 应用程序不在其架构文档中显示模型?我有一些模型与其他模型略有不同,并且每个模型都发生重复,因此模式文档非常混乱。

from pydantic import BaseModel
class A(BaseModel):
    name: str

class HasID(BaseModel):
    id_: int

class AWithID(A, HasID):
    pass
Run Code Online (Sandbox Code Playgroud)

有没有办法不在AWithID文档中显示类?

python pydantic fastapi

8
推荐指数
1
解决办法
2501
查看次数

允许 Pydantic 中的 JSON 模式为 null

我试图在该对象的 JSON 架构中允许 null:

from pydantic import BaseModel
from typing import Optional

class NextSong(BaseModel):
    song_title: Optional[str] = ...
Run Code Online (Sandbox Code Playgroud)

但结果的模式如下:

{
    "title": "NextSong",
    "type": "object",
    "properties": {
        "song_title": {
            "title": "Song Title",
            "type": "string"
        }
    },
    "required": ["song_title"]
}
Run Code Online (Sandbox Code Playgroud)

生成的架构不允许 Song_title 的值为 null,这不符合预期,但我不确定如何指定允许 null,但该字段仍然是必需的。

pydantic fastapi

8
推荐指数
1
解决办法
5871
查看次数

如何使用pygraphviz增加点图中节点之间的间距?

我在尝试增加我正在制作的分层图中的节点之间的间距时遇到了麻烦。我希望在该图上放置标签,因此节点之间的间距必须相当大,但我不确定 pygraphvis_layout 的“args”参数如何工作,或者我是否正确使用它。

似乎相同等级的节点之间的间距应该至少为 2 英寸,但这并没有反映在实际图像中。据我测试,改变提供给 nodeep 的数字对间距没有影响。

我已经查看了其他解决方案:pydot 没有工作,似乎输出了我无法打开的 png 文件,而且我已经在使用 NetworkX 来绘制其他相关的图形。

(除了指定的导入之外,复制还需要 graphviz。)

import networkx as nx
import matplotlib.pyplot as plt
from networkx.drawing.nx_agraph import pygraphviz_layout

plt.figure(figsize=(10, 7))
graph = nx.DiGraph([(0, 1), (0, 2),
                    (1, 3), (1,4), (2,5), (2,6),
                    (3, 7), (3, 8), (4, 9), (4, 10), (5, 11), (5, 12), (6, 13), (6, 14)])
pos = pygraphviz_layout(graph, prog="dot", args='-Gnodesep=2')
nx.draw_networkx_nodes(
    graph, pos, nodelist=graph.nodes, node_size=1000, node_color="r", alpha=0.8
)
nx.draw_networkx_edges(graph, pos, edgelist=graph.edges, width=1, edge_color="k")
plt.axis("off")
plt.savefig("test.svg")
plt.show()
Run Code Online (Sandbox Code Playgroud)

来自片段的结果图像

python networkx pygraphviz

6
推荐指数
1
解决办法
209
查看次数

标签 统计

fastapi ×2

pydantic ×2

python ×2

networkx ×1

pygraphviz ×1