Skip to content

Upgrading networkx 1 to 2

Unknown1.11 → 2.8.8Deprecated2New2Changed5Fixed4Other27

UnknownUpgrade verdict

24 of 33 releases publish no notes, so breaking changes can't be ruled out.

  • Some releases in this range publish no notes, so DepDelta can't rule out breaking changes.
  • Their commits are listed with this comparison.
2 items need code or config changes

Requires Python >=3.8 from 2.7rc1 (none stated before).

Drops decorator.

Installs 0 packages in all (was 1).

Deprecated2
Adds initial_graph parameter to scale_free_graph and deprecates create_using.
scale_free_graphinitial_graphcreate_using
Adds a PendingDeprecation warning for pydot.
pydot

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • removed: export networkx
  • removed: export release
  • removed: variable m
  • added: export algorithms
  • added: export classes
  • added: export convert
  • added: export convert_matrix
  • added: export drawing
  • added: export filters
  • added: export generators
  • added: export linalg
  • added: export readwrite
  • added: export relabel
  • added: export utils
  • removed: export networkx
  • added: export ArborescenceIterator
  • added: export approximation
  • added: export assortativity
  • added: export bipartite
  • added: export centrality
  • added: export chordal
  • added: export clique
  • added: export cluster
  • added: export coloring
  • added: export community
  • added: export components
  • added: export connectivity
  • added: export edge_disjoint_paths
  • added: export flow
  • added: export gomory_hu_tree
  • added: export is_k_edge_connected
  • added: export isomorphism
  • added: export k_edge_augmentation
  • added: export k_edge_components
  • added: export k_edge_subgraphs
  • added: export link_analysis
  • added: export lowest_common_ancestors
  • added: export node_classification
  • added: export node_disjoint_paths
  • added: export operators
  • added: export shortest_paths
  • added: export tournament
  • added: export traversal
  • added: export tree
  • added: function large_clique_size(G)
  • added: function maximum_independent_set(G)
  • changed: function average_clustering(G, trials=…) → function average_clustering(G, trials=…, seed=…)
  • added: function diameter(G, seed=…)
  • removed: function maximum_independent_set(G)
  • added: function one_exchange(G, initial_cut=…, seed=…, weight=…)
  • added: function randomized_partitioning(G, seed=…, p=…, weight=…)
  • added: function metric_closure(G, weight=…)
  • added: function steiner_tree(G, terminal_nodes, weight=…)
  • added: function asadpour_atsp(G, weight=…, seed=…, source=…)
  • added: function christofides(G, weight=…, tree=…)
  • added: function greedy_tsp(G, weight=…, source=…)
  • added: function simulated_annealing_tsp(G, init_cycle, weight=…, source=…, temp=…, move=…, max_iterations=…, N_inner=…, alpha=…, seed=…)
  • added: function threshold_accepting_tsp(G, init_cycle, weight=…, source=…, threshold=…, move=…, max_iterations=…, N_inner=…, alpha=…, seed=…)
  • added: function traveling_salesman_problem(G, weight=…, nodes=…, cycle=…, method=…)
  • added: function treewidth_min_degree(G)
  • added: function treewidth_min_fill_in(G)
  • removed: variable k_nearest_neighbors
  • added: function k_nearest_neighbors(G, source=…, target=…, nodes=…, weight=…)
  • changed: function degree_mixing_matrix(G, x=…, y=…, weight=…, nodes=…, normalized=…) → function degree_mixing_matrix(G, x=…, y=…, weight=…, nodes=…, normalized=…, mapping=…)
  • changed: function numeric_mixing_matrix(G, attribute, nodes=…, normalized=…) → function numeric_mixing_matrix(G, attribute, nodes=…, normalized=…, mapping=…)
  • added: function find_asteroidal_triple(G)
  • added: function is_at_free(G)
  • changed: function sets(G) → function sets(G, top_nodes=…)
  • added: function min_edge_cover(G, matching_algorithm=…)
  • changed: function eppstein_matching(G) → function eppstein_matching(G, top_nodes=…)
  • changed: function hopcroft_karp_matching(G) → function hopcroft_karp_matching(G, top_nodes=…)
  • changed: function to_vertex_cover(G, matching) → function to_vertex_cover(G, matching, top_nodes=…)
  • added: function minimum_weight_full_matching(G, top_nodes=…, weight=…)
  • removed: function blockmodel(G, partitions, multigraph=…)
  • changed: function edge_boundary(G, nbunch1, nbunch2=…) → function edge_boundary(G, nbunch1, nbunch2=…, data=…, keys=…, default=…)
  • added: function bridges(G, root=…)
  • added: function has_bridges(G, root=…)
  • added: function local_bridges(G, with_span=…, weight=…)
  • changed: function closeness_centrality(G, u=…, distance=…, normalized=…) → function closeness_centrality(G, u=…, distance=…, wf_improved=…)
  • added: function incremental_closeness_centrality(G, edge, prev_cc=…, insertion=…, wf_improved=…)
  • removed: function communicability(G)
  • removed: function communicability_betweenness_centrality(G, normalized=…)
  • removed: function communicability_centrality(G)
  • removed: function communicability_centrality_exp(G)
  • removed: function communicability_exp(G)
  • removed: function estrada_index(G)
  • changed: function approximate_current_flow_betweenness_centrality(G, normalized=…, weight=…, dtype=…, solver=…, epsilon=…, kmax=…) → function approximate_current_flow_betweenness_centrality(G, normalized=…, weight=…, dtype=…, solver=…, epsilon=…, kmax=…, seed=…)
  • changed: function eigenvector_centrality_numpy(G, weight=…) → function eigenvector_centrality_numpy(G, weight=…, max_iter=…, tol=…)
  • removed: function laplacian_sparse_matrix(G, nodelist=…, weight=…, dtype=…, format=…)
  • changed: class InverseLaplacian(object) → class InverseLaplacian
  • added: function group_betweenness_centrality(G, C, normalized=…, weight=…, endpoints=…)
  • added: function group_closeness_centrality(G, S, weight=…)
  • added: function group_degree_centrality(G, S)
  • added: function group_in_degree_centrality(G, S)
  • added: function group_out_degree_centrality(G, S)
  • added: function prominent_group(G, k, weight=…, C=…, endpoints=…, normalized=…, greedy=…)
  • changed: function harmonic_centrality(G, distance=…) → function harmonic_centrality(G, nbunch=…, distance=…, sources=…)
  • removed: function edge_load(G, nodes=…, cutoff=…)
  • added: function edge_load_centrality(G, cutoff=…)
  • added: function percolation_centrality(G, attribute=…, states=…, weight=…)
  • added: function global_reaching_centrality(G, weight=…, normalized=…)
  • added: function local_reaching_centrality(G, v, paths=…, weight=…, normalized=…)
  • added: function second_order_centrality(G)
  • added: function communicability_betweenness_centrality(G)
  • added: function estrada_index(G)
  • added: function subgraph_centrality(G)
  • added: function subgraph_centrality_exp(G)
  • added: function trophic_differences(G, weight=…)
  • added: function trophic_incoherence_parameter(G, weight=…, cannibalism=…)
  • added: function trophic_levels(G, weight=…)
  • added: function voterank(G, number_of_nodes=…)
  • added: function chain_decomposition(G, root=…)
  • added: class NetworkXTreewidthBoundExceeded(nx.NetworkXException)
  • added: function chordal_graph_cliques(G)
  • added: function chordal_graph_treewidth(G)
  • added: function complete_to_chordal_graph(G)
  • added: function find_induced_nodes(G, s, t, treewidth_bound=…)
  • added: function is_chordal(G)
  • removed: class NetworkXTreewidthBoundExceeded(nx.NetworkXException)
  • removed: function chordal_graph_cliques(G)
  • removed: function chordal_graph_treewidth(G)
  • removed: function find_induced_nodes(G, s, t, treewidth_bound=…)
  • removed: function is_chordal(G)
  • removed: function project_down(B, create_using=…, name=…)
  • removed: function project_up(B, create_using=…, name=…)
  • changed: function find_cliques(G) → function find_cliques(G, nodes=…)
  • changed: function find_cliques_recursive(G) → function find_cliques_recursive(G, nodes=…)
  • changed: function make_max_clique_graph(G, create_using=…, name=…) → function make_max_clique_graph(G, create_using=…)
  • changed: function node_clique_number(G, nodes=…, cliques=…) → function node_clique_number(G, nodes=…, cliques=…, separate_nodes=…)
  • added: function max_weight_clique(G, weight=…)
  • added: function generalized_degree(G, nodes=…)
  • added: export equitable_color
  • added: function equitable_color(G, num_colors)
  • changed: function strategy_random_sequential(G, colors) → function strategy_random_sequential(G, colors, seed=…)
  • removed: function greedy_coloring_with_interchange(original_graph, nodes)
  • added: function communicability(G)
  • added: function communicability_exp(G)
  • added: function asyn_fluidc(G, k, max_iter=…, seed=…)
  • added: function girvan_newman(G, most_valuable_edge=…)
  • added: function is_partition(G, communities)
  • added: function kernighan_lin_bisection(G, partition=…, max_iter=…, weight=…, seed=…)
  • added: function asyn_lpa_communities(G, weight=…, seed=…)
  • added: function label_propagation_communities(G)
  • added: function louvain_communities(G, weight=…, resolution=…, threshold=…, seed=…)
  • added: function louvain_partitions(G, weight=…, resolution=…, threshold=…, seed=…)
  • added: function lukes_partitioning(G, max_size, node_weight=…, edge_weight=…)
  • added: function greedy_modularity_communities(G, weight=…, resolution=…, cutoff=…, best_n=…, n_communities=…)
  • added: function naive_greedy_modularity_communities(G, resolution=…, weight=…)
  • added: variable _naive_greedy_modularity_communities
  • added: function coverage(G, partition)
  • added: function modularity(G, communities, weight=…, resolution=…)
  • added: function partition_quality(G, partition)
  • added: function performance(G, partition)
  • removed: function attracting_component_subgraphs(G, copy=…)
  • removed: function biconnected_component_subgraphs(G, copy=…)
  • removed: function connected_component_subgraphs(G, copy=…)
  • changed: function is_semiconnected(G) → function is_semiconnected(G, topo_order=…)
  • removed: function strongly_connected_component_subgraphs(G, copy=…)
  • removed: function weakly_connected_component_subgraphs(G, copy=…)
  • changed: function edge_connectivity(G, s=…, t=…, flow_func=…) → function edge_connectivity(G, s=…, t=…, flow_func=…, cutoff=…)
  • changed: function local_edge_connectivity(G, u, v, flow_func=…, auxiliary=…, residual=…, cutoff=…) → function local_edge_connectivity(G, s, t, flow_func=…, auxiliary=…, residual=…, cutoff=…)
  • added: function edge_disjoint_paths(G, s, t, flow_func=…, cutoff=…, auxiliary=…, residual=…)
  • added: function node_disjoint_paths(G, s, t, flow_func=…, cutoff=…, auxiliary=…, residual=…)
  • added: function is_k_edge_connected(G, k)
  • added: function is_locally_k_edge_connected(G, s, t, k)
  • added: function k_edge_augmentation(G, k, avail=…, weight=…, partial=…)
  • added: class EdgeComponentAuxGraph
  • added: function bridge_components(G)
  • added: function k_edge_components(G, k)
  • added: function k_edge_subgraphs(G, k)
  • added: method EdgeComponentAuxGraph.k_edge_components(k)
  • added: method EdgeComponentAuxGraph.k_edge_subgraphs(k)
  • added: static method EdgeComponentAuxGraph.construct(G)
  • removed: variable find_cores
  • added: function find_cores(G)
  • added: function k_truss(G, k)
  • added: function onion_layers(G)
  • added: function is_edge_cover(G, cover)
  • added: function min_edge_cover(G, matching_algorithm=…)
  • added: function boundary_expansion(G, S)
  • added: function conductance(G, S, T=…, weight=…)
  • added: function cut_size(G, S, T=…, weight=…)
  • added: function edge_expansion(G, S, T=…, weight=…)
  • added: function mixing_expansion(G, S, T=…, weight=…)
  • added: function node_expansion(G, S)
  • added: function normalized_cut_size(G, S, T=…, weight=…)
  • added: function volume(G, S, weight=…)
  • added: function minimum_cycle_basis(G, weight=…)
  • added: function d_separated(G, x, y, z)
  • removed: function topological_sort_recursive(G, nbunch=…, reverse=…)
  • changed: function antichains(G) → function antichains(G, topo_order=…)
  • changed: function dag_longest_path(G) → function dag_longest_path(G, weight=…, default_weight=…, topo_order=…)
  • changed: function dag_longest_path_length(G) → function dag_longest_path_length(G, weight=…, default_weight=…)
  • changed: function topological_sort(G, nbunch=…, reverse=…) → function topological_sort(G)
  • changed: function transitive_closure(G) → function transitive_closure(G, reflexive=…)
  • added: function all_topological_sorts(G)
  • added: function dag_to_branching(G)
  • added: function lexicographical_topological_sort(G, key=…)
  • added: function topological_generations(G)
  • added: function transitive_closure_dag(G, topo_order=…)
  • added: function transitive_reduction(G)
  • changed: function center(G, e=…) → function center(G, e=…, usebounds=…)
  • changed: function diameter(G, e=…) → function diameter(G, e=…, usebounds=…)
  • changed: function periphery(G, e=…) → function periphery(G, e=…, usebounds=…)
  • changed: function radius(G, e=…) → function radius(G, e=…, usebounds=…)
  • added: function barycenter(G, weight=…, attr=…, sp=…)
  • added: function extrema_bounding(G, compute=…)
  • added: function resistance_distance(G, nodeA, nodeB, weight=…, invert_weight=…)
  • added: function is_strongly_regular(G)
  • added: function efficiency(G, u, v)
  • added: function global_efficiency(G)
  • added: function local_efficiency(G)
  • changed: function eulerian_circuit(G, source=…) → function eulerian_circuit(G, source=…, keys=…)
  • added: function eulerian_path(G, source=…, keys=…)
  • added: function eulerize(G)
  • added: function has_eulerian_path(G, source=…)
  • added: function is_semieulerian(G)
  • added: function boykov_kolmogorov(G, s, t, capacity=…, residual=…, value_only=…, cutoff=…)
  • added: function dinitz(G, s, t, capacity=…, residual=…, value_only=…, cutoff=…)
  • added: function gomory_hu_tree(G, capacity=…, flow_func=…)
  • changed: function maximum_flow(G, s, t, capacity=…, flow_func=…, **kwargs) → function maximum_flow(flowG, _s, _t, capacity=…, flow_func=…, **kwargs)
  • changed: function maximum_flow_value(G, s, t, capacity=…, flow_func=…, **kwargs) → function maximum_flow_value(flowG, _s, _t, capacity=…, flow_func=…, **kwargs)
  • changed: function minimum_cut(G, s, t, capacity=…, flow_func=…, **kwargs) → function minimum_cut(flowG, _s, _t, capacity=…, flow_func=…, **kwargs)
  • changed: function minimum_cut_value(G, s, t, capacity=…, flow_func=…, **kwargs) → function minimum_cut_value(flowG, _s, _t, capacity=…, flow_func=…, **kwargs)
  • changed: class CurrentEdge(object) → class CurrentEdge
  • changed: class GlobalRelabelThreshold(object) → class GlobalRelabelThreshold
  • changed: class Level(object) → class Level
  • added: function weisfeiler_lehman_graph_hash(G, edge_attr=…, node_attr=…, iterations=…, digest_size=…)
  • added: function weisfeiler_lehman_subgraph_hashes(G, edge_attr=…, node_attr=…, iterations=…, digest_size=…)
  • removed: variable is_valid_degree_sequence
  • added: function number_of_isolates(G)
  • added: class ISMAGS
  • added: constructor ISMAGS(graph, subgraph, node_match=…, edge_match=…, cache=…)
  • added: method ISMAGS.analyze_symmetry(graph, node_partitions, edge_colors)
  • added: method ISMAGS.find_isomorphisms(symmetry=…)
  • added: method ISMAGS.is_isomorphic(symmetry=…)
  • added: method ISMAGS.isomorphisms_iter(symmetry=…)
  • added: method ISMAGS.largest_common_subgraph(symmetry=…)
  • added: method ISMAGS.subgraph_is_isomorphic(symmetry=…)
  • added: method ISMAGS.subgraph_isomorphisms_iter(symmetry=…)
  • changed: class GraphMatcher(object) → class GraphMatcher
  • added: method GraphMatcher.subgraph_is_monomorphic()
  • added: method GraphMatcher.subgraph_monomorphisms_iter()
  • removed: function categorical_edge_match(*args, **kwargs)
  • removed: function generic_edge_match(*args, **kwargs)
  • removed: function numerical_edge_match(*args, **kwargs)
  • added: class TimeRespectingDiGraphMatcher(DiGraphMatcher)
  • added: class TimeRespectingGraphMatcher(GraphMatcher)
  • added: constructor TimeRespectingDiGraphMatcher(G1, G2, temporal_attribute_name, delta)
  • added: constructor TimeRespectingGraphMatcher(G1, G2, temporal_attribute_name, delta)
  • added: method TimeRespectingDiGraphMatcher.get_pred_dates(Gx, Gx_node, core_x, pred)
  • added: method TimeRespectingDiGraphMatcher.get_succ_dates(Gx, Gx_node, core_x, succ)
  • added: method TimeRespectingDiGraphMatcher.one_hop(Gx, Gx_node, core_x, pred, succ)
  • added: method TimeRespectingDiGraphMatcher.preds(Gx, core_x, v, Gx_node=…)
  • added: method TimeRespectingDiGraphMatcher.semantic_feasibility(G1_node, G2_node)
  • added: method TimeRespectingDiGraphMatcher.succs(Gx, core_x, v, Gx_node=…)
  • added: method TimeRespectingDiGraphMatcher.test_one(pred_dates, succ_dates)
  • added: method TimeRespectingDiGraphMatcher.test_two(pred_dates, succ_dates)
  • added: method TimeRespectingDiGraphMatcher.two_hop_pred(Gx, Gx_node, core_x, pred)
  • added: method TimeRespectingDiGraphMatcher.two_hop_succ(Gx, Gx_node, core_x, succ)
  • added: method TimeRespectingGraphMatcher.one_hop(Gx, Gx_node, neighbors)
  • added: method TimeRespectingGraphMatcher.semantic_feasibility(G1_node, G2_node)
  • added: method TimeRespectingGraphMatcher.two_hop(Gx, core_x, Gx_node, neighbors)
  • added: function rooted_tree_isomorphism(t1, root1, t2, root2)
  • added: function tree_isomorphism(t1, t2)
  • changed: function hits_scipy(G, max_iter=…, tol=…, normalized=…) → function hits_scipy(G, max_iter=…, tol=…, nstart=…, normalized=…)
  • changed: function pagerank_scipy(G, alpha=…, personalization=…, max_iter=…, tol=…, weight=…, dangling=…) → function pagerank_scipy(G, alpha=…, personalization=…, max_iter=…, tol=…, nstart=…, weight=…, dangling=…)
  • added: function common_neighbor_centrality(G, ebunch=…, alpha=…)
  • added: function all_pairs_lowest_common_ancestor(G, pairs=…)
  • added: function lowest_common_ancestor(G, node1, node2, default=…)
  • added: function tree_all_pairs_lowest_common_ancestor(G, root=…, pairs=…)
  • changed: function max_weight_matching(G, maxcardinality=…) → function max_weight_matching(G, maxcardinality=…, weight=…)
  • added: function is_matching(G, matching)
  • added: function is_maximal_matching(G, matching)
  • added: function is_perfect_matching(G, matching)
  • added: function min_weight_matching(G, maxcardinality=…, weight=…)
  • removed: function contracted_edge(G, edge, self_loops=…)
  • removed: function contracted_nodes(G, u, v, self_loops=…)
  • removed: function quotient_graph(G, node_relation, edge_relation=…, create_using=…)
  • removed: variable identified_nodes
  • added: export contracted_edge
  • added: export contracted_nodes
  • added: export equivalence_classes
  • added: export identified_nodes
  • added: export quotient_graph
  • added: function contracted_edge(G, edge, self_loops=…, copy=…)
  • added: function contracted_nodes(G, u, v, self_loops=…, copy=…)
  • added: function equivalence_classes(iterable, relation)
  • added: function quotient_graph(G, partition, edge_relation=…, node_data=…, edge_data=…, relabel=…, create_using=…)
  • added: variable identified_nodes
  • changed: function maximal_independent_set(G, nodes=…) → function maximal_independent_set(G, nodes=…, seed=…)
  • added: function moral_graph(G)
  • removed: function minimum_spanning_edges(G, weight=…, data=…)
  • removed: function minimum_spanning_tree(G, weight=…)
  • removed: function prim_mst(G, weight=…)
  • removed: function prim_mst_edges(G, weight=…, data=…)
  • removed: variable kruskal_mst
  • added: function harmonic_function(G, max_iter=…, label_name=…)
  • added: function local_and_global_consistency(G, alpha=…, max_iter=…, label_name=…)
  • added: function non_randomness(G, k=…, weight=…)
  • changed: function compose_all(graphs, name=…) → function compose_all(graphs)
  • changed: function union_all(graphs, rename=…, name=…) → function union_all(graphs, rename=…)
  • changed: function compose(G, H, name=…) → function compose(G, H)
  • added: function full_join(G, H, rename=…)
  • added: function rooted_product(G, H, root)
  • changed: function complement(G, name=…) → function complement(G)
  • added: function combinatorial_embedding_to_pos(embedding, fully_triangulate=…)
  • added: class PlanarEmbedding(nx.DiGraph)
  • added: function check_planarity(G, counterexample=…)
  • added: function is_planar(G)
  • added: method PlanarEmbedding.add_half_edge_ccw(start_node, end_node, reference_neighbor)
  • added: method PlanarEmbedding.add_half_edge_cw(start_node, end_node, reference_neighbor)
  • added: method PlanarEmbedding.add_half_edge_first(start_node, end_node)
  • added: method PlanarEmbedding.check_structure()
  • added: method PlanarEmbedding.connect_components(v, w)
  • added: method PlanarEmbedding.get_data()
  • added: method PlanarEmbedding.is_directed()
  • added: method PlanarEmbedding.neighbors_cw_order(v)
  • added: method PlanarEmbedding.next_face_half_edge(v, w)
  • added: method PlanarEmbedding.set_data(data)
  • added: method PlanarEmbedding.traverse_face(v, w, mark_half_edges=…)
  • added: function chromatic_polynomial(G)
  • added: function tutte_polynomial(G)
  • added: function overall_reciprocity(G)
  • added: function reciprocity(G, nodes=…)
  • added: function is_k_regular(G, k)
  • added: function is_regular(G)
  • added: function k_factor(G, k, matching_weight=…)
  • changed: function rich_club_coefficient(G, normalized=…, Q=…) → function rich_club_coefficient(G, normalized=…, Q=…, seed=…)
  • added: function reconstruct_path(source, target, predecessors)
  • changed: function all_shortest_paths(G, source, target, weight=…) → function all_shortest_paths(G, source, target, weight=…, method=…)
  • changed: function average_shortest_path_length(G, weight=…) → function average_shortest_path_length(G, weight=…, method=…)
  • changed: function shortest_path(G, source=…, target=…, weight=…) → function shortest_path(G, source=…, target=…, weight=…, method=…)
  • changed: function shortest_path_length(G, source=…, target=…, weight=…) → function shortest_path_length(G, source=…, target=…, weight=…, method=…)
  • added: function single_target_shortest_path(G, target, cutoff=…)
  • added: function single_target_shortest_path_length(G, target, cutoff=…)
  • removed: function bellman_ford(G, source, weight=…)
  • changed: function negative_edge_cycle(G, weight=…) → function negative_edge_cycle(G, weight=…, heuristic=…)
  • added: function all_pairs_bellman_ford_path(G, weight=…)
  • added: function all_pairs_bellman_ford_path_length(G, weight=…)
  • added: function all_pairs_dijkstra(G, cutoff=…, weight=…)
  • added: function bellman_ford_path(G, source, target, weight=…)
  • added: function bellman_ford_path_length(G, source, target, weight=…)
  • added: function bellman_ford_predecessor_and_distance(G, source, target=…, weight=…, heuristic=…)
  • added: function find_negative_cycle(G, source, weight=…)
  • added: function multi_source_dijkstra(G, sources, target=…, cutoff=…, weight=…)
  • added: function multi_source_dijkstra_path(G, sources, cutoff=…, weight=…)
  • added: function multi_source_dijkstra_path_length(G, sources, cutoff=…, weight=…)
  • added: function single_source_bellman_ford(G, source, target=…, weight=…)
  • added: function single_source_bellman_ford_path(G, source, weight=…)
  • added: function single_source_bellman_ford_path_length(G, source, weight=…)
  • added: function generate_random_paths(G, sample_size, path_length=…, index_map=…)
  • added: function graph_edit_distance(G1, G2, node_match=…, edge_match=…, node_subst_cost=…, node_del_cost=…, node_ins_cost=…, edge_subst_cost=…, edge_del_cost=…, edge_ins_cost=…, roots=…, upper_bound=…, timeout=…)
  • added: function optimal_edit_paths(G1, G2, node_match=…, edge_match=…, node_subst_cost=…, node_del_cost=…, node_ins_cost=…, edge_subst_cost=…, edge_del_cost=…, edge_ins_cost=…, upper_bound=…)
  • added: function optimize_edit_paths(G1, G2, node_match=…, edge_match=…, node_subst_cost=…, node_del_cost=…, node_ins_cost=…, edge_subst_cost=…, edge_del_cost=…, edge_ins_cost=…, upper_bound=…, strictly_decreasing=…, roots=…, timeout=…)
  • added: function optimize_graph_edit_distance(G1, G2, node_match=…, edge_match=…, node_subst_cost=…, node_del_cost=…, node_ins_cost=…, edge_subst_cost=…, edge_del_cost=…, edge_ins_cost=…, upper_bound=…)
  • added: function panther_similarity(G, source, k=…, path_length=…, c=…, delta=…, eps=…)
  • added: function simrank_similarity(G, source=…, target=…, importance_factor=…, max_iterations=…, tolerance=…)
  • added: function simrank_similarity_numpy(G, source=…, target=…, importance_factor=…, max_iterations=…, tolerance=…)
  • added: function all_simple_edge_paths(G, source, target, cutoff=…)
  • added: function is_simple_path(G, nodes)
  • added: function lattice_reference(G, niter=…, D=…, connectivity=…, seed=…)
  • added: function omega(G, niter=…, nrand=…, seed=…)
  • added: function random_reference(G, niter=…, connectivity=…, seed=…)
  • added: function sigma(G, niter=…, nrand=…, seed=…)
  • added: function spanner(G, stretch, weight=…, seed=…)
  • added: function constraint(G, nodes=…, weight=…)
  • added: function effective_size(G, nodes=…, weight=…)
  • added: function local_constraint(G, u, v, weight=…)
  • added: function dedensify(G, threshold, prefix=…, copy=…)
  • added: function snap_aggregation(G, node_attributes, edge_attributes=…, prefix=…, supernode_attribute=…, superedge_attribute=…)
  • changed: function connected_double_edge_swap(G, nswap=…, _window_threshold=…) → function connected_double_edge_swap(G, nswap=…, _window_threshold=…, seed=…)
  • changed: function double_edge_swap(G, nswap=…, max_tries=…) → function double_edge_swap(G, nswap=…, max_tries=…, seed=…)
  • added: function find_threshold_graph(G, create_using=…)
  • added: function is_threshold_graph(G)
  • added: function hamiltonian_path(G)
  • added: function is_reachable(G, s, t)
  • added: function is_strongly_connected(G)
  • added: function is_tournament(G)
  • added: function random_tournament(n, seed=…)
  • added: function score_sequence(G)
  • added: function bfs_beam_edges(G, source, value, width=…)
  • changed: function bfs_edges(G, source, reverse=…) → function bfs_edges(G, source, reverse=…, depth_limit=…, sort_neighbors=…)
  • changed: function bfs_predecessors(G, source) → function bfs_predecessors(G, source, depth_limit=…, sort_neighbors=…)
  • changed: function bfs_successors(G, source) → function bfs_successors(G, source, depth_limit=…, sort_neighbors=…)
  • changed: function bfs_tree(G, source, reverse=…) → function bfs_tree(G, source, reverse=…, depth_limit=…, sort_neighbors=…)
  • added: function bfs_layers(G, sources)
  • added: function descendants_at_distance(G, source, distance)
  • changed: function dfs_edges(G, source=…) → function dfs_edges(G, source=…, depth_limit=…)
  • changed: function dfs_labeled_edges(G, source=…) → function dfs_labeled_edges(G, source=…, depth_limit=…)
  • changed: function dfs_postorder_nodes(G, source=…) → function dfs_postorder_nodes(G, source=…, depth_limit=…)
  • changed: function dfs_predecessors(G, source=…) → function dfs_predecessors(G, source=…, depth_limit=…)
  • changed: function dfs_preorder_nodes(G, source=…) → function dfs_preorder_nodes(G, source=…, depth_limit=…)
  • changed: function dfs_successors(G, source=…) → function dfs_successors(G, source=…, depth_limit=…)
  • changed: function dfs_tree(G, source) → function dfs_tree(G, source=…, depth_limit=…)
  • added: function edge_bfs(G, source=…, orientation=…)
  • changed: class Edmonds(object) → class Edmonds
  • changed: function greedy_branching(G, attr=…, default=…, kind=…) → function greedy_branching(G, attr=…, default=…, kind=…, seed=…)
  • changed: function maximum_branching(G, attr=…, default=…) → function maximum_branching(G, attr=…, default=…, preserve_attrs=…, partition=…)
  • changed: function maximum_spanning_arborescence(G, attr=…, default=…) → function maximum_spanning_arborescence(G, attr=…, default=…, preserve_attrs=…, partition=…)
  • changed: function minimum_branching(G, attr=…, default=…) → function minimum_branching(G, attr=…, default=…, preserve_attrs=…, partition=…)
  • changed: function minimum_spanning_arborescence(G, attr=…, default=…) → function minimum_spanning_arborescence(G, attr=…, default=…, preserve_attrs=…, partition=…)
  • changed: method Edmonds.find_optimum(attr=…, default=…, kind=…, style=…) → method Edmonds.find_optimum(attr=…, default=…, kind=…, style=…, preserve_attrs=…, partition=…, seed=…)
  • added: class ArborescenceIterator
  • added: class ArborescenceIterator.Partition
  • added: constructor ArborescenceIterator(G, weight=…, minimum=…, init_partition=…)
  • added: field ArborescenceIterator.Partition.mst_weight: float
  • added: field ArborescenceIterator.Partition.partition_dict: dict
  • added: class NotATree(nx.NetworkXException)
  • added: function from_nested_tuple(sequence, sensible_relabeling=…)
  • added: function from_prufer_sequence(sequence)
  • added: function to_nested_tuple(T, root, canonical_form=…)
  • added: function to_prufer_sequence(T)
  • added: function junction_tree(G)
  • added: class EdgePartition(Enum)
  • added: class SpanningTreeIterator
  • added: class SpanningTreeIterator.Partition
  • added: constructor SpanningTreeIterator(G, weight=…, minimum=…, ignore_nan=…)
  • added: field EdgePartition.EXCLUDED
  • added: field EdgePartition.INCLUDED
  • added: field EdgePartition.OPEN
  • added: field SpanningTreeIterator.Partition.mst_weight: float
  • added: field SpanningTreeIterator.Partition.partition_dict: dict
  • added: function maximum_spanning_edges(G, algorithm=…, weight=…, keys=…, data=…, ignore_nan=…)
  • added: function maximum_spanning_tree(G, weight=…, algorithm=…, ignore_nan=…)
  • added: function minimum_spanning_edges(G, algorithm=…, weight=…, keys=…, data=…, ignore_nan=…)
  • added: function minimum_spanning_tree(G, weight=…, algorithm=…, ignore_nan=…)
  • added: function partition_spanning_tree(G, minimum=…, weight=…, partition=…, ignore_nan=…)
  • added: function random_spanning_tree(G, weight=…, *, multiplicative=…, seed=…)
  • added: function join(rooted_trees, label_attribute=…)
  • changed: function triadic_census(G) → function triadic_census(G, nodelist=…)
  • added: function all_triads(G)
  • added: function all_triplets(G)
  • added: function is_triad(G)
  • added: function random_triad(G)
  • added: function triad_type(G)
  • added: function triads_by_type(G)
  • changed: function closeness_vitality(G, weight=…) → function closeness_vitality(G, node=…, weight=…, wiener_index=…)
  • added: function voronoi_cells(G, center_nodes, weight=…)
  • added: function wiener_index(G, weight=…)
  • added: export coreviews
  • added: export filters
  • added: export graphviews
  • added: export reportviews
  • added: class AdjacencyView(AtlasView)
  • added: class AtlasView(Mapping)
  • added: class FilterAdjacency(Mapping)
  • added: class FilterAtlas(Mapping)
  • added: class FilterMultiAdjacency(FilterAdjacency)
  • added: class FilterMultiInner(FilterAdjacency)
  • added: class MultiAdjacencyView(AdjacencyView)
  • added: class UnionAdjacency(Mapping)
  • added: class UnionAtlas(Mapping)
  • added: class UnionMultiAdjacency(UnionAdjacency)
  • added: class UnionMultiInner(UnionAtlas)
  • added: constructor AtlasView(d)
  • added: constructor FilterAdjacency(d, NODE_OK, EDGE_OK)
  • added: constructor FilterAtlas(d, NODE_OK)
  • added: constructor UnionAdjacency(succ, pred)
  • added: constructor UnionAtlas(succ, pred)
  • added: method AdjacencyView.copy()
  • added: method AtlasView.copy()
  • added: method FilterAdjacency.copy()
  • added: method FilterAtlas.copy()
  • added: method FilterMultiAdjacency.copy()
  • added: method FilterMultiInner.copy()
  • added: method MultiAdjacencyView.copy()
  • added: method UnionAdjacency.copy()
  • added: method UnionAtlas.copy()
  • added: method UnionMultiInner.copy()
  • removed: field DiGraph.neighbors_iter
  • removed: field DiGraph.out_edges
  • removed: field DiGraph.out_edges_iter
  • removed: method DiGraph.degree_iter(nbunch=…, weight=…)
  • removed: method DiGraph.edges_iter(nbunch=…, data=…, default=…)
  • removed: method DiGraph.in_degree(nbunch=…, weight=…)
  • removed: method DiGraph.in_degree_iter(nbunch=…, weight=…)
  • removed: method DiGraph.in_edges(nbunch=…, data=…)
  • removed: method DiGraph.in_edges_iter(nbunch=…, data=…)
  • removed: method DiGraph.out_degree(nbunch=…, weight=…)
  • removed: method DiGraph.out_degree_iter(nbunch=…, weight=…)
  • removed: method DiGraph.predecessors_iter(n)
  • removed: method DiGraph.subgraph(nbunch)
  • removed: method DiGraph.successors_iter(n)
  • removed: method DiGraph.to_directed()
  • changed: constructor DiGraph(data=…, **attr) → constructor DiGraph(incoming_graph_data=…, **attr)
  • changed: method DiGraph.add_edge(u, v, attr_dict=…, **attr) → method DiGraph.add_edge(u_of_edge, v_of_edge, **attr)
  • changed: method DiGraph.add_edges_from(ebunch, attr_dict=…, **attr) → method DiGraph.add_edges_from(ebunch_to_add, **attr)
  • changed: method DiGraph.add_node(n, attr_dict=…, **attr) → method DiGraph.add_node(node_for_adding, **attr)
  • changed: method DiGraph.add_nodes_from(nodes, **attr) → method DiGraph.add_nodes_from(nodes_for_adding, **attr)
  • changed: method DiGraph.remove_nodes_from(nbunch) → method DiGraph.remove_nodes_from(nodes)
  • changed: method DiGraph.to_undirected(reciprocal=…) → method DiGraph.to_undirected(reciprocal=…, as_view=…)
  • added: method DiGraph.clear_edges()
  • added: property DiGraph.adj
  • added: property DiGraph.degree
  • added: property DiGraph.edges
  • added: property DiGraph.in_degree
  • added: property DiGraph.in_edges
  • added: property DiGraph.out_degree
  • added: property DiGraph.out_edges
  • added: property DiGraph.pred
  • added: property DiGraph.succ
  • added: class show_nodes
  • added: constructor show_nodes(nodes)
  • added: function hide_diedges(edges)
  • added: function hide_edges(edges)
  • added: function hide_multidiedges(edges)
  • added: function hide_multiedges(edges)
  • added: function hide_nodes(nodes)
  • added: function no_filter(*items)
  • added: function show_diedges(edges)
  • added: function show_edges(edges)
  • added: function show_multidiedges(edges)
  • added: function show_multiedges(edges)
  • removed: function edges_iter(G, nbunch=…)
  • removed: function nodes_iter(G)
  • changed: function create_empty_copy(G, with_nodes=…) → function create_empty_copy(G, with_data=…)
  • changed: function set_edge_attributes(G, name, values) → function set_edge_attributes(G, values, name=…)
  • changed: function set_node_attributes(G, name, values) → function set_node_attributes(G, values, name=…)
  • added: export reverse_view
  • added: export subgraph_view
  • added: function add_cycle(G_to_add_to, nodes_for_cycle, **attr)
  • added: function add_path(G_to_add_to, nodes_for_path, **attr)
  • added: function add_star(G_to_add_to, nodes_for_star, **attr)
  • added: function edge_subgraph(G, edges)
  • added: function induced_subgraph(G, nbunch)
  • added: function is_path(G, path)
  • added: function nodes_with_selfloops(G)
  • added: function number_of_selfloops(G)
  • added: function path_weight(G, path, weight)
  • added: function restricted_view(G, nodes, edges)
  • added: function selfloop_edges(G, data=…, keys=…, default=…)
  • added: function to_directed(graph)
  • added: function to_undirected(graph)
  • removed: field Graph.adjlist_dict_factory
  • removed: method Graph.add_cycle(nodes, **attr)
  • removed: method Graph.add_path(nodes, **attr)
  • removed: method Graph.add_star(nodes, **attr)
  • removed: method Graph.adjacency_iter()
  • removed: method Graph.adjacency_list()
  • removed: method Graph.degree(nbunch=…, weight=…)
  • removed: method Graph.degree_iter(nbunch=…, weight=…)
  • removed: method Graph.edges(nbunch=…, data=…, default=…)
  • removed: method Graph.edges_iter(nbunch=…, data=…, default=…)
  • removed: method Graph.neighbors_iter(n)
  • removed: method Graph.nodes(data=…)
  • removed: method Graph.nodes_iter(data=…)
  • removed: method Graph.nodes_with_selfloops()
  • removed: method Graph.number_of_selfloops()
  • removed: method Graph.selfloop_edges(data=…, default=…)
  • changed: class Graph(object) → class Graph
  • changed: constructor Graph(data=…, **attr) → constructor Graph(incoming_graph_data=…, **attr)
  • changed: method Graph.add_edge(u, v, attr_dict=…, **attr) → method Graph.add_edge(u_of_edge, v_of_edge, **attr)
  • changed: method Graph.add_edges_from(ebunch, attr_dict=…, **attr) → method Graph.add_edges_from(ebunch_to_add, **attr)
  • changed: method Graph.add_node(n, attr_dict=…, **attr) → method Graph.add_node(node_for_adding, **attr)
  • changed: method Graph.add_nodes_from(nodes, **attr) → method Graph.add_nodes_from(nodes_for_adding, **attr)
  • changed: method Graph.add_weighted_edges_from(ebunch, weight=…, **attr) → method Graph.add_weighted_edges_from(ebunch_to_add, weight=…, **attr)
  • changed: method Graph.copy() → method Graph.copy(as_view=…)
  • changed: method Graph.subgraph(nbunch) → method Graph.subgraph(nodes)
  • changed: method Graph.to_directed() → method Graph.to_directed(as_view=…)
  • changed: method Graph.to_undirected() → method Graph.to_undirected(as_view=…)
  • added: field Graph.adjlist_inner_dict_factory
  • added: field Graph.adjlist_outer_dict_factory
  • added: field Graph.graph_attr_dict_factory
  • added: field Graph.node_attr_dict_factory
  • added: method Graph.adjacency()
  • added: method Graph.clear_edges()
  • added: method Graph.edge_subgraph(edges)
  • added: method Graph.to_directed_class()
  • added: method Graph.to_undirected_class()
  • added: method Graph.update(edges=…, nodes=…)
  • added: property Graph.adj
  • added: property Graph.degree
  • added: property Graph.edges
  • added: property Graph.nodes
  • added: function generic_graph_view(G, create_using=…)
  • added: function reverse_view(G)
  • added: function subgraph_view(G, filter_node=…, filter_edge=…)
  • removed: field MultiDiGraph.out_edges_iter
  • removed: method MultiDiGraph.degree_iter(nbunch=…, weight=…)
  • removed: method MultiDiGraph.edges_iter(nbunch=…, data=…, keys=…, default=…)
  • removed: method MultiDiGraph.in_degree_iter(nbunch=…, weight=…)
  • removed: method MultiDiGraph.in_edges(nbunch=…, keys=…, data=…)
  • removed: method MultiDiGraph.in_edges_iter(nbunch=…, data=…, keys=…)
  • removed: method MultiDiGraph.out_degree_iter(nbunch=…, weight=…)
  • removed: method MultiDiGraph.out_edges(nbunch=…, keys=…, data=…)
  • removed: method MultiDiGraph.subgraph(nbunch)
  • removed: method MultiDiGraph.to_directed()
  • changed: constructor MultiDiGraph(data=…, **attr) → constructor MultiDiGraph(incoming_graph_data=…, multigraph_input=…, **attr)
  • changed: method MultiDiGraph.add_edge(u, v, key=…, attr_dict=…, **attr) → method MultiDiGraph.add_edge(u_for_edge, v_for_edge, key=…, **attr)
  • changed: method MultiDiGraph.to_undirected(reciprocal=…) → method MultiDiGraph.to_undirected(reciprocal=…, as_view=…)
  • added: property MultiDiGraph.adj
  • added: property MultiDiGraph.degree
  • added: property MultiDiGraph.edges
  • added: property MultiDiGraph.in_degree
  • added: property MultiDiGraph.in_edges
  • added: property MultiDiGraph.out_degree
  • added: property MultiDiGraph.out_edges
  • added: property MultiDiGraph.pred
  • added: property MultiDiGraph.succ
  • removed: method MultiGraph.degree_iter(nbunch=…, weight=…)
  • removed: method MultiGraph.edges(nbunch=…, data=…, keys=…, default=…)
  • removed: method MultiGraph.edges_iter(nbunch=…, data=…, keys=…, default=…)
  • removed: method MultiGraph.selfloop_edges(data=…, keys=…, default=…)
  • removed: method MultiGraph.subgraph(nbunch)
  • changed: constructor MultiGraph(data=…, **attr) → constructor MultiGraph(incoming_graph_data=…, multigraph_input=…, **attr)
  • changed: method MultiGraph.add_edge(u, v, key=…, attr_dict=…, **attr) → method MultiGraph.add_edge(u_for_edge, v_for_edge, key=…, **attr)
  • changed: method MultiGraph.add_edges_from(ebunch, attr_dict=…, **attr) → method MultiGraph.add_edges_from(ebunch_to_add, **attr)
  • changed: method MultiGraph.to_directed() → method MultiGraph.to_directed(as_view=…)
  • added: method MultiGraph.copy(as_view=…)
  • added: method MultiGraph.new_edge_key(u, v)
  • added: method MultiGraph.to_directed_class()
  • added: method MultiGraph.to_undirected(as_view=…)
  • added: method MultiGraph.to_undirected_class()
  • added: property MultiGraph.adj
  • added: property MultiGraph.degree
  • added: property MultiGraph.edges
  • removed: field OrderedDiGraph.adjlist_dict_factory
  • removed: field OrderedGraph.adjlist_dict_factory
  • removed: field OrderedMultiDiGraph.adjlist_dict_factory
  • removed: field OrderedMultiGraph.adjlist_dict_factory
  • added: constructor OrderedDiGraph(incoming_graph_data=…, **attr)
  • added: constructor OrderedGraph(incoming_graph_data=…, **attr)
  • added: constructor OrderedMultiDiGraph(incoming_graph_data=…, **attr)
  • added: constructor OrderedMultiGraph(incoming_graph_data=…, **attr)
  • added: field OrderedDiGraph.adjlist_inner_dict_factory
  • added: field OrderedDiGraph.adjlist_outer_dict_factory
  • added: field OrderedGraph.adjlist_inner_dict_factory
  • added: field OrderedGraph.adjlist_outer_dict_factory
  • added: field OrderedMultiDiGraph.adjlist_inner_dict_factory
  • added: field OrderedMultiDiGraph.adjlist_outer_dict_factory
  • added: field OrderedMultiGraph.adjlist_inner_dict_factory
  • added: field OrderedMultiGraph.adjlist_outer_dict_factory
  • added: class DegreeView(DiDegreeView)
  • added: class DiDegreeView
  • added: class DiMultiDegreeView(DiDegreeView)
  • added: class EdgeDataView(OutEdgeDataView)
  • added: class EdgeView(OutEdgeView)
  • added: class InDegreeView(DiDegreeView)
  • added: class InEdgeDataView(OutEdgeDataView)
  • added: class InEdgeView(OutEdgeView)
  • added: class InMultiDegreeView(DiDegreeView)
  • added: class InMultiEdgeDataView(OutMultiEdgeDataView)
  • added: class InMultiEdgeView(OutMultiEdgeView)
  • added: class MultiDegreeView(DiDegreeView)
  • added: class MultiEdgeDataView(OutMultiEdgeDataView)
  • added: class MultiEdgeView(OutMultiEdgeView)
  • added: class NodeDataView(Set)
  • added: class NodeView(Mapping, Set)
  • added: class OutDegreeView(DiDegreeView)
  • added: class OutEdgeDataView
  • added: class OutEdgeView(Set, Mapping)
  • added: class OutMultiDegreeView(DiDegreeView)
  • added: class OutMultiEdgeDataView(OutEdgeDataView)
  • added: class OutMultiEdgeView(OutEdgeView)
  • added: constructor DiDegreeView(G, nbunch=…, weight=…)
  • added: constructor InEdgeView(G)
  • added: constructor InMultiEdgeView(G)
  • added: constructor NodeDataView(nodedict, data=…, default=…)
  • added: constructor NodeView(graph)
  • added: constructor OutEdgeDataView(viewer, nbunch=…, data=…, default=…)
  • added: constructor OutEdgeView(G)
  • added: constructor OutMultiEdgeDataView(viewer, nbunch=…, data=…, keys=…, default=…)
  • added: field EdgeView.dataview
  • added: field InEdgeView.dataview
  • added: field InMultiEdgeView.dataview
  • added: field MultiEdgeView.dataview
  • added: field OutEdgeView.dataview
  • added: field OutMultiEdgeView.dataview
  • added: method NodeView.data(data=…, default=…)
  • added: method OutEdgeView.data(data=…, default=…, nbunch=…)
  • added: method OutMultiEdgeView.data(data=…, keys=…, default=…, nbunch=…)
  • added: function add_nx(doctest_namespace)
  • added: function pytest_addoption(parser)
  • added: function pytest_collection_modifyitems(config, items)
  • added: function pytest_configure(config)
  • added: function set_warnings()
  • added: variable collect_ignore
  • added: variable has_matplotlib
  • added: variable has_numpy
  • added: variable has_ogr
  • added: variable has_pandas
  • added: variable has_pydot
  • added: variable has_pygraphviz
  • added: variable has_scipy
  • added: variable has_sympy
  • added: variable has_yaml
  • added: variable needs_matplotlib
  • added: variable needs_numpy
  • added: variable needs_ogr
  • added: variable needs_pandas
  • added: variable needs_pydot
  • added: variable needs_pygraphviz
  • added: variable needs_scipy
  • added: variable needs_sympy
  • added: variable needs_yaml
  • removed: function from_pandas_dataframe(df, source, target, edge_attr=…, create_using=…)
  • removed: function to_pandas_dataframe(G, nodelist=…, multigraph_weight=…, weight=…, nonedge=…)
  • added: function from_numpy_array(A, parallel_edges=…, create_using=…)
  • added: function from_pandas_adjacency(df, create_using=…)
  • added: function from_pandas_edgelist(df, source=…, target=…, edge_attr=…, create_using=…, edge_key=…)
  • added: function from_scipy_sparse_array(A, parallel_edges=…, create_using=…, edge_attribute=…)
  • added: function to_numpy_array(G, nodelist=…, dtype=…, order=…, multigraph_weight=…, weight=…, nonedge=…)
  • added: function to_pandas_adjacency(G, nodelist=…, dtype=…, order=…, multigraph_weight=…, weight=…, nonedge=…)
  • added: function to_pandas_edgelist(G, source=…, target=…, nodelist=…, dtype=…, order=…, edge_key=…)
  • added: function to_scipy_sparse_array(G, nodelist=…, dtype=…, weight=…, format=…)
  • removed: function fruchterman_reingold_layout(G, dim=…, k=…, pos=…, fixed=…, iterations=…, weight=…, scale=…, center=…)
  • removed: variable spring_layout
  • changed: function circular_layout(G, dim=…, scale=…, center=…) → function circular_layout(G, scale=…, center=…, dim=…)
  • changed: function random_layout(G, dim=…, scale=…, center=…) → function random_layout(G, center=…, dim=…, seed=…)
  • changed: function shell_layout(G, nlist=…, dim=…, scale=…, center=…) → function shell_layout(G, nlist=…, rotate=…, scale=…, center=…, dim=…)
  • changed: function spectral_layout(G, dim=…, weight=…, scale=…, center=…) → function spectral_layout(G, weight=…, scale=…, center=…, dim=…)
  • added: function bipartite_layout(G, nodes, align=…, scale=…, center=…, aspect_ratio=…)
  • added: function kamada_kawai_layout(G, dist=…, pos=…, weight=…, scale=…, center=…, dim=…)
  • added: function multipartite_layout(G, subset_key=…, align=…, scale=…, center=…)
  • added: function planar_layout(G, scale=…, center=…, dim=…)
  • added: function rescale_layout(pos, scale=…)
  • added: function rescale_layout_dict(pos, scale=…)
  • added: function spiral_layout(G, scale=…, center=…, dim=…, resolution=…, equidistant=…)
  • added: function spring_layout(G, k=…, pos=…, fixed=…, iterations=…, threshold=…, weight=…, scale=…, center=…, dim=…, seed=…)
  • added: variable fruchterman_reingold_layout
  • changed: function view_pygraphviz(G, edgelabel=…, prog=…, args=…, suffix=…, path=…) → function view_pygraphviz(G, edgelabel=…, prog=…, args=…, suffix=…, path=…, show=…)
  • changed: function graphviz_layout(G, prog=…, root=…, **kwds) → function graphviz_layout(G, prog=…, root=…)
  • changed: function pydot_layout(G, prog=…, root=…, **kwds) → function pydot_layout(G, prog=…, root=…)
  • changed: function to_pydot(N, strict=…) → function to_pydot(N)
  • removed: function draw_graphviz(G, prog=…, **kwargs)
  • changed: function draw(G, pos=…, ax=…, hold=…, **kwds) → function draw(G, pos=…, ax=…, **kwds)
  • changed: function draw_networkx_edge_labels(G, pos, edge_labels=…, label_pos=…, font_size=…, font_color=…, font_family=…, font_weight=…, alpha=…, bbox=…, ax=…, rotate=…, **kwds) → function draw_networkx_edge_labels(G, pos, edge_labels=…, label_pos=…, font_size=…, font_color=…, font_family=…, font_weight=…, alpha=…, bbox=…, horizontalalignment=…, verticalalignment=…, ax=…, rotate=…, clip_on=…)
  • changed: function draw_networkx_edges(G, pos, edgelist=…, width=…, edge_color=…, style=…, alpha=…, edge_cmap=…, edge_vmin=…, edge_vmax=…, ax=…, arrows=…, label=…, **kwds) → function draw_networkx_edges(G, pos, edgelist=…, width=…, edge_color=…, style=…, alpha=…, arrowstyle=…, arrowsize=…, edge_cmap=…, edge_vmin=…, edge_vmax=…, ax=…, arrows=…, label=…, node_size=…, nodelist=…, node_shape=…, connectionstyle=…, min_source_margin=…, min_target_margin=…)
  • changed: function draw_networkx_labels(G, pos, labels=…, font_size=…, font_color=…, font_family=…, font_weight=…, alpha=…, bbox=…, ax=…, **kwds) → function draw_networkx_labels(G, pos, labels=…, font_size=…, font_color=…, font_family=…, font_weight=…, alpha=…, bbox=…, horizontalalignment=…, verticalalignment=…, ax=…, clip_on=…)
  • changed: function draw_networkx_nodes(G, pos, nodelist=…, node_size=…, node_color=…, node_shape=…, alpha=…, cmap=…, vmin=…, vmax=…, ax=…, linewidths=…, label=…, **kwds) → function draw_networkx_nodes(G, pos, nodelist=…, node_size=…, node_color=…, node_shape=…, alpha=…, cmap=…, vmin=…, vmax=…, ax=…, linewidths=…, edgecolors=…, label=…, margins=…)
  • changed: function draw_shell(G, **kwargs) → function draw_shell(G, nlist=…, **kwargs)
  • added: function draw_kamada_kawai(G, **kwargs)
  • added: function draw_planar(G, **kwargs)
  • added: class AmbiguousSolution(NetworkXException)
  • added: class ExceededMaxIterations(NetworkXException)
  • added: class HasACycle(NetworkXException)
  • added: class NodeNotFound(NetworkXException)
  • added: class PowerIterationFailedConvergence(ExceededMaxIterations)
  • added: constructor PowerIterationFailedConvergence(num_iterations, *args, **kw)
  • added: function graph_atlas(i)
  • removed: function grid_2d_graph(m, n, periodic=…, create_using=…)
  • removed: function grid_graph(dim, periodic=…)
  • removed: function hypercube_graph(n)
  • changed: function complete_multipartite_graph(*block_sizes) → function complete_multipartite_graph(*subset_sizes)
  • changed: function empty_graph(n=…, create_using=…) → function empty_graph(n=…, create_using=…, default=…)
  • added: function binomial_tree(n, create_using=…)
  • added: function turan_graph(n, r)
  • added: function random_cograph(n, seed=…)
  • added: function LFR_benchmark_graph(n, tau1, tau2, mu, average_degree=…, min_degree=…, max_degree=…, min_community=…, max_community=…, tol=…, max_iters=…, seed=…)
  • added: function ring_of_cliques(num_cliques, clique_size)
  • added: function stochastic_block_model(sizes, p, nodelist=…, seed=…, directed=…, selfloops=…, sparse=…)
  • added: function windmill_graph(n, k)
  • changed: function scale_free_graph(n, alpha=…, beta=…, gamma=…, delta_in=…, delta_out=…, create_using=…, seed=…) → function scale_free_graph(n, alpha=…, beta=…, gamma=…, delta_in=…, delta_out=…, create_using=…, seed=…, initial_graph=…)
  • added: function random_k_out_graph(n, k, alpha, self_loops=…, seed=…)
  • added: function duplication_divergence_graph(n, p, seed=…)
  • added: function partial_duplication_graph(N, n, p, q, seed=…)
  • added: function paley_graph(p, create_using=…)
  • changed: function geographical_threshold_graph(n, theta, alpha=…, dim=…, pos=…, weight=…) → function geographical_threshold_graph(n, theta, dim=…, pos=…, weight=…, metric=…, p_dist=…, seed=…)
  • changed: function random_geometric_graph(n, radius, dim=…, pos=…) → function random_geometric_graph(n, radius, dim=…, pos=…, p=…, seed=…)
  • changed: function waxman_graph(n, alpha=…, beta=…, L=…, domain=…) → function waxman_graph(n, beta=…, alpha=…, L=…, domain=…, metric=…, seed=…)
  • added: function geometric_edges(G, radius, p=…)
  • added: function soft_random_geometric_graph(n, radius, dim=…, pos=…, p=…, p_dist=…, seed=…)
  • added: function thresholded_random_geometric_graph(n, radius, theta, dim=…, pos=…, weight=…, p=…, seed=…)
  • added: function hkn_harary_graph(k, n, create_using=…)
  • added: function hnm_harary_graph(n, m, create_using=…)
  • added: function random_internet_as_graph(n, seed=…)
  • changed: function general_random_intersection_graph(n, m, p) → function general_random_intersection_graph(n, m, p, seed=…)
  • changed: function k_random_intersection_graph(n, m, k) → function k_random_intersection_graph(n, m, k, seed=…)
  • added: function interval_graph(intervals)
  • added: function directed_joint_degree_graph(in_degrees, out_degrees, nkk, seed=…)
  • added: function is_valid_directed_joint_degree(in_degrees, out_degrees, nkk)
  • added: function is_valid_joint_degree(joint_degrees)
  • added: function joint_degree_graph(joint_degrees, seed=…)
  • added: function grid_2d_graph(m, n, periodic=…, create_using=…)
  • added: function grid_graph(dim, periodic=…)
  • added: function hexagonal_lattice_graph(m, n, periodic=…, with_positions=…, create_using=…)
  • added: function hypercube_graph(n)
  • added: function triangular_lattice_graph(m, n, periodic=…, with_positions=…, create_using=…)
  • added: function inverse_line_graph(G)
  • added: function mycielski_graph(n)
  • added: function mycielskian(G, iterations=…)
  • removed: function duplication_divergence_graph(n, p, seed=…)
  • changed: function barabasi_albert_graph(n, m, seed=…) → function barabasi_albert_graph(n, m, seed=…, initial_graph=…)
  • added: function dual_barabasi_albert_graph(n, m1, m2, p, seed=…, initial_graph=…)
  • added: function extended_barabasi_albert_graph(n, m, p, q, seed=…)
  • added: function random_kernel_graph(n, kernel_integral, kernel_root=…, seed=…)
  • added: function hoffman_singleton_graph()
  • added: function les_miserables_graph()
  • added: function spectral_graph_forge(G, alpha, transformation=…, seed=…)
  • added: function sudoku_graph(n=…)
  • added: function prefix_tree(paths)
  • added: function prefix_tree_recursive(paths)
  • added: function random_tree(n, seed=…, create_using=…)
  • added: function triad_graph(triad_name)
  • added: function _lazy_import(fullname)
  • added: function attach(module_name, submodules=…, submod_attrs=…)
  • removed: export networkx
  • added: export attrmatrix
  • added: export bethehessianmatrix
  • added: export graphmatrix
  • added: export laplacianmatrix
  • added: export modularitymatrix
  • added: export spectrum
  • added: function algebraic_connectivity(G, weight=…, normalized=…, tol=…, method=…, seed=…)
  • added: function fiedler_vector(G, weight=…, normalized=…, tol=…, method=…, seed=…)
  • added: function spectral_ordering(G, weight=…, normalized=…, tol=…, method=…, seed=…)
  • added: function bethe_hessian_matrix(G, r=…, nodelist=…)
  • changed: function adjacency_matrix(G, nodelist=…, weight=…) → function adjacency_matrix(G, nodelist=…, dtype=…, weight=…)
  • added: function directed_combinatorial_laplacian_matrix(G, nodelist=…, weight=…, walk_type=…, alpha=…)
  • added: function total_spanning_tree_weight(G, weight=…)
  • changed: function directed_modularity_matrix(G, nodelist=…) → function directed_modularity_matrix(G, nodelist=…, weight=…)
  • changed: function modularity_matrix(G, nodelist=…) → function modularity_matrix(G, nodelist=…, weight=…)
  • added: function bethe_hessian_spectrum(G, r=…)
  • added: function normalized_laplacian_spectrum(G, weight=…)
  • removed: function generate_graph6(G, nodes=…, header=…)
  • removed: function parse_graph6(string)
  • added: function from_graph6_bytes(bytes_in)
  • added: function to_graph6_bytes(G, nodes=…, header=…)
  • removed: function write_graphml(G, path, encoding=…, prettyprint=…)
  • changed: constructor GraphMLReader(node_type=…) → constructor GraphMLReader(node_type=…, edge_key_type=…, force_multigraph=…)
  • changed: constructor GraphMLWriter(graph=…, encoding=…, prettyprint=…) → constructor GraphMLWriter(graph=…, encoding=…, prettyprint=…, infer_numeric_types=…, named_key_ids=…, edge_id_from_attribute=…)
  • changed: function generate_graphml(G, encoding=…, prettyprint=…) → function generate_graphml(G, encoding=…, prettyprint=…, named_key_ids=…, edge_id_from_attribute=…)
  • changed: function parse_graphml(graphml_string, node_type=…) → function parse_graphml(graphml_string, node_type=…, edge_key_type=…, force_multigraph=…)
  • changed: function read_graphml(path, node_type=…) → function read_graphml(path, node_type=…, edge_key_type=…, force_multigraph=…)
  • changed: method GraphMLReader.add_node(G, node_xml, graphml_keys) → method GraphMLReader.add_node(G, node_xml, graphml_keys, defaults)
  • changed: method GraphMLReader.make_graph(graph_xml, graphml_keys, defaults) → method GraphMLReader.make_graph(graph_xml, graphml_keys, defaults, G=…)
  • added: function write_graphml_lxml(G, path, encoding=…, prettyprint=…, infer_numeric_types=…, named_key_ids=…, edge_id_from_attribute=…)
  • added: function write_graphml_xml(G, path, encoding=…, prettyprint=…, infer_numeric_types=…, named_key_ids=…, edge_id_from_attribute=…)
  • added: method GraphMLWriter.attr_type(name, scope, value)
  • added: variable write_graphml
  • added: function cytoscape_data(G, attrs=…, name=…, ident=…)
  • added: function cytoscape_graph(data, attrs=…, name=…, ident=…)
  • added: function jit_data(G, indent=…, default=…)
  • added: function jit_graph(data, create_using=…)
  • changed: function node_link_data(G, attrs=…) → function node_link_data(G, attrs=…, *, source=…, target=…, name=…, key=…, link=…)
  • changed: function node_link_graph(data, directed=…, multigraph=…, attrs=…) → function node_link_graph(data, directed=…, multigraph=…, attrs=…, *, source=…, target=…, name=…, key=…, link=…)
  • changed: function tree_data(G, root, attrs=…) → function tree_data(G, root, attrs=…, ident=…, children=…)
  • changed: function tree_graph(data, attrs=…) → function tree_graph(data, attrs=…, ident=…, children=…)
  • changed: function read_shp(path, simplify=…) → function read_shp(path, simplify=…, geom_attrs=…, strict=…)
  • removed: function read_yaml(path)
  • removed: function write_yaml(G, path, encoding=…, **kwds)
  • removed: function generate_sparse6(G, nodes=…, header=…)
  • removed: function parse_sparse6(string)
  • added: function from_sparse6_bytes(string)
  • added: function to_sparse6_bytes(G, nodes=…, header=…)
  • added: function forest_str(graph, with_labels=…, sources=…, write=…, ascii_only=…)
  • removed: function get_info(dynamic=…)
  • removed: function get_revision()
  • removed: function write_versionfile()
  • removed: variable authors
  • removed: variable basedir
  • removed: variable classifiers
  • removed: variable date
  • removed: variable date_info
  • removed: variable description
  • removed: variable dev
  • removed: variable download_url
  • removed: variable keywords
  • removed: variable license
  • removed: variable long_description
  • removed: variable maintainer
  • removed: variable maintainer_email
  • removed: variable major
  • removed: variable minor
  • removed: variable name
  • removed: variable platforms
  • removed: variable url
  • removed: variable vcs_info
  • removed: variable version
  • removed: variable version_info
  • added: class argmap
  • added: constructor argmap(func, *args, try_finally=…)
  • added: field argmap.Signature
  • added: function nodes_or_number(which_args)
  • added: function np_random_state(random_state_argument)
  • added: function preserve_random_state(func)
  • added: function py_random_state(random_state_argument)
  • added: function random_state(random_state_argument)
  • added: method argmap.assemble(f)
  • added: method argmap.compile(f)
  • added: static method argmap.signature(f)
  • changed: class MinHeap(object) → class MinHeap
  • added: class MappedQueue
  • added: constructor MappedQueue(data=…)
  • added: method MappedQueue.pop()
  • added: method MappedQueue.push(elt, priority=…)
  • added: method MappedQueue.remove(elt)
  • added: method MappedQueue.update(elt, new, priority=…)
  • removed: function accumulate(iterable, func=…)
  • removed: variable PY2
  • added: class PythonRandomInterface
  • added: constructor PythonRandomInterface(rng=…)
  • added: function arbitrary_element(iterable)
  • added: function consume(iterator)
  • added: function create_py_random_state(random_state=…)
  • added: function create_random_state(random_state=…)
  • added: function edges_equal(edges1, edges2)
  • added: function empty_generator()
  • added: function graphs_equal(graph1, graph2)
  • added: function groups(many_to_one)
  • added: function is_iterator(obj)
  • added: function make_list_of_ints(sequence)
  • added: function nodes_equal(nodes1, nodes2)
  • added: function pairwise(iterable, cyclic=…)
  • added: function to_tuple(x)
  • added: method PythonRandomInterface.choice(seq)
  • added: method PythonRandomInterface.expovariate(scale)
  • added: method PythonRandomInterface.gauss(mu, sigma)
  • added: method PythonRandomInterface.paretovariate(shape)
  • added: method PythonRandomInterface.randint(a, b)
  • added: method PythonRandomInterface.random()
  • added: method PythonRandomInterface.randrange(a, b=…)
  • added: method PythonRandomInterface.sample(seq, k)
  • added: method PythonRandomInterface.shuffle(seq)
  • added: method PythonRandomInterface.uniform(a, b)
  • removed: function create_degree_sequence(n, sfunction=…, max_tries=…, **kwds)
  • removed: function pareto_sequence(n, exponent=…)
  • removed: function uniform_sequence(n)
  • removed: function zipf_sequence(n, alpha=…, xmin=…)
  • changed: function discrete_sequence(n, distribution=…, cdistribution=…) → function discrete_sequence(n, distribution=…, cdistribution=…, seed=…)
  • changed: function powerlaw_sequence(n, exponent=…) → function powerlaw_sequence(n, exponent=…, seed=…)
  • changed: function random_weighted_sample(mapping, k) → function random_weighted_sample(mapping, k, seed=…)
  • changed: function weighted_choice(mapping) → function weighted_choice(mapping, seed=…)
  • changed: constructor UnionFind() → constructor UnionFind(elements=…)
  • added: method UnionFind.to_sets()
  • removed: variable date
  • removed: variable date_info
  • removed: variable dev
  • removed: variable vcs_info
  • removed: variable version
  • removed: variable version_info