NetworkX 3.3#
发布日期:2024年4月6日
支持 Python 3.10, 3.11 和 3.12。
NetworkX 是一个用于创建、操作和研究复杂网络结构、动力学和功能的 Python 包。
如需更多信息,请访问我们的网站和我们的示例画廊。请将意见和问题发送至 networkx-discuss 邮件列表。
API 变更#
不允许在
complete_multipartite_graph
中使用负数节点 (#7057)。DEP:废弃 all_triplets 单行代码 (#7060)。
[A-star] 如果提供了截止值 (cutoff),则通过截止值添加扩展剪枝 (#7073)。
使 HITS 抛出的异常与幂迭代一致 (#7084)。
DEP:废弃 random_triad (#7061)。
添加了模块化图乘积功能 (#7227)。
ENH:通过使用 _adj 字典操作加速 common/non_neighbors (#7244)。
废弃
nonisomorphic_trees
的create
参数 (#7316)。改进 total_spanning_tree_weight (#7100)。
更新 __init__.py (#7320)。
为 traveling_salesman_problem 添加 **kwargs (#7371)。
增强#
添加 Tadpole 图 (#6999)。
[A-star] 如果提供了截止值 (cutoff),则通过截止值添加扩展剪枝 (#7073)。
实现 \(S^1\) 模型 (#6858)。
[功能] 随机扩展器实用工具 (#6761)。
使用后端运行测试时,比较生成器函数的图 (#7066)。
添加基尔霍夫指数 / 有效图电阻 (#6926)。
更改最短路径方法的返回类型以提高一致性 (#6584)。
修复最小 d-分隔符函数无法处理不存在 d-分隔符的情况的新 PR (#7019)。
ENH:提供非归一化和归一化有向拉普拉斯矩阵计算 (#7199)。
feat:在 PlanarEmbedding 中删除节点属性“first_nbr”的使用 (#7202)。
添加计算 Schultz 和 Gutman 指数的函数 (#3709)。
分裂社区算法 (#5830)。
添加了模块化图乘积功能 (#7227)。
ENH:将
sort_neighbors
添加到depth_first_search.py
中的所有函数 (#7196)。Kneser 图的新图生成器 (#7146)。
绘制 MultiDiGraph 边和标签 qa7008 (#7010)。
使用 GitHub Actions 运行比较基准测试 (#7268)。
BFS 布局实现 (#5179)。
为
louvain_communities
添加max_level=
参数以限制宏迭代次数 (#6909)。查看并更新自 3.2.1 以来的
@nx._dispatchable
使用情况 (#7302)。将
_dispatchable
对象转换为函数 (#7298)。fix:使
PlanarEmbedding.copy()
使用父类的add_edges_from()
方法 (closes #7223) (#7224)。允许 np.random 实例的种子精确生成任意大的整数 (#6869)。
改进 total_spanning_tree_weight (#7100)。
为
nx.generate_random_paths
添加种子 (#7332)。允许后端实现
should_run
(#7257)。在新模块中添加树广播算法 (#6928)。
在
weisfeiler_lehman_subgraph_hashes
中包含初始标签的选项 (#6601)。尝试获取不存在的边时,添加更友好的错误消息 (#7245)。
使
is_negatively_weighted
可调度 (#7352)。添加隐藏或显示刻度标签的选项 (#6018)。
ENH:将图对象转换为后端时进行缓存 (#7345)。
Bug 修复#
修复“发布”页面上的发布说明列表显示 (#7030)。
修复错误转义序列引起的语法警告 (#7034)。
修复 triangles 函数,避免使用
is
比较节点 (#7041)。修复
nx.mycielski_graph(0)
的错误消息 (#7056)。不允许在
complete_multipartite_graph
中使用负数节点 (#7057)。处理 greedy_modularity_communities 的边缘情况 (#6973)。
FIX:复制数据时,匹配文档描述 (#7092)。
fix:在 all_simple_paths 和其他函数中包含单节点/平凡路径 (#6694)。
Dinitz 校正 (#6968)。
修改 GML 测试以修复无效八进制字符警告 (#7159)。
修复 random_spanning_tree() 在单节点和空图上的问题 (#7211)。
PlanarEmbedding.remove_edge() 现在会更新已删除边的邻居 (#6798)。
为图创建添加种子 (#7241)。
为 fast_label_propatation_communities 测试添加种子 (#7242)。
修复 rich_club_coefficient() 在单节点和空图上的问题 (#7212)。
修复 minimum_spanning_arborescence 回归问题 (#7280)。
将 arrowstyle 输入清理移动到输入验证之后 (#7293)。
修复空的 GraphML 属性未被解析的问题 (#7319)。
向
test_asadpour_tsp
添加新的测试结果并更改linprog
方法 (#7335)。修复 Mehlhorn 的自定义权重属性问题 (#6681)。
文档#
更新发布流程 (#7029)。
更新 convert_matrix.py (#7018)。
修复 bipartite.rst 中 extendability 函数名称的问题 (#7042)。
进行一些小文档清理以消除文档构建警告 (#7048)。
DOC:向 generic_bfs_edges 添加示例以演示
neighbors
参数 (#7072)。分层聚类布局画廊示例 (#7058)。
修复 katz centrality 文档中的错误 (#6294)。
创建 3d_rotation_anime.py (#7025)。
DOC:为 filter view 函数添加文档字符串 (#7086)。
DOC:为 Filter mapping views 添加文档字符串 (#7075)。
DOCS:修复 isomorphvf2 中指向其他函数的内部链接 (#6706)。
添加了 TSP 中三角形不等式情况的说明 (#6995)。
在贡献者指南中添加关于测试重要性的说明 (#7103)。
提议在指导项目中添加中心性概述 (#7104)。
改进组件算法的文档 (#5473)。
将 dot io 添加到 readwrite (#5061)。
向发布说明添加 Python 版本信息 (#7113)。
DOC:在图生成器文档字符串中开启内联图 (#6401)。
修复贡献者指南中的重复编号 (#7116)。
DOC:删除 planted_partition_graph 中不必要的“or” (#7115)。
DOC:将函数中的方法链接到基础 Graph 方法/属性 (#7125)。
将文档连接到 total_spanning_tree_weight 的文档字符串 (#7098)。
使用光谱聚类对图像 (3D RGB 数据) 进行分割,并附带 3D 插图 (#7040)。
更新无向图的 triadic_census 文档 - issue 4386 (#7141)。
向 plot_greedy_coloring.py 添加了 3D 和动画效果 (#7090)。
DOC:修复 URL 编码链接和文档引用 (#7152)。
DOC:添加对 fast_label_propagation_communities 的引用 (#7167)。
更新了 argmap 类的“另请参阅”部分 (#7163)。
DOC:更新了 mincost.py 中的示例 (#7169)。
文档化 directed_laplacian 及类似函数中 walk_type 参数的默认值 (#7171)。
DOC:为经典图生成器文档添加图表 (#7114)。
修复
structuralholes.py::local_constraint
文档字符串中的一个小拼写错误 (#7198)。在文档中添加了
subgraph_is_monomorphic
和subgraph_monomorphisms_iter
(#7197)。修复
_dispatch
的在线文档 (#7194)。DOC:更新了 panther_similarity 的文档 (#7175)。
修复构建文档时的警告 (#7195)。
改进 optimal_edit_paths 的文档 (#7130)。
DOC:使用 nx-parallel 额外文档信息构建 (#7220)。
修复张量积文档中的 typo (修复 #7228) (#7229)。
添加循环检测示例 (#6560)。
更新 general_k_edge_subgraphs 文档字符串 (#7254)。
更新 nonisomorphic_trees 的文档字符串 (#7255)。
为
cluster.py
中的函数添加自环相关的文档和测试 (#7261)。将 minimum_cycle_basis 添加到 cycle_basis 的“另请参阅”中 (#7274)。
更新 CONTRIBUTING.rst (#7270)。
修复文档构建期间所有的 sphinx 警告 (#7289)。
文档基础设施:用
myst-nb
替换nb2plot
(#7237)。为 intersphinx 添加缺失模块的显式目标 (#7313)。
DOC:为任意大随机整数工具添加文档建议 (#7322)。
在地理空间示例中尝试/捕获间歇性失败的 basemaps (#7324)。
使用面向未来的 pandas 赋值更新文档字符串示例 (#7323)。
从光谱聚类示例中移除动画以提高性能 (#7328)。
改进 Approximations 文件的文档 (#7338)。
更新
LCF_graph
文档字符串 (#7262)。在
weisfeiler_lehman_subgraph_hashes
中包含初始标签的选项 (#6601)。添加 eriknw 作为贡献者 (#7343)。
[DOC, DISPATCH]:更新并添加了
backend.py
的文档 (#7305)。为 traveling_salesman_problem 添加 **kwargs (#7371)。
移动后端文档并连接配置文档。两者都在一个侧边栏条目中 (#7389)。
维护#
放弃 Python 3.9 支持 (#7028)。
fix:从 np 导入时,显式检查 edge_attr 中的 None/False (#6825)。
添加 favicon (#7043)。
移除未使用的代码 resistance_distance (#7053)。
修复小图的名称 (#7055)。
改进后端处理配置错误的错误消息 (#7062)。
MAINT:修复 union 异常消息 (#7071)。
MAINT:对 tadpole 和 lollipop 图进行小调整 (#7049)。
向
number_connected_components
添加@not_implemented_for("directed")
(#7074)。移除未使用的代码 (#7076)。
对 beamsearch 模块进行小调整 (#7059)。
修复同一行中烦人的字符串拆分问题 (#7079)。
更新
hits
的 dispatch 装饰器以使用"weight"
边权重 (#7081)。移除 nbconvert 上限锁定 (恢复 #6984) (#7083)。
在 CI 中添加一步检查导入时的警告 (#7077)。
为 /generators/duplication.py 和 /generators/geomet… 添加了一些测试 (#6976)。
在 Python 3.13-dev 上测试 (#7096)。
更改了 GraphMLWriterLxml.dump() 的参数列表 (#6261)。
write_graphml
: 对TypeError
异常的对象类型描述进行小修复 (#7109)。更新了
core.py
中的函数 (#7027)。push 时检查标签并更改检查名称 (#7111)。
DEP:向
k_core
,k_shell
,k_crust
和k_corona
添加not_implemented_for("multigraph”)
(#7121)。在编辑 Pull Request 时而不是 push 时添加标签检查 (#7134)。
添加标签工作流 pull_request 类型同步和回显消息 (#7135)。
为使用有向图时的同构性添加测试覆盖 (#6417)。
移除
__networkx_plugin__
的使用 (改用__networkx_backend__
) (#7157)。DOC:统一 neighbor 的拼写并重命名变量 (#7162)。
MAINT:使用 ruff 格式而不是 black (#7160)。
确保与 shortest_path 返回值更改相关的警告对用户可见 (#7161)。
同步空图的 is_{type} 行为 (#5849)。
向
_apply_prediction
和simrank
添加了NodeNotFound
异常,并在panther_similarity
中忽略了孤立节点 (#7110)。修复 is_regular 及相关函数的 not_implemented_for 装饰器 (#7182)。
修复完全图的 all_node_cuts 输出 (#6558)。
移除
"networkx.plugins"
和"networkx.plugin_info"
入口点 (#7192)。将 actions/setup-python 从 4 升级到 5 (#7201)。
更新 Pytest v8 的测试套件 (#7203)。
由于 pydot 再次得到积极维护,取消对
``nx_pydot``
的废弃 (#7204)。未来兼容性改进和测试改进 (#7209)。
根据 SPEC 0 删除旧依赖项 (#7217)。
更新 pygraphviz (#7216)。
重构 geometric_soft_configuration_model 测试以提高性能 (#7210)。
将
_dispatch
重命名为_dispatchable
(#7193)。在测试套件中用 tmp_path fixture 替换 tempfile (#7221)。
更新了 test_directed_edge_swap #5814 (#6426)。
将版权年份更新为 2024 (#7232)。
提高 Small.py 的测试覆盖率 (#7260)。
测试对称边流中介性分割 (#7251)。
MAINT:向
community/tests/test_label_propagation.py
中的gnm_random_graph
添加了seed
(#7264)。将 scientific-python/upload-nightly-action 从 0.2.0 升级到 0.3.0 (#7266)。
为
cluster.py
中的函数添加自环相关的文档和测试 (#7261)。提高 Mycielsky.py 的测试覆盖率 (#7271)。
使用 ruff 的文档字符串格式 (#7276)。
将文档字符串格式更改添加到 blame-ignore-revs (#7281)。
提高 random_clustered 的测试覆盖率并更新函数名称 (#7273)。
文档基础设施:用
myst-nb
替换nb2plot
(#7237)。暂时移除地理空间示例以修复 CI (#7299)。
提高二分图可扩展性的测试覆盖率 (#7306)。
CI:将 scientific-python/upload-nightly-action 从 0.3.0 更新到 0.4.0 (#7309)。
CI:对 dependabot 更新进行分组 (#7308)。
CI:将 upload-nightly-action 更新到 0.5.0 (#7311)。
重命名后端
func_info
字典的键 (#7219)。向
_dispatchable
添加mutates_input=
和returns_graph=
(#7191)。避免使用 numpy 标量创建结果 (参考: NEP 51) (#7282)。
将 changelist 从 0.4 升级到 0.5 (#7325)。
提高 bipartite matrix.py 的测试覆盖率 (#7312)。
取消 coloring strategies 的调度 (#7329)。
撤销
single_target_shortest_path_length
返回类型更改 (#7327)。从光谱聚类示例中移除动画以提高性能 (#7328)。
steiner tree mehlhorn futurewarning 过期 (#7337)。
将 louvain 测试模块化比较更新为 leq (#7336)。
添加 aaronzo 作为贡献者 (#7342)。
修复 #7339。
shortest_path
与警告不一致 (#7341)。添加
nx.config
字典用于配置调度和后端 (#7225)。提高 Steiner Tree 及文档的测试覆盖率 (#7348)。
向
test_richclub_normalized
添加了seed
(#7355)。向 link_prediction.py 添加测试 (#7357)。
修复测试后端时 pydot 测试的问题 (#7356)。
使 graphml 中的 xml 解析具有未来兼容性 (#7360)。
通过移除 np.set_printoptions 使文档字符串示例与顺序无关 (#7361)。
在测试清理时关闭图形 (#7373)。
为 numpy 2.0 进行更多 numpy 标量清理 (#7374)。
更新 numpydoc (#7364)。
修复 pygraphviz 测试在后端测试中导致段错误的问题 (#7380)。
向 broadcasting.py 添加调度 (#7386)。
更新测试套件以处理未安装 scipy 的情况 (#7388)。
删除已弃用的 np.row_stack,改为使用 vstack (#7390)。
修复
del config[key]
的异常问题 (#7391)。通过 3 次更新提升 GH actions (#7310)。
贡献者#
本次发布新增 54 位作者 (按字母顺序排列)
Aaron Z. (@aaronzo)
Aditi Juneja (@Schefflera-Arboricola)
AKSHAYA MADHURI (@akshayamadhuri)
Alex Markham (@Alex-Markham)
Anders Rydbirk (@anders-rydbirk)
Andrew Knyazev (@lobpcg)
Ayooluwa (@Ay-slim)
Baldo (@BrunoBaldissera)
Benjamin Edwards (@bjedwards)
Chiranjeevi Karthik Kuruganti (@karthikchiru12)
Chris Pryer (@cnpryer)
d.grigonis (@dgrigonis)
Dan Schult (@dschult)
Daniel V. Egdal (@DanielEgdal)
Dilara Tekinoglu (@dtekinoglu)
Dishie Vinchhi (@Dishie2498)
Erik Welch (@eriknw)
Frédéric Crozatier (@fcrozatier)
Henrik Finsberg (@finsberg)
Jangwon Yie (@jangwon-yie)
Jaron Lee (@jaron-lee)
Jarrod Millman (@jarrodmillman)
Jon Crall (@Erotemic)
Jonas Otto (@ottojo)
Jordan Matelsky (@j6k4m8)
Koen van den Berk (@kalkoen)
Luigi Sciarretta (@LuigiSciar)
Luigi Sciarretta (@LuigiSciarretta)
Matt Schwennesen (@mjschwenne)
Matthew Feickert (@matthewfeickert)
Matthieu Gouel (@matthieugouel)
Mauricio Souza de Alencar (@mdealencar)
Maximilian Seeliger (@max-seeli)
Mridul Seth (@MridulS)
Navya Agarwal (@navyagarwal)
Neil Botelho (@NeilBotelho)
Nihal John George (@nihalgeorge01)
Paolo Lammens (@plammens)
Patrick Nicodemus (@patrick-nicodemus)
Paula Pérez Bianchi (@paulitapb)
Purvi Chaurasia (@PurviChaurasia)
Robert (@ImHereForTheCookies)
Robert Jankowski (@robertjankowski)
Ross Barnowski (@rossbar)
Sadra Barikbin (@sadra-barikbin)
Salim BELHADDAD (@salym)
Till Hoffmann (@tillahoffmann)
Vanshika Mishra (@vanshika230)
William Black (@smokestacklightnin)
William Zijie Zhang (@Transurgeon)
本次发布新增 29 位审阅者 (按字母顺序排列)
Aaron Z. (@aaronzo)
Aditi Juneja (@Schefflera-Arboricola)
AKSHAYA MADHURI (@akshayamadhuri)
Andrew Knyazev (@lobpcg)
Ayooluwa (@Ay-slim)
Chiranjeevi Karthik Kuruganti (@karthikchiru12)
Chris Pryer (@cnpryer)
d.grigonis (@dgrigonis)
Dan Schult (@dschult)
Erik Welch (@eriknw)
Frédéric Crozatier (@fcrozatier)
Henrik Finsberg (@finsberg)
Jarrod Millman (@jarrodmillman)
Kyle Sunden (@ksunden)
Matt Schwennesen (@mjschwenne)
Mauricio Souza de Alencar (@mdealencar)
Maximilian Seeliger (@max-seeli)
Mridul Seth (@MridulS)
Nihal John George (@nihalgeorge01)
Paolo Lammens (@plammens)
Paula Pérez Bianchi (@paulitapb)
Rick Ratzel (@rlratzel)
Robert Jankowski (@robertjankowski)
Ross Barnowski (@rossbar)
Stefan van der Walt (@stefanv)
Vanshika Mishra (@vanshika230)
William Black (@smokestacklightnin)
William Zijie Zhang (@Transurgeon)
_这些列表是自动生成的,可能不完整或包含重复项。_