NetworkX 3.2#
发布日期:2023年10月18日
支持 Python 3.9、3.10、3.11 和 3.12。
NetworkX 是一个用于创建、操作和研究复杂网络的结构、动力学和功能的 Python 包。
欲了解更多信息,请访问我们的网站和我们的范例集。请将意见和问题发送到networkx-discuss 邮件列表。
亮点#
为大多数算法添加
@nx._dispatch
修饰符 (#6688)。
API 变更#
从
is_semiconnected
中移除topo_order
kwarg,不进行弃用处理 (#6651)。弃用 Edmonds 类 (#6785)。
将权重设为具有默认假设的函数的 API 的一部分 (#6814)。
ENH: 允许用户在 get_attr 方法中设置默认值 (#6887)。
将函数
join
重命名为join_trees
(#6908)。API: 添加一个修饰符来弃用位置参数 (#6905)。
取消 node_link 模块中
attrs
kwarg 的弃用 (#6939)。对 sort_neighbors 弃用的小修改 (#6942)。
从 scale_free_graph 中移除已弃用的
create_using
kwarg (#6940)。将位置设为 geometric_edges 的 API 的一部分 (#6816)。
取消弃用 literal_(de)stringizer (#6943)。
将 incidence_matrix 的新 dtype 参数设为仅支持 kwarg (#6954)。
将
fast_label_propagation_communities
的 weight 和 seed 参数设为仅支持 kwarg (#6955)。API: 从 cd_index 的 time_delta 参数中移除默认值 (#6953)。
弃用 strongly_connected_components_recursive (#6957)。
移除已弃用的 clique 辅助函数 (#6941)。
改进#
更新 triangles 计算方法 (#6258)。
添加 single_source_all_shortest_paths 和 all_pairs_all_shortest_paths 函数 (#5959)。
为大多数算法添加
@nx._dispatch
修饰符 (#6688)。将 benchmarks 移至主仓库内部 (#6835)。
ENH – 将 :function:
rescale_layout
中的 for 循环替换为 numpy 向量化方法 (#6879)。用于社区检测的快速标签传播算法 (#6843)。
添加时间序列 Visibility Graph 生成器 (#6880)。
随机树和森林 (#6758)。
向默认 gml 解析器添加对 tuple 节点的支持 (#6950)。
添加 Kemeny 常数 (#6929)。
加速 resistance_distance 计算 (#6925)。
允许图生成器和转换函数进行分发 (#6876)。
添加 extendability problem (第二次尝试) (#4890)。
错误修复#
修复 to_agraph() 的 DOT 格式问题 (#6474)。
从
is_semiconnected
中移除topo_order
kwarg,不进行弃用处理 (#6651)。稳定 approximation.connected_components 的测试 (#6715)。
修复 minimum_cycle_basis 并更改为返回 cycle 而不是 set (#6788)。
重新修复 minimum_cycle_basis 和 scipy.sparse 转换并添加测试 (#6789)。
number_of_walks 可能会使用带权边属性 (#6815)。
GML: 添加了对读取多行值的支持 (#6837)。
避免 directed_laplacian_matrix 在某些情况下导致 nans (#6866)。
添加关于零权重 cycle 的测试并修复 goldberg-radzik (#6892)。
修改
s_metric
normalized
默认值,以便函数不会引发错误 (#6841)。针对无效 prufer sequence
from_prufer_sequence
的错误处理:issue #6420 (#6457)。修复:在没有节点属性的情况下,percolation centrality 的更好默认行为 (#6894)。
修复:MultiDiGraphs 的 key 在带权最短路径计算中丢失 (#6963)。
处理 Laplacian centrality 中的边界情况 (#6938)。
添加一个在有向 louvain 算法的每一层忽略自环的公式 (#6630)。
修复 k=2 时
````is_k_edge_connected````
的问题 (#7024)。
文档#
修复 laplacian_centrality 和 laplacian_matrix 中的链接 (#6623)。
将 Greedy Coloring 示例添加到范例集 (#6647)。
向贡献者指南添加 linting (#6692)。
对 equitable_coloring 文档字符串的小修改 (#6673)。
移除调查横幅 (#6818)。
修复:使消息可读 (#6860)。
添加 dfs_predecessor 和 dfs_successor 的 source 输入文档 (#6867)。
澄清 basis 仅生成简单 cycle (#6882)。
恢复“澄清 basis 仅生成简单 cycle” (#6885)。
更新 TSP 示例文档 (#6794)。
维护:将 PR 模板指向 pre-commit (#6902)。
修复文档构建错误/警告 (#6907)。
文档:零散的反引号和双反引号而非简单反引号 (#6917)。
文档:在 contraction 中添加自环多重有向图的示例 (#6901)。
修复 sphinx 文档对已分发函数的渲染问题 (#6895)。
添加了更多关于 graphical degree sequence 的示例 (#5634)。
对 sort_neighbors 弃用的小修改 (#6942)。
betweenness.py 中关于浮点权重的警告注释 (#5171)。
文档:杂项拼写错误 (#6959)。
修复 effective_size 文档中的拼写错误 (#6967)。
修复 tournament.py 中的示例 (#6964)。
修复一个引用 (#6977)。
在 snap_aggregation 文档字符串中添加缺失参数 (#6978)。
更新开发者弃用待办事项列表 (#6985)。
添加 “networkx.plugin_info” 入口点并更新文档字符串 (#6911)。
文档化图类型;添加链接;移除未使用的导入 (#6992)。
将 GraphBLAS 后端添加到在线文档 (#6998)。
添加 3.2rc0 版本发布说明 (#6997)。
更新 changelist 的发布流程 (#7005)。
更新 changelist workflow 的贡献指南 (#7004)。
修复
modularity
函数文档字符串中参数 \(m\) 的定义 (#6990)。更新了 SA_tsp 和 TA_tsp 的文档 (#7013)。
更新 katz_centrality 缺失的默认 alpha 值 (#7015)。
维护#
用 gh action 替换 codecov Python CLI (#6635)。
将 pyupgrade 支持的最低 Python 版本提升至 3.9 (#6634)。
维护:小的覆盖率清理 (#6674)。
移除用于验证输入的不可达代码 (#6675)。
暂时固定 sphinx<7 以修复文档 CI 失败 (#6680)。
改进与 #5092 相关的测试粒度的示例 (#5094)。
维护:提升 scipy 版本并利用惰性加载 (#6704)。
根据 SPEC0,停止支持 Python 3.8 (#6733)。
更新 pygraphviz (#6724)。
根据 SPEC0 更新核心依赖项 (#6734)。
在 Python 3.12-beta2 上进行测试 (#6737)。
更新 OSMnx 示例 (#6775)。
清理 numpy 弃用警告的小修改 (#6776)。
添加 label-check 工作流程 (#6797)。
使用 dependabot (#6799)。
将 webfactory/ssh-agent 从 0.7.0 提升至 0.8.0 (#6800)。
为已合并的 PR 关联 milestone (#6802)。
在 convert_from_nx 中添加 preserve_all_attrs 参数以使其更简洁 (#6812)。
将 scientific-python/attach-next-milestone-action 从 f94a5235518d4d34911c41e19d780b8e79d42238 提升至 bc07be829f693829263e57d5e8489f4e57d3d420 (#6830)。
放宽
betweenness_centrality
测试中的阈值 (#6827)。为 {single_source,all_pairs}_all_shortest_paths 和 cd_index 添加 @nx._dispatch 修饰符 (#6832)。
CI: 为 nightly wheel 上传添加分发验证检查 (#6831)。
维护:修复 nightly releases wheels 的链接 (#6845)。
不对 numpy2 nightlies 进行测试 (#6852)。
维护:替换 scipy namespace 中的 numpy 别名 (#6857)。
取消固定 scipy 测试上限 (#6727)。
NEP 51 numpy scalar reprs + NX doctests 的临时解决方案 (#6856)。
取消固定 numpy nightly wheels (#6854)。
修复:使消息可读 (#6860)。
恢复“暂时固定 sphinx<7 以修复文档 CI 失败 (#6680)” (#6859)。
将
_dispatch
更改为 class 而非 closure (#6840)。将 random_state 修饰符移至
@nx._dispatch
之前 (#6878)。维护:使 GEXF 和 graphml 写入器与 numpy 2.0 兼容 (#6900)。
将函数
join
重命名为join_trees
(#6908)。将缺失的
join
弃用相关内容添加到 release_dev 和 conftest (#6933)。维护:将 dispatch test workflow 移至独立的 CI 作业 (#6934)。
维护:使用 importlib.resources 替代 file dunder 来访问文件 (#6936)。
文档,维护:文档说明去重 (#6937)。
维护:当图节点少于 3 个时,random_triad 抛出清晰错误 (#6962)。
更新 numpydoc (#6773)。
维护:更新 pre-commit 工具依赖 (#6965)。
维护:清理 triads 中被注释掉的代码 (#6961)。
维护:使用 np 别名时 Scipy nightly 构建失败 (#6969)。
将 actions/checkout 从 3 提升至 4 (#6970)。
为测试新的 pydata-sphinx-theme PR 添加内容 (#6982)。
维护:暂时禁用构建 delaunay geospatial 示例 (#6981)。
恢复“维护:暂时禁用构建 delaunay geospatial 示例” (#6984)。
改进:更改默认 join trees 6947 (#6948)。
更新 sphinx 主题 (#6930)。
从 pyproject.toml 生成 requirements 文件 (#6987)。
使用可信发布者 (#6988)。
倾向使用“backend”而非“plugin” (#6989)。
CI: 将 scientific-python/upload-nightly-action 固定到 0.2.0 (#6993)。
支持 Python 3.12 (#7009)。
对于文档构建,从 git 安装 nx-cugraph,而非 nightly wheels (#7011)。
修复拼写错误 (#7012)。
其他#
更新发布流程 (#6622)。
将 Lowest Common Ancestor 示例添加到范例集 (#6542)。
为 bipartite centrality.py 添加示例 (#6613)。
从 CI 中移除 Python 3.8 (#6636)。
修复 eigenvector.py 和 katz_centrality.py 中的链接 (#6640)。
为 girvan_newman 示例使用正确的命名空间 (#6643)。
在 bipartite_layout 中保留节点顺序 (#6644)。
使 cycle_basis() 函数具有确定性 (#6654)。
为 clique.py 添加了文档字符串示例 (#6576)。
修复空图的 is_chordal 输出 (#6563)。
允许
@nx._dispatch
支持多个图 (#6628)。在贡献者列表中,在 Dheeraj 名字旁边添加 GitHub 链接 (#6670)。
将 is_tounament 添加到主命名空间 (#6498)。
在 dict 上使用 unpacking operator 以避免构建中间对象 (#6040)。
为 test_correlation.py 添加了测试 (#6590)。
提高 neighbor_degree.py 的测试覆盖率 (#6589)。
为 nx_pylab.py 添加了文档字符串示例 (#6616)。
提高 current_flow_closeness.py 的测试覆盖率 (#6677)。
尝试添加 circleci artifact secret (#6679)。
提高 reaching.py 的测试覆盖率 (#6678)。
为 euler.py 添加了测试 (#6608)。
codespell: 修复了 pre-commit、config 和拼写错误 (#6662)。
提高 mst.py 的测试覆盖率 (#6540)。
在测试 dispatch 时,将权重视为
distance=
(#6671)。移除调查横幅 (#6687)。
CircleCI: 为 image redirector 添加 token (#6695)。
维护:通过 graphviews 直接将 subgraph_view 和 reverse_view 添加到 nx 命名空间 (#6689)。
为 dense.py 添加了文档字符串示例 (#6669)。
维护:添加一个 github action cron 作业来上传 nightly wheels (#6701)。
维护:修复 nightly build workflow 中的文件路径 (#6702)。
添加最短路径的示例脚本 (#6534)。
为 generic_graph_view 添加了文档字符串 (#6697)。
文档:错误的下划线长度 (#6708)。
维护:每周运行 cron 作业以测试 nightly deps (#6705)。
简化 dfs 中的 stack (#6366)。
优化 generic_bfs_edges 函数 (#6359)。
优化 _plain_bfs 函数 (#6340)。
添加了 girth 计算函数 (#6633)。
维护:阻止 CI 在 fork 上上传 nightly (#6717)。
提升 astar_path 函数的性能 (#6723)。
由于已知问题,跳过 scipy-1.11.0rc1 测试 (#6726)。
为 incidence_matrix 函数添加可选参数以提供... (#6725)。
由 jfinkels & dtekinoglu 实现的 Graph walks (#5908)。
文档:将 walks 添加到 algorithms.index (#6736)。
在贡献者指南中,添加关于在文档字符串中使用 latex 格式的说明 (#6535)。
修复 intersection_all 方法 (#6744)。
修复 Johnson 方法在无权图上的问题 (#6760)。
维护:在 requirements 中忽略 SciPy v1.11 (#6769)。
替换已弃用的 numpy.alltrue 方法 (#6768)。
排除 scipy 1.11.1 (#6772)。
文档化构建文档所需的额外导入项 (#6766)。
修改 max_weight_matching 为非递归实现 (#6684)。
重写 NXEP 3 (#6648)。
重构 edmonds 算法 (#6743)。
nx_pylab.py 的文档字符串改进 (#6602)。
使用 pyproject.toml (#6774)。
包含缺失的 package_data (#6780)。
[BUG] 修复
is_minimal_d_separator
的文档和功能 (#6427)。更新 eigenvector centrality 的文档 (#6009)。
修复 contributing 页面中的拼写错误 (#6784)。
修复 louvain 算法在空图上的零除错误 (#6791)。
网络文本的垂直链 (#6759)。
时变模块 (#6682)。
允许用户在 from_numpy_array 函数中选择不包含边属性 (#6259)。
修改
````bfs_edges````
并为````generic_bfs_edges````
添加警告 (#5925)。拼写 (#6752)。
为 join operation 添加了测试用例,并修复 join operation 以处理 label_attributes (#6503)。
移除 adjacency_graph 上的序列化痕迹 (#6041)。
修复 view 签名 (#6267)。
文档:添加非图形示例 6944 (#6946)。
特性:algorithms/operators/all.py 的文档字符串示例 (#6974)。
贡献者#
此版本增加了 70 位作者 (按字母顺序排列)
=510 (@diohabara)
Adam Li (@adam2392)
Adam Richardson (@AdamWRichardson)
Aditi Juneja (@Schefflera-Arboricola)
AKSHAYA MADHURI (@akshayamadhuri)
Alex Markham (@Alex-Markham)
Alimi Qudirah (@Qudirah)
Andreas Wilm (@andreas-wilm)
Anthony Labarre (@alabarre)
Arturo (@ArturoSbr)
Dan Schult (@dschult)
Davide Bonin (@davidbonin92)
Davide D’Ascenzo (@Kidara)
Dhaval Kumar (@still-n0thing)
Dheeraj Ravindranath (@dheerajrav)
Dilara Tekinoglu (@dtekinoglu)
Efrem Braun (@EfremBraun)
Eirini Kafourou (@eirinikafourou)
Eran Rivlis (@erivlis)
Erik Welch (@eriknw)
Evgenia Pampidi (@evgepab)
Florine W. Dekker (@FWDekker)
Geoff Boeing (@gboeing)
Haoyang Li (@thirtiseven)
Ian Thompson (@it176131)
Jarrod Millman (@jarrodmillman)
Jeremy Foote (@jdfoote)
Jim Kitchen (@jim22k)
Jon Crall (@Erotemic)
Jordan Matelsky (@j6k4m8)
Josh Soref (@jsoref)
Juanita Gomez (@juanis2112)
Kelly Boothby (@boothby)
Kian-Meng Ang (@kianmeng)
Koen van Walstijn (@kbvw)
Lovro Šubelj (@lovre)
Lukong Anne (@Lukong123)
Matt Schwennesen (@mjschwenne)
Matthew Feickert (@matthewfeickert)
Matthias Bussonnier (@Carreau)
Mohamed Rezk (@mohamedrezk122)
Mridul Seth (@MridulS)
Navya Agarwal (@navyagarwal)
Nishant Bhansali (@nishantb06)
Omkar Yadav (@yadomkar)
Paul Brodersen (@paulbrodersen)
Paula Pérez Bianchi (@paulitapb)
Pieter Eendebak (@eendebakpt)
Pieter Kuppens (@pkuppens)
Purvi Chaurasia (@PurviChaurasia)
Ross Barnowski (@rossbar)
Salim BELHADDAD (@salym)
Sebastiano Vigna (@vigna)
Siri (@sirichandana-v)
Stefan van der Walt (@stefanv)
Sultan Orazbayev (@SultanOrazbayev)
Vanshika Mishra (@vanshika230)
William Zijie Zhang (@Transurgeon)
Yaroslav Halchenko (@yarikoptic)
Zhaoyuan Deng (@dzy49)
此版本增加了 41 位审阅者 (按字母顺序排列)
Aaron Z. (@aaronzo)
Adam Li (@adam2392)
Adam Richardson (@AdamWRichardson)
Alimi Qudirah (@Qudirah)
Andreas Wilm (@andreas-wilm)
Anthony Labarre (@alabarre)
Dan Schult (@dschult)
Davide Bonin (@davidbonin92)
Dilara Tekinoglu (@dtekinoglu)
Efrem Braun (@EfremBraun)
Eirini Kafourou (@eirinikafourou)
Eran Rivlis (@erivlis)
Erik Welch (@eriknw)
Evgenia Pampidi (@evgepab)
Ian Thompson (@it176131)
James Trimble’s ONS work (@jtrim-ons)
Jarrod Millman (@jarrodmillman)
Jim Kitchen (@jim22k)
Jordan Matelsky (@j6k4m8)
Josh Soref (@jsoref)
Kelly Boothby (@boothby)
Lukong Anne (@Lukong123)
Matt Schwennesen (@mjschwenne)
Matthew Feickert (@matthewfeickert)
Matthias Bussonnier (@Carreau)
Mridul Seth (@MridulS)
Navya Agarwal (@navyagarwal)
Nishant Bhansali (@nishantb06)
Orion Sehn (@OrionSehn-personal)
Purvi Chaurasia (@PurviChaurasia)
Robert (@ImHereForTheCookies)
Ross Barnowski (@rossbar)
Salim BELHADDAD (@salym)
Sebastiano Vigna (@vigna)
Sultan Orazbayev (@SultanOrazbayev)
Vanshika Mishra (@vanshika230)
Yaroslav Halchenko (@yarikoptic)
_这些列表是自动生成的,可能不完整或包含重复项。_