NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

Overview

NetworkX

https://github.com/networkx/networkx/workflows/test/badge.svg?branch=main https://img.shields.io/github/labels/networkx/networkx/Good%20First%20Issue?color=green&label=Contribute%20&style=flat-square

NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

Simple example

Find the shortest path between two nodes in an undirected graph:

>>> import networkx as nx
>>> G = nx.Graph()
>>> G.add_edge('A', 'B', weight=4)
>>> G.add_edge('B', 'D', weight=2)
>>> G.add_edge('A', 'C', weight=3)
>>> G.add_edge('C', 'D', weight=4)
>>> nx.shortest_path(G, 'A', 'D', weight='weight')
['A', 'B', 'D']

Install

Install the latest version of NetworkX:

$ pip install networkx

Install with all optional dependencies:

$ pip install networkx[all]

For additional details, please see INSTALL.rst.

Bugs

Please report any bugs that you find here. Or, even better, fork the repository on GitHub and create a pull request (PR). We welcome all changes, big or small, and we will help you make the PR if you are new to git (just ask on the issue and/or see CONTRIBUTING.rst).

License

Released under the 3-Clause BSD license (see LICENSE.txt):

Copyright (C) 2004-2021 NetworkX Developers
Aric Hagberg 
Dan Schult 
Pieter Swart 
Comments
  • Preliminary VF2++ Implementation

    Preliminary VF2++ Implementation

    The workspace for the VF2++ implementation. This PR only exists so people can take a look at our work, provide feedback and discuss about the implementation. It is only a draft and is not meant to be merged yet.

    The related milestone and issues can be found here

    opened by kpetridis24 73
  • GSoC 2015 mentors and project ideas

    GSoC 2015 mentors and project ideas

    @hagberg @chebee7i @dschult @bjedwards and anyone who is interested

    To participate in GSoC under the PSF's banner, it is necessary to have three mentors signed up for the whole summer (May 25 through Aug 24). The GSoC FAQ suggests a five-hour per student per week estimate for the necessary time investment. So if we get three or four mentors on board, we can then have one or two projects. Please let me know if you can serve as mentors. Beyond project collaborators, I also hope that other contributors can lend a hand.

    For project ideas, I find it mandatory to include the 2.0 API (#1246, #1336). It is arguably one of them blocker issues for 2.0. One possible project plan is to

    1. fully define the API;
    2. design a feasible implementation model (code complexity & performance expectation);
    3. implement it (code + functional & performance tests);
    4. compare with the old API (project write-up).

    If this goes well, we can take the opportunity to eliminate the _iter methods and possibly the separate edges, adjacency, etc. functions altogether. Given its complexity, this sounds quite intense for a 12-week 40-hour-per-week commitment. If there is concern that this may not fit within 12 weeks, we can limit the scope so that it fits.

    A second project idea that I can think of is an add-on/optional component system, which was discussed in #1167 and saw renewed interest in #1325. The possible project plan is similar to the one above (define, design and implement). One or two working add-ons should be included to demonstrate the system.

    I have some other minor ideas (e.g., Cythonization upon installation, additional graph algorithms). Please let me know any ideas that you may have.

    GSoC 
    opened by ysitu 69
  • Refactor flow package.

    Refactor flow package.

    This refactoring follows from the discussion at #1096 and #1095. It is fully backwards compatible. The main changes are:

    1. Rename max_flow and min_cut to maximum_flow and minimum_cut to be consistent with NetworkX naming convention. The short names can still be used (eg nx.max_flow(...)) but are not in the documentation.
    2. maximum_flow and minimum_cut accept a new parameter flow_func for the function that will perform the computation. A default_flow_func is set, which is preflow_push_value, based on the benckmarks by @ysitu at #1099.
    3. The legacy implementation of ford_fulkerson and firends is separated in its own file and refactored for it to follow the new conventions in the function names, the implementation is the same.
    4. Added a new function that return the residual network for each algorithm implementation. Also added docstrings explaining the conventions used in the residual network.
    5. Refactored tests. Now it is easy to add a new maximum flow algorithm for testing. They take maybe a bit too long, but now we test all flow related functions.
    6. The functions <algo_name>_{value|flow|residual} are not imported to NetworkX base namespace, it is necessary now to explicitly import them from networkx.algorithms.flow, the exception is ford_fulkerson_flow for backwards compatibility.
    7. The maximum flow related functions imported in networkx namespace are: maximum_flow, minimum_cut, ford_fulkerson, preflow_push, shortest_augmenting_path. For convenience max_flow and min_cut are also imported. And for backwards compatibility: ford_fulkerson_flow and ford_fulkerson_flow_and_auxiliary.
    opened by jtorrents 57
  • Removal of degree()

    Removal of degree()

    degree() returns a dictionary with nodes as keys and degree as values or a number if a single node is specified and degree_iter() returns a two-tuples iterator of (node, degree). What should the new degree() function in 2.0 return? IMO we should go with the current two-tuples iterator of (node, degree).

    opened by MridulS 56
  • adds implementation of SNAP summarization algorithm

    adds implementation of SNAP summarization algorithm

    An implementation of the SNAP graph summarization algorithm from Efficient Aggregation for Graph Summarization.

    This algorithm creates a summary graph of supernodes, where supernodes represent sets of nodes that have the same attributes and edges with nodes in the same supernodes in the summary graph.

    Enhancement 
    opened by dpfens 55
  • alternative mincost maxflow implementation (migrated from Trac #406)

    alternative mincost maxflow implementation (migrated from Trac #406)

    Original ticket https://networkx.lanl.gov/trac/ticket/406 Reported 2010-08-23 by @mfrasca, assigned to @loicseguin.

    some time ago I opened ticket #291, and in that framework I had been asked to attach my implementation. never came so far, because I never managed to log into this system again... well, now it's a lot too late, and there is a good looking implementation attached to the ticket and committed in the library, but I managed to log in and I am still very much interested in reading your comments about my solution. I looked at the one attached to #291 and I can follow mine better, but I assume readability is not the main criterium for choosing an implementation. here it comes! thanks for your time!

    Enhancement 
    opened by networkx-trac 53
  • Make topological_sort stable when the graph exploration order is specified.

    Make topological_sort stable when the graph exploration order is specified.

    Fix topological_sort so that it is stable if "nbunch" — the graph exploration order — is provided. This is done by using nbunch both when exploring top-level nodes and when recursing.

    opened by NeilGirdhar 50
  • Shortest path algorithms with restrictions

    Shortest path algorithms with restrictions

    Many interesting algorithms e.g. Yen's k-shortest simple paths, White's node-independent paths require a procedure for finding shortest path with restrictions:

    • ignore a subset of graph nodes
    • ignore certain graph edges

    It is proposed to introduce optional ignore_nodes and ignore_edges parameters for all shortest path procedures.

    Here is the initial version (only supporting shortest_path, unweighted case).

    Enhancement 
    opened by aparamon 47
  • Update/discussion of design specification for NX 2.0

    Update/discussion of design specification for NX 2.0

    As suggested in https://github.com/networkx/networkx/pull/1344 , I think we should update/further discuss the design specification accordingly. @hagberg @dschult @chebee7i

    Enhancement GSoC 
    opened by MridulS 43
  • Algebraic connectivity, Fiedler vector and spectral ordering

    Algebraic connectivity, Fiedler vector and spectral ordering

    This addresses #1123.

    This basically involves finding the second smallest eigenvalue and its eigenvector of the Laplacian matrix of a graph. Supposedly, this should be handled by SciPy, but I included an one extra algorithm so that for each of my eight test problems, at least one algorithm solves it within 10 seconds.

    Algorithms

    To be clear up front, NumPy alone or anything based on dense matrices will not do the job as it will become a memory bomb when used on large graphs. SciPy provides two sparse solvers eigsh and lobpcg. eigsh is the implicitly restarted Lanczos iteration from ARPACK. lobpcg stands for "locally optimal block preconditioned conjugate gradient". I know about the "PCG" part but not the "LOB" part.

    The algorithm not from SciPy is TraceMin. I am using a version specifically designed for finding Fiedler vectors. TraceMin relies on a linear system solver. PCG is an obvious options. But personally I prefer sparse direct solvers as they are robust, and their comfort zone well covers the graph sizes within NetworkX's reach. SciPy bundles SuperLU as splu. There are better options, but they are shut out by licensing issues—UMFPACK, CHOLMOD and PARDISO all fall into this category.

    Benchmarking

    Long-n (n = 32768, m = 63472, weighted)
    ----------------------------------------------------------------------
    eigsh               (did not converge) 2191.91
    lobpcg              0.0302404279791517   38.62
    TraceMin_pcg        0.0302404277402188   49.09
    TraceMin_chol       0.0302404277401874    0.95   (Cholesky      0.058)
    TraceMin_lu         0.0302404277402692    1.11   (LU            0.145)
    
    Random4-n (n = 32768, m = 131056, weighted)
    ----------------------------------------------------------------------
    eigsh                 3900.84878990967   29.43
    lobpcg                3900.84878990965    4.03
    TraceMin_pcg          3900.84878997654   26.30
    TraceMin_chol         3900.84878997652   76.62   (Cholesky     21.657)
    TraceMin_lu           3900.84878997653  819.56   (LU          615.625)
    
    Square-n (n = 32761, m = 65160, weighted)
    ----------------------------------------------------------------------
    eigsh                 3.88833036807499  680.97
    lobpcg                3.88833036795032  253.81
    TraceMin_pcg          3.88833036815728   49.98
    TraceMin_chol         3.88833036815718    1.62   (Cholesky      0.097)
    TraceMin_lu           3.88833036815734    1.92   (LU            0.249)
    
    ak6 (n = 32774, m = 49159)
    ----------------------------------------------------------------------
    eigsh               (did not converge) 1826.40
    lobpcg            5.70035769998342e-08  102.51
    TraceMin_pcg      5.72572519105717e-08   80.71
    TraceMin_chol     5.72572519439957e-08    0.62   (Cholesky      0.014)
    TraceMin_lu       5.72572486979079e-08    0.70   (LU            0.095)
    
    gl6 (n = 32786, m = 93145)
    ----------------------------------------------------------------------
    eigsh              0.00026223266873431   94.72
    lobpcg            0.000262232668724498    4.54
    TraceMin_pcg      0.000262232668735754    5.78
    TraceMin_chol     0.000262232668735774    1.55   (Cholesky      0.283)
    TraceMin_lu       0.000262232668735766    3.06   (LU            1.637)
    
    gw6 (n = 32768, m = 93184)
    ----------------------------------------------------------------------
    eigsh                0.152240934977433    1.16
    lobpcg               0.152240934977427    2.60
    TraceMin_pcg         0.152240934977428    2.56
    TraceMin_chol        0.152240934977426   11.75   (Cholesky      7.699)
    TraceMin_lu          0.152240934977426  345.57   (LU          331.141)
    
    netgen-6 (n = 8000, m = 14999, weighted)
    ----------------------------------------------------------------------
    eigsh                 74.0188255406067    4.29
    lobpcg                74.0188255406006    0.73
    TraceMin_pcg          74.0188255457315    1.28
    TraceMin_chol         74.0188255457307    0.55   (Cholesky      0.126)
    TraceMin_lu           74.0188255457307    1.93   (LU            1.299)
    
    wlm6 (n = 8194, m = 179238)
    ----------------------------------------------------------------------
    eigsh              0.00829854600893233   13.50
    lobpcg             0.00829854600893219    2.75
    TraceMin_pcg       0.00829854600893260    2.92
    TraceMin_chol      0.00829854600893253    1.41   (Cholesky      0.089)
    TraceMin_lu        0.00829854600893275    1.73   (LU            0.344)
    

    The second column in the computed eigenvalue, and the third column is the time in seconds. The numbers in brackets are the Cholesky/LU factorization times. Cholesky factorization relies on the GPL scikits.sparse wrapper for CHOLMOD. For this reason, the related code is not in this PR. I suppose that scikits.sparse can be stripped down to use only the LGPL portion of CHOLMOD and become LGPL itself, but I am not familiar with Cython to do the work.

    From the data, it is evident that eigsh is not nearly as robust as the rest, although it can be fast at times. lobpcg and TraceMin_chol/lu both have good and bad cases, while TraceMin_pcg sits somewhere between the two. It should be noted that for lobpcg and TraceMin_pcg, I am using only Jacobi preconditioning. (In separate tests, passing the Cholesky factorization as the preconditioner to lobpcg improves its bad cases by at least an order magnitude but produces incorrect results in one case.) lobpcg is very sensitive to the initial guess and can fail to converge if it is not good enough. I produce an estimate of the Fiedler vector using the reverse Cuthill–McKee ordering. The same estimate does not seem to help TraceMin.

    The effectiveness of Cholesky/LU factorization highly depends on the structure of the matrix and the matrix reordering algorithm. For example, both gl6 and gw6 are three-dimensional grid graphs. gw6 has a larger bisection width and thus requires long time to factorize. The METIS library used by CHOLMOD is much more effective in discovering small bisections than the multiple minimum degree algorithm used by SuperLU. As a result, CHOLMOD is more than 40 times faster in factorizing gw6. (As a separate issue, it may be of interest to some users if NetworkX includes graph ordering and partitioning functionalities.)

    opened by ysitu 42
  • matrix graphs

    matrix graphs

    Dear all,

    As a side note, when I talk about a graph here I mean Graph, DiGraph, MultiGraph and MultiDiGraph.

    I want to start a discussion here about the use for dense and sparse matrix based graph classes. The reasoning for that is recent work by @FedericoV on directed clustering and my own need for a sparse matrix representation. So far the linear algebra based functions each convert a graph instance into a desired matrix. Chances are high, though, that if I want to work with one of those functions, I will use others as well and it'd be more convenient/consistent to have one matrix based graph to pass to each of them.

    We've talked about designing different specialized graph classes in #980 and I would like design dense and sparse matrix based graph families. Using numpy and scipy seems obvious here since we can leverage, for example, the csgraph and we can also have a look at APGL (although I think not all of its code is correct). My goal would be to have classes that feel almost like the normal classes and matrix based functions that follow the same naming convention and, hopefully, parameters, as the in the standard networkx package.

    My main question is whether these classes should live inside networkx, be an off-shoot like the scikits-... or an entirely separate package.

    Cheers

    opened by Midnighter 42
  • nx.DiGraph.to_undirected() not working as expected for bidirectional edges when using as_view = True

    nx.DiGraph.to_undirected() not working as expected for bidirectional edges when using as_view = True

    Problem: When using to_undirected() on a DiGraph the properties are inconsistent, i.e., differ depending on if as_view was set to True or False. More precisely, the reported degree is not as expected when using as_view = True. I guess this might also have an effect on other properties that depend on degree.

    Current Behavior

    The node degree of the undirected graph returned by to_undirected() is different depending on if as_view was set to True or False. If the directed graph had bidirectional edges, the degree is off by approx. a factor of 2 in the graph view. Everything works as expected if as_view is set to false.

    Expected Behavior

    G.to_undirected(as_view = False).degree() and G.to_undirected(as_view = True).degree() should behave the same.

    Steps to Reproduce

    import networkx as nx
    import sys
    
    print(sys.version) # 3.10.8 | packaged by conda-forge | (main, Nov 24 2022, 14:07:00) [MSC v.1916 64 bit (AMD64)]
    print(nx.__version__) # 2.8.8
    
    G = nx.DiGraph()
    G.add_nodes_from(["v0","v1","v2"])
    G.add_edges_from([("v0","v1"),("v1","v0"),("v1","v2")])
    print(G.degree()) # Correct [('v0', 2), ('v1', 3), ('v2', 1)]
    
    G_undir_1 = G.to_undirected(as_view = False)
    print(G_undir_1.degree()) # Correct [('v0', 1), ('v1', 2), ('v2', 1)]
    
    G_undir_2 = G.to_undirected(as_view = True)
    print(G_undir_2.degree()) # Incorrect [('v0', 2), ('v1', 3), ('v2', 1)]
    

    Environment

    Python version: 3.10.8 NetworkX version: 2.8.8

    Additional context

    n/a

    opened by sengels-tum 0
  • Fix typos in the networkx codebase

    Fix typos in the networkx codebase

    I could see some issues related to fixing typos, hence I ran the codespell library over the networkx codebase and could fix various typos. I have personally checked each typo to avoid any false positives.

    opened by faze-geek 2
  • Refactor vf2pp modules and test files

    Refactor vf2pp modules and test files

    This PR puts all the vf2pp modules into a single module, removing the subpackage vf2pp_helpers. For the tests, it forms two test files:

    • tests/test_vf2pp.py tests the public functions for the overall algorithm
    • tests/test_vf2pp_helpers.py tests the private functions used by the public functions

    The test files seemed too big to combine any more than this, but I suspect we can/will reduce their size over time via simplification and more focused unit testing.

    Other items I changed for better white-space handling:

    • switched from itertools.cycle to it.cycle by changing the import
    • changed the name labels_different to labels_many

    I will adjust #6230 based on this new refactoring. I consider that as a separate issue and PR -- certainly harder to review. Thoughts?

    opened by dschult 0
  • Improve test coverage for  reportviews class

    Improve test coverage for reportviews class

    I discovered that reportviews has 93 percent code coverage at https://app.codecov.io/gh/networkx/networkx/blob/main/networkx/classes/reportviews.py I will like to work on it.

    Current Behavior We don't test all the paths the code can take us.

    Expected Behavior We should be testing everything so there aren't any surprises.

    Steps to Reproduce https://app.codecov.io/gh/networkx/networkx/blob/main/networkx/classes/reportviews.py

    opened by tinaoberoi 0
  • Tracking issue - linting/code quality using Ruff

    Tracking issue - linting/code quality using Ruff

    This is a tracking issue for the introduction of code quality linting to this repo. Linting can provide the following benefits

    • correctness - identify bugs, dead code, inconsistencies, performance issues, antipatterns in code
    • consistency - promote a consistent code style to improve readability

    I propose an incremental approach where lints are added one at a time, and only where they add clear value.

    I propose using ruff. The alternative would be to use flake8. Compared to flake8, ruff

    • is faster (by a couple of orders of magnitude)
    • can automatically fix code in many cases
    • has no dependencies

    Ruff is particularly suited for use as a pre-commit hook, due to its speed.

    see-

    • #6321
    • #6319
    • #6320
    • #6315
    • #6317
    opened by danieleades 2
Releases(networkx-3.0rc1)
  • networkx-3.0rc1(Nov 11, 2022)

    What's Changed

    • Add characteristic polynomial example to polynomials docs by @lucasmccabe in https://github.com/networkx/networkx/pull/5730
    • Remove deprecated function is_string_like by @MridulS in https://github.com/networkx/networkx/pull/5738
    • Remove deprecated function make_str by @MridulS in https://github.com/networkx/networkx/pull/5739
    • Remove unused 'name' parameter from /operators/binary.py by @z3y50n in https://github.com/networkx/networkx/pull/5741
    • Remove deprecated function is_iterator by @MridulS in https://github.com/networkx/networkx/pull/5740
    • remove euclidean from geometric.py by @z3y50n in https://github.com/networkx/networkx/pull/5744
    • Remove deprecated function utils.consume by @MridulS in https://github.com/networkx/networkx/pull/5745
    • Rm to_numpy_recarray by @rossbar in https://github.com/networkx/networkx/pull/5737
    • Remove deprecated function utils.empty_generator by @MridulS in https://github.com/networkx/networkx/pull/5748
    • Rm jit.py by @dtekinoglu in https://github.com/networkx/networkx/pull/5751
    • Remove deprecated context managers by @MridulS in https://github.com/networkx/networkx/pull/5752
    • Remove deprecated function utils.to_tuple by @MridulS in https://github.com/networkx/networkx/pull/5755
    • Remove deprecated display_pygraphviz by @juanis2112 in https://github.com/networkx/networkx/pull/5754
    • Remove to_numpy_matrix & from_numpy_matrix by @dtekinoglu in https://github.com/networkx/networkx/pull/5746
    • Remove deprecated decorator preserve_random_state by @dschult in https://github.com/networkx/networkx/pull/5768
    • Remove deprecated function is_list_of_ints by @MridulS in https://github.com/networkx/networkx/pull/5743
    • Remove decorator random_state by @dschult in https://github.com/networkx/networkx/pull/5770
    • remove adj_matrix from linalg/graphmatrix.py by @z3y50n in https://github.com/networkx/networkx/pull/5753
    • Remove betweenness_centrality_source by @dtekinoglu in https://github.com/networkx/networkx/pull/5786
    • Remove deprecated simrank_similarity_numpy by @juanis2112 in https://github.com/networkx/networkx/pull/5783
    • remove testing submodule by @mjschwenne in https://github.com/networkx/networkx/pull/5782
    • Change PyDot PendingDeprecation to Deprecation by @dschult in https://github.com/networkx/networkx/pull/5781
    • Remove deprecated numeric_mixing_matrix by @juanis2112 in https://github.com/networkx/networkx/pull/5777
    • Remove deprecated functions make_small_graph and make_small_undirected_graph by @MridulS in https://github.com/networkx/networkx/pull/5761
    • Remove _naive_greedy_modularity_communities by @juanis2112 in https://github.com/networkx/networkx/pull/5760
    • Make chordal_graph_cliques a generator by @juanis2112 in https://github.com/networkx/networkx/pull/5758
    • update cytoscape functions to drop old signature by @dschult in https://github.com/networkx/networkx/pull/5784
    • Remove deprecated functions dict_to_numpy_array2 and dict_to_numpy_array1 by @MridulS in https://github.com/networkx/networkx/pull/5756
    • Remove deprecated function utils.default_opener by @MridulS in https://github.com/networkx/networkx/pull/5747
    • Remove deprecated function iterable by @MridulS in https://github.com/networkx/networkx/pull/5742
    • remove old attr keyword from json_graph/tree by @mjschwenne in https://github.com/networkx/networkx/pull/5785
    • Remove generate_unique_node by @jarrodmillman in https://github.com/networkx/networkx/pull/5780
    • Replace node_classification subpackage with a module by @dschult in https://github.com/networkx/networkx/pull/5774
    • Remove gpickle by @jarrodmillman in https://github.com/networkx/networkx/pull/5773
    • Remove deprecated function extrema_bounding by @MridulS in https://github.com/networkx/networkx/pull/5757
    • Remove coverage and performance from quality by @jarrodmillman in https://github.com/networkx/networkx/pull/5775
    • Update return type of google_matrix to numpy.ndarray by @MridulS in https://github.com/networkx/networkx/pull/5762
    • Remove deprecated k-nearest-neighbors by @juanis2112 in https://github.com/networkx/networkx/pull/5769
    • Remove gdal dependency by @jarrodmillman in https://github.com/networkx/networkx/pull/5766
    • Update return type of attrmatrix by @MridulS in https://github.com/networkx/networkx/pull/5764
    • Remove unused deprecated argument from to_pandas_edgelist by @MridulS in https://github.com/networkx/networkx/pull/5778
    • Updated astar docstring by @lior8 in https://github.com/networkx/networkx/pull/5797
    • Compute is_weakly_connected lazily by @matusvalo in https://github.com/networkx/networkx/pull/5795
    • Compute is_strongly_connected lazily by @matusvalo in https://github.com/networkx/networkx/pull/5793
    • Remove deprecated function edge_betweeness by @juanis2112 in https://github.com/networkx/networkx/pull/5765
    • Remove pyyaml dependency by @jarrodmillman in https://github.com/networkx/networkx/pull/5763
    • Fix typo in bipartite closeness_centrality and thought-o in tests by @dschult in https://github.com/networkx/networkx/pull/5800
    • Test out explicit paths while installing pygraphviz in macOS by @MridulS in https://github.com/networkx/networkx/pull/5805
    • Remove copy methods for Filter* coreviews by @MridulS in https://github.com/networkx/networkx/pull/5776
    • Remove deprecated function nx.info by @MridulS in https://github.com/networkx/networkx/pull/5759
    • Add more comprehensive tests for pydot by @MridulS in https://github.com/networkx/networkx/pull/5792
    • Remove deprecated n_communities argument from greedy_modularity_communities by @MridulS in https://github.com/networkx/networkx/pull/5789
    • Remove deprecated functions hub_matrix and authority_matrix by @MridulS in https://github.com/networkx/networkx/pull/5767
    • Make HITS numpy and scipy private functions by @MridulS in https://github.com/networkx/networkx/pull/5771
    • Pydot layout fix by @shakedbr in https://github.com/networkx/networkx/pull/5809
    • Add random_spanning_tree to documentation by @mjschwenne in https://github.com/networkx/networkx/pull/5810
    • Add examples for the condensation function by @kpetridis24 in https://github.com/networkx/networkx/pull/5452
    • Check that nodes have "pos" attribute in geometric_edges by @rossbar in https://github.com/networkx/networkx/pull/5707
    • Add Triad example plot by @0ddoes in https://github.com/networkx/networkx/pull/5528
    • DAG Layouts Added solving #5124 by @0ddoes in https://github.com/networkx/networkx/pull/5432
    • Make pagerank numpy and scipy private functions by @MridulS in https://github.com/networkx/networkx/pull/5772
    • Implement directed edge swap by @ben-heil in https://github.com/networkx/networkx/pull/5663
    • Temporary fix for failing tests w/ scipy1.9. by @rossbar in https://github.com/networkx/networkx/pull/5816
    • Fix #5817 by @mjschwenne in https://github.com/networkx/networkx/pull/5822
    • Update relabel.py to preserve node order by @SultanOrazbayev in https://github.com/networkx/networkx/pull/5258
    • Update distance parameter description. by @rossbar in https://github.com/networkx/networkx/pull/5819
    • Modify DAG example to show topological layout. by @rossbar in https://github.com/networkx/networkx/pull/5835
    • DOC: Rst syntax update. by @Carreau in https://github.com/networkx/networkx/pull/5837
    • Add keyword argument to nx.ancestors & nx.descendants by @dtekinoglu in https://github.com/networkx/networkx/pull/5802
    • Update precommit linters by @jarrodmillman in https://github.com/networkx/networkx/pull/5839
    • Add warning to nx_agraph about layout nondeterminism. by @rossbar in https://github.com/networkx/networkx/pull/5832
    • remove to/from_scipy_sparse_matrix by @mjschwenne in https://github.com/networkx/networkx/pull/5779
    • Clean up from PR #5779 by @jarrodmillman in https://github.com/networkx/networkx/pull/5841
    • Corona Product by @alifa98 in https://github.com/networkx/networkx/pull/5223
    • Add direct link to github networkx org sponsorship by @MridulS in https://github.com/networkx/networkx/pull/5843
    • added examples to efficiency_measures.py by @Lukong123 in https://github.com/networkx/networkx/pull/5643
    • added examples to regular.py by @Lukong123 in https://github.com/networkx/networkx/pull/5642
    • added examples to degree_alg.py by @Lukong123 in https://github.com/networkx/networkx/pull/5644
    • Add examples to lowest common ancestors algorithms by @dtekinoglu in https://github.com/networkx/networkx/pull/5531
    • Examples for 7 Functions in Triads.py added solving issue #5498 by @0ddoes in https://github.com/networkx/networkx/pull/5522
    • Fix docbuild warnings: is_string_like is removed and identation in corona product by @MridulS in https://github.com/networkx/networkx/pull/5845
    • Use py_random_state to control randomness of random_triad by @MridulS in https://github.com/networkx/networkx/pull/5847
    • Point to the latest URL for the description. by @tom24d in https://github.com/networkx/networkx/pull/5852
    • Remove OrderedGraphs by @jarrodmillman in https://github.com/networkx/networkx/pull/5813
    • Drop NumPy 1.19 by @jarrodmillman in https://github.com/networkx/networkx/pull/5856
    • Correct louvain formula by @z3y50n in https://github.com/networkx/networkx/pull/5713
    • Naive lowest common ancestor implementation by @dtekinoglu in https://github.com/networkx/networkx/pull/5736
    • Speed up unionfind a bit by not adding root node in the path by @MridulS in https://github.com/networkx/networkx/pull/5844
    • Minor doc fixups by @rossbar in https://github.com/networkx/networkx/pull/5868
    • update tests in base class and simple rename in convert.py by @dschult in https://github.com/networkx/networkx/pull/5848
    • Gallery example: Morse code alphabet as a prefix tree by @rossbar in https://github.com/networkx/networkx/pull/5867
    • Move factory attributes to the class instead of instance. by @dschult in https://github.com/networkx/networkx/pull/5850
    • Attempt to reverse slowdown from hasattr needed for cached_property by @dschult in https://github.com/networkx/networkx/pull/5836
    • make lazy_import private and remove its internal use by @dschult in https://github.com/networkx/networkx/pull/5878
    • update all_pairs_lca docstrings by @tanmayaeron in https://github.com/networkx/networkx/pull/5876
    • Improve LCA input validation by @rossbar in https://github.com/networkx/networkx/pull/5877
    • strategy_saturation_largest_first now accepts partial colorings by @gpdwatkins in https://github.com/networkx/networkx/pull/5888
    • Fixed unused root argument in has_bridges by @juanis2112 in https://github.com/networkx/networkx/pull/5846
    • Update docs to include description of the return_seen kwarg by @SultanOrazbayev in https://github.com/networkx/networkx/pull/5891
    • Add cache reset for when G._node is changed by @dschult in https://github.com/networkx/networkx/pull/5894
    • refactor: modifications and additional tests for weighted distance by @lucasmccabe in https://github.com/networkx/networkx/pull/5305
    • Allow classes to relabel nodes -- casting by @dschult in https://github.com/networkx/networkx/pull/5903
    • Update lattice.py by @Geometrein in https://github.com/networkx/networkx/pull/5914
    • docstring updates for union, disjoint_union, and compose by @brocla in https://github.com/networkx/networkx/pull/5892
    • Adds nx.bfs_layers method by @still-n0thing in https://github.com/networkx/networkx/pull/5879
    • Add to about_us.rst by @dschult in https://github.com/networkx/networkx/pull/5919
    • Update precommit hooks by @jarrodmillman in https://github.com/networkx/networkx/pull/5923
    • Remove old Appveyor cruft by @jarrodmillman in https://github.com/networkx/networkx/pull/5924
    • signature change for node_link functions: for issue #5787 by @brocla in https://github.com/networkx/networkx/pull/5899
    • Allow unsortable nodes in approximation.treewidth functions by @dschult in https://github.com/networkx/networkx/pull/5921
    • Fix Louvain_partitions by yielding a copy of the sets in the partition gh-5901 by @dschult in https://github.com/networkx/networkx/pull/5902
    • Replace LCA with naive implementations by @rossbar in https://github.com/networkx/networkx/pull/5883
    • Add function bfs_layers to docs by @dschult in https://github.com/networkx/networkx/pull/5932
    • Bump nodelink args deprecation expiration to v3.2 by @rossbar in https://github.com/networkx/networkx/pull/5933
    • Update mapping logic in relabel_nodes by @rossbar in https://github.com/networkx/networkx/pull/5912
    • Propose to make new node_link arguments keyword only. by @rossbar in https://github.com/networkx/networkx/pull/5928
    • docstring update to lexicographical_topological_sort issue 5681 by @brocla in https://github.com/networkx/networkx/pull/5930
    • Update pygraphviz by @jarrodmillman in https://github.com/networkx/networkx/pull/5934
    • Support matplotlb 3.6rc1 by @jarrodmillman in https://github.com/networkx/networkx/pull/5937
    • Further improvements to strategy_saturation_largest_first by @gpdwatkins in https://github.com/networkx/networkx/pull/5935
    • Arf layout by @cvanelteren in https://github.com/networkx/networkx/pull/5910
    • [ENH] Find and verify a minimal D-separating set in DAG by @adam2392 in https://github.com/networkx/networkx/pull/5898
    • Add Mehlhorn Steiner approximations by @GuyAglionby in https://github.com/networkx/networkx/pull/5629
    • Updated networkx/classes/function.py . Solves Issue #5463 by @0ddoes in https://github.com/networkx/networkx/pull/5474
    • Improved documentation for all_simple_paths by @pmlpm1986 in https://github.com/networkx/networkx/pull/5944
    • Improve is_path by @pmlpm1986 in https://github.com/networkx/networkx/pull/5943
    • Preliminary VF2++ Implementation by @kpetridis24 in https://github.com/networkx/networkx/pull/5788
    • Minor docstring touchups and test refactor for is_path by @rossbar in https://github.com/networkx/networkx/pull/5967
    • Update documentation header links for latest pydata-sphinx-theme by @rossbar in https://github.com/networkx/networkx/pull/5966
    • Switch to relative import for vf2pp_helpers. by @rossbar in https://github.com/networkx/networkx/pull/5973
    • Add vf2pp_helpers subpackage to wheel by @rossbar in https://github.com/networkx/networkx/pull/5975
    • Enhance biconnected components to avoid indexing by @mturnansky in https://github.com/networkx/networkx/pull/5974
    • Update mentored projects list by @rossbar in https://github.com/networkx/networkx/pull/5985
    • Add concurrency hook to cancel jobs on new push. by @rossbar in https://github.com/networkx/networkx/pull/5986
    • Make all.py generator friendly by @ddelange in https://github.com/networkx/networkx/pull/5984
    • Fix failing example due to mpl 3.6 colorbar. by @rossbar in https://github.com/networkx/networkx/pull/5994
    • Only run scheduled pytest-randomly job in main repo. by @rossbar in https://github.com/networkx/networkx/pull/5993
    • Fix steiner tree test by @GuyAglionby in https://github.com/networkx/networkx/pull/5999
    • Add Tidelift security vulnerability link by @dschult in https://github.com/networkx/networkx/pull/6001
    • Update linters by @jarrodmillman in https://github.com/networkx/networkx/pull/6006
    • Update doc requirements by @jarrodmillman in https://github.com/networkx/networkx/pull/6008
    • VF2++ for Directed Graphs by @kpetridis24 in https://github.com/networkx/networkx/pull/5972
    • Bugfix /docfix for MappedQueue, issue 5681 by @brocla in https://github.com/networkx/networkx/pull/5939
    • Fix warnings from running tests in randomized order by @rossbar in https://github.com/networkx/networkx/pull/6014
    • Update pydata-sphinx-theme by @jarrodmillman in https://github.com/networkx/networkx/pull/6012
    • update secutiry link to tidelift by @dschult in https://github.com/networkx/networkx/pull/6019
    • Update numpydoc by @jarrodmillman in https://github.com/networkx/networkx/pull/6022
    • Support Python 3.11 by @jarrodmillman in https://github.com/networkx/networkx/pull/6023
    • Update linters by @jarrodmillman in https://github.com/networkx/networkx/pull/6024
    • Fixed test for average shortest path in the case of directed graphs by @vigna in https://github.com/networkx/networkx/pull/6003
    • Minor updates to expanders generator tests by @rossbar in https://github.com/networkx/networkx/pull/6027
    • Update deprecations by @jarrodmillman in https://github.com/networkx/networkx/pull/6031
    • Use scipy.sparse array datastructure by @jarrodmillman in https://github.com/networkx/networkx/pull/6037
    • Add missing asserts to tests by @DiamondJoseph in https://github.com/networkx/networkx/pull/6039
    • Improve test coverage for load centrality by @Qudirah in https://github.com/networkx/networkx/pull/6080
    • Improve test coverage expanders line graph generators solved (PR for issue #6034) by @chimaobi-okite in https://github.com/networkx/networkx/pull/6071
    • issue #6081: allow cutoff functionality for flow functions by @paulitapb in https://github.com/networkx/networkx/pull/6085
    • Update GML parsing/writing to allow empty lists/tuples as node attributes by @rossbar in https://github.com/networkx/networkx/pull/6093
    • Replace .A call with .toarray for sparse array in example. by @rossbar in https://github.com/networkx/networkx/pull/6106
    • Improve test coverage for algorithms/richclub.py by @chimaobi-okite in https://github.com/networkx/networkx/pull/6089
    • Tested boykov_kolmogorov and dinitz with cutoff by @paulitapb in https://github.com/networkx/networkx/pull/6104
    • Improve test coverage for multigraph class by @Qudirah in https://github.com/networkx/networkx/pull/6101
    • Improve test coverage for algorithms in dominating_set.py (PR for issue 6032) by @chimaobi-okite in https://github.com/networkx/networkx/pull/6068
    • Warn on unused visualization kwargs that only apply to FancyArrowPatch edges by @rossbar in https://github.com/networkx/networkx/pull/6098
    • Improve test coverage for graph class by @Qudirah in https://github.com/networkx/networkx/pull/6105
    • Fix weighted MultiDiGraphs in DAG longest path algorithms + add additional tests by @stevenstrickler in https://github.com/networkx/networkx/pull/5988
    • added coverage in generators/tree.py by @paulitapb in https://github.com/networkx/networkx/pull/6082
    • DOC: Specifically branch off main, instead of current branch by @MridulS in https://github.com/networkx/networkx/pull/6127
    • Circular center node layout by @dkgaraujo in https://github.com/networkx/networkx/pull/6114
    • Improve test coverage for multidigraph class by @Qudirah in https://github.com/networkx/networkx/pull/6131
    • Improve test coverage for digraph class by @Qudirah in https://github.com/networkx/networkx/pull/6130
    • Improve test coverage for algorithms in dispersion.py by @Qudirah in https://github.com/networkx/networkx/pull/6100
    • Fix doc inconsistencies related to cutoff in connectivity.py and disjoint_paths.py by @paulitapb in https://github.com/networkx/networkx/pull/6113
    • Remove deprecated maxcardinality parameter from min_weight_matching by @rossbar in https://github.com/networkx/networkx/pull/6146
    • Remove deprecated find_cores by @rossbar in https://github.com/networkx/networkx/pull/6139
    • Remove deprecated project function from bipartite package. by @rossbar in https://github.com/networkx/networkx/pull/6147
    • Test on Python 3.11 by @jarrodmillman in https://github.com/networkx/networkx/pull/6159
    • Improve test coverage in algorithms shortest paths unweighted.py by @chimaobi-okite in https://github.com/networkx/networkx/pull/6121
    • Increased test coverage algorithms/matching.py by @Mjh9122 in https://github.com/networkx/networkx/pull/6095
    • Renamed test functions in test_lowest_common_ancestors by @tindi-plus in https://github.com/networkx/networkx/pull/6110
    • Increase covering coverage by @Mjh9122 in https://github.com/networkx/networkx/pull/6099
    • Add example for fiedler_vector by @paulitapb in https://github.com/networkx/networkx/pull/6155
    • Improve test coverage for cycles.py by @jeftersantiago in https://github.com/networkx/networkx/pull/6152
    • Added an example in all_pairs_node_connectivity by @paulitapb in https://github.com/networkx/networkx/pull/6126
    • Amount of nodes and edges have mistakes when reading adjlist file by @Qudirah in https://github.com/networkx/networkx/pull/6132
    • Update pytest by @jarrodmillman in https://github.com/networkx/networkx/pull/6165
    • Improve test coverage for voterank algorithm by @Qudirah in https://github.com/networkx/networkx/pull/6161
    • plugin based backend infrastructure to use multiple computation backends by @MridulS in https://github.com/networkx/networkx/pull/6000
    • Undocumented parameters in dispersion by @Qudirah in https://github.com/networkx/networkx/pull/6183
    • Swap.py coverage to 100 by @Mjh9122 in https://github.com/networkx/networkx/pull/6176
    • Improve test for algorithms in current-flow-betweenness.py by @chimaobi-okite in https://github.com/networkx/networkx/pull/6143
    • Completed Testing in community.py resolves issue #6184 by @Mjh9122 in https://github.com/networkx/networkx/pull/6185
    • Added an example to algebraic_connectivity by @paulitapb in https://github.com/networkx/networkx/pull/6153
    • Add ThinGraph example to Multi*Graph doc_strings by @nsengiyumva-wilberforce in https://github.com/networkx/networkx/pull/6160
    • changed edge weights for max weight matching and added test by @rfulekjames in https://github.com/networkx/networkx/pull/6145
    • For issue #6030 Add test coverage for algorithms in beamsearch.py by @ladykkk in https://github.com/networkx/networkx/pull/6087
    • Improve test coverage expanders stochastic graph generators by @Emmanuel-Lud in https://github.com/networkx/networkx/pull/6073
    • Update developer requirements by @jarrodmillman in https://github.com/networkx/networkx/pull/6194

    New Contributors

    • @juanis2112 made their first contribution in https://github.com/networkx/networkx/pull/5754
    • @lior8 made their first contribution in https://github.com/networkx/networkx/pull/5797
    • @shakedbr made their first contribution in https://github.com/networkx/networkx/pull/5809
    • @kpetridis24 made their first contribution in https://github.com/networkx/networkx/pull/5452
    • @0ddoes made their first contribution in https://github.com/networkx/networkx/pull/5528
    • @ben-heil made their first contribution in https://github.com/networkx/networkx/pull/5663
    • @alifa98 made their first contribution in https://github.com/networkx/networkx/pull/5223
    • @tom24d made their first contribution in https://github.com/networkx/networkx/pull/5852
    • @tanmayaeron made their first contribution in https://github.com/networkx/networkx/pull/5876
    • @gpdwatkins made their first contribution in https://github.com/networkx/networkx/pull/5888
    • @Geometrein made their first contribution in https://github.com/networkx/networkx/pull/5914
    • @brocla made their first contribution in https://github.com/networkx/networkx/pull/5892
    • @still-n0thing made their first contribution in https://github.com/networkx/networkx/pull/5879
    • @adam2392 made their first contribution in https://github.com/networkx/networkx/pull/5898
    • @GuyAglionby made their first contribution in https://github.com/networkx/networkx/pull/5629
    • @pmlpm1986 made their first contribution in https://github.com/networkx/networkx/pull/5944
    • @mturnansky made their first contribution in https://github.com/networkx/networkx/pull/5974
    • @ddelange made their first contribution in https://github.com/networkx/networkx/pull/5984
    • @vigna made their first contribution in https://github.com/networkx/networkx/pull/6003
    • @DiamondJoseph made their first contribution in https://github.com/networkx/networkx/pull/6039
    • @Qudirah made their first contribution in https://github.com/networkx/networkx/pull/6080
    • @chimaobi-okite made their first contribution in https://github.com/networkx/networkx/pull/6071
    • @paulitapb made their first contribution in https://github.com/networkx/networkx/pull/6085
    • @stevenstrickler made their first contribution in https://github.com/networkx/networkx/pull/5988
    • @dkgaraujo made their first contribution in https://github.com/networkx/networkx/pull/6114
    • @Mjh9122 made their first contribution in https://github.com/networkx/networkx/pull/6095
    • @tindi-plus made their first contribution in https://github.com/networkx/networkx/pull/6110
    • @jeftersantiago made their first contribution in https://github.com/networkx/networkx/pull/6152
    • @nsengiyumva-wilberforce made their first contribution in https://github.com/networkx/networkx/pull/6160
    • @rfulekjames made their first contribution in https://github.com/networkx/networkx/pull/6145
    • @ladykkk made their first contribution in https://github.com/networkx/networkx/pull/6087
    • @Emmanuel-Lud made their first contribution in https://github.com/networkx/networkx/pull/6073

    Full Changelog: https://github.com/networkx/networkx/compare/networkx-2.8.8...networkx-3.0rc1

    Source code(tar.gz)
    Source code(zip)
  • networkx-2.8.8(Nov 1, 2022)

  • networkx-3.0b1(Oct 12, 2022)

    What's Changed

    • Add characteristic polynomial example to polynomials docs by @lucasmccabe in https://github.com/networkx/networkx/pull/5730
    • Remove deprecated function is_string_like by @MridulS in https://github.com/networkx/networkx/pull/5738
    • Remove deprecated function make_str by @MridulS in https://github.com/networkx/networkx/pull/5739
    • Remove unused 'name' parameter from /operators/binary.py by @z3y50n in https://github.com/networkx/networkx/pull/5741
    • Remove deprecated function is_iterator by @MridulS in https://github.com/networkx/networkx/pull/5740
    • remove euclidean from geometric.py by @z3y50n in https://github.com/networkx/networkx/pull/5744
    • Remove deprecated function utils.consume by @MridulS in https://github.com/networkx/networkx/pull/5745
    • Rm to_numpy_recarray by @rossbar in https://github.com/networkx/networkx/pull/5737
    • Remove deprecated function utils.empty_generator by @MridulS in https://github.com/networkx/networkx/pull/5748
    • Rm jit.py by @dtekinoglu in https://github.com/networkx/networkx/pull/5751
    • Remove deprecated context managers by @MridulS in https://github.com/networkx/networkx/pull/5752
    • Remove deprecated function utils.to_tuple by @MridulS in https://github.com/networkx/networkx/pull/5755
    • Remove deprecated display_pygraphviz by @juanis2112 in https://github.com/networkx/networkx/pull/5754
    • Remove to_numpy_matrix & from_numpy_matrix by @dtekinoglu in https://github.com/networkx/networkx/pull/5746
    • Remove deprecated decorator preserve_random_state by @dschult in https://github.com/networkx/networkx/pull/5768
    • Remove deprecated function is_list_of_ints by @MridulS in https://github.com/networkx/networkx/pull/5743
    • Remove decorator random_state by @dschult in https://github.com/networkx/networkx/pull/5770
    • remove adj_matrix from linalg/graphmatrix.py by @z3y50n in https://github.com/networkx/networkx/pull/5753
    • Remove betweenness_centrality_source by @dtekinoglu in https://github.com/networkx/networkx/pull/5786
    • Remove deprecated simrank_similarity_numpy by @juanis2112 in https://github.com/networkx/networkx/pull/5783
    • remove testing submodule by @mjschwenne in https://github.com/networkx/networkx/pull/5782
    • Change PyDot PendingDeprecation to Deprecation by @dschult in https://github.com/networkx/networkx/pull/5781
    • Remove deprecated numeric_mixing_matrix by @juanis2112 in https://github.com/networkx/networkx/pull/5777
    • Remove deprecated functions make_small_graph and make_small_undirected_graph by @MridulS in https://github.com/networkx/networkx/pull/5761
    • Remove _naive_greedy_modularity_communities by @juanis2112 in https://github.com/networkx/networkx/pull/5760
    • Make chordal_graph_cliques a generator by @juanis2112 in https://github.com/networkx/networkx/pull/5758
    • update cytoscape functions to drop old signature by @dschult in https://github.com/networkx/networkx/pull/5784
    • Remove deprecated functions dict_to_numpy_array2 and dict_to_numpy_array1 by @MridulS in https://github.com/networkx/networkx/pull/5756
    • Remove deprecated function utils.default_opener by @MridulS in https://github.com/networkx/networkx/pull/5747
    • Remove deprecated function iterable by @MridulS in https://github.com/networkx/networkx/pull/5742
    • remove old attr keyword from json_graph/tree by @mjschwenne in https://github.com/networkx/networkx/pull/5785
    • Remove generate_unique_node by @jarrodmillman in https://github.com/networkx/networkx/pull/5780
    • Replace node_classification subpackage with a module by @dschult in https://github.com/networkx/networkx/pull/5774
    • Remove gpickle by @jarrodmillman in https://github.com/networkx/networkx/pull/5773
    • Remove deprecated function extrema_bounding by @MridulS in https://github.com/networkx/networkx/pull/5757
    • Remove coverage and performance from quality by @jarrodmillman in https://github.com/networkx/networkx/pull/5775
    • Update return type of google_matrix to numpy.ndarray by @MridulS in https://github.com/networkx/networkx/pull/5762
    • Remove deprecated k-nearest-neighbors by @juanis2112 in https://github.com/networkx/networkx/pull/5769
    • Remove gdal dependency by @jarrodmillman in https://github.com/networkx/networkx/pull/5766
    • Update return type of attrmatrix by @MridulS in https://github.com/networkx/networkx/pull/5764
    • Remove unused deprecated argument from to_pandas_edgelist by @MridulS in https://github.com/networkx/networkx/pull/5778
    • Updated astar docstring by @lior8 in https://github.com/networkx/networkx/pull/5797
    • Compute is_weakly_connected lazily by @matusvalo in https://github.com/networkx/networkx/pull/5795
    • Compute is_strongly_connected lazily by @matusvalo in https://github.com/networkx/networkx/pull/5793
    • Remove deprecated function edge_betweeness by @juanis2112 in https://github.com/networkx/networkx/pull/5765
    • Remove pyyaml dependency by @jarrodmillman in https://github.com/networkx/networkx/pull/5763
    • Fix typo in bipartite closeness_centrality and thought-o in tests by @dschult in https://github.com/networkx/networkx/pull/5800
    • Test out explicit paths while installing pygraphviz in macOS by @MridulS in https://github.com/networkx/networkx/pull/5805
    • Remove copy methods for Filter* coreviews by @MridulS in https://github.com/networkx/networkx/pull/5776
    • Remove deprecated function nx.info by @MridulS in https://github.com/networkx/networkx/pull/5759
    • Add more comprehensive tests for pydot by @MridulS in https://github.com/networkx/networkx/pull/5792
    • Remove deprecated n_communities argument from greedy_modularity_communities by @MridulS in https://github.com/networkx/networkx/pull/5789
    • Remove deprecated functions hub_matrix and authority_matrix by @MridulS in https://github.com/networkx/networkx/pull/5767
    • Make HITS numpy and scipy private functions by @MridulS in https://github.com/networkx/networkx/pull/5771
    • Pydot layout fix by @shakedbr in https://github.com/networkx/networkx/pull/5809
    • Add random_spanning_tree to documentation by @mjschwenne in https://github.com/networkx/networkx/pull/5810
    • Add examples for the condensation function by @kpetridis24 in https://github.com/networkx/networkx/pull/5452
    • Check that nodes have "pos" attribute in geometric_edges by @rossbar in https://github.com/networkx/networkx/pull/5707
    • Add Triad example plot by @0ddoes in https://github.com/networkx/networkx/pull/5528
    • DAG Layouts Added solving #5124 by @0ddoes in https://github.com/networkx/networkx/pull/5432
    • Make pagerank numpy and scipy private functions by @MridulS in https://github.com/networkx/networkx/pull/5772
    • Implement directed edge swap by @ben-heil in https://github.com/networkx/networkx/pull/5663
    • Temporary fix for failing tests w/ scipy1.9. by @rossbar in https://github.com/networkx/networkx/pull/5816
    • Fix #5817 by @mjschwenne in https://github.com/networkx/networkx/pull/5822
    • Update relabel.py to preserve node order by @SultanOrazbayev in https://github.com/networkx/networkx/pull/5258
    • Update distance parameter description. by @rossbar in https://github.com/networkx/networkx/pull/5819
    • Modify DAG example to show topological layout. by @rossbar in https://github.com/networkx/networkx/pull/5835
    • DOC: Rst syntax update. by @Carreau in https://github.com/networkx/networkx/pull/5837
    • Add keyword argument to nx.ancestors & nx.descendants by @dtekinoglu in https://github.com/networkx/networkx/pull/5802
    • Update precommit linters by @jarrodmillman in https://github.com/networkx/networkx/pull/5839
    • Add warning to nx_agraph about layout nondeterminism. by @rossbar in https://github.com/networkx/networkx/pull/5832
    • remove to/from_scipy_sparse_matrix by @mjschwenne in https://github.com/networkx/networkx/pull/5779
    • Clean up from PR #5779 by @jarrodmillman in https://github.com/networkx/networkx/pull/5841
    • Corona Product by @alifa98 in https://github.com/networkx/networkx/pull/5223
    • Add direct link to github networkx org sponsorship by @MridulS in https://github.com/networkx/networkx/pull/5843
    • added examples to efficiency_measures.py by @Lukong123 in https://github.com/networkx/networkx/pull/5643
    • added examples to regular.py by @Lukong123 in https://github.com/networkx/networkx/pull/5642
    • added examples to degree_alg.py by @Lukong123 in https://github.com/networkx/networkx/pull/5644
    • Add examples to lowest common ancestors algorithms by @dtekinoglu in https://github.com/networkx/networkx/pull/5531
    • Examples for 7 Functions in Triads.py added solving issue #5498 by @0ddoes in https://github.com/networkx/networkx/pull/5522
    • Fix docbuild warnings: is_string_like is removed and identation in corona product by @MridulS in https://github.com/networkx/networkx/pull/5845
    • Use py_random_state to control randomness of random_triad by @MridulS in https://github.com/networkx/networkx/pull/5847
    • Point to the latest URL for the description. by @tom24d in https://github.com/networkx/networkx/pull/5852
    • Remove OrderedGraphs by @jarrodmillman in https://github.com/networkx/networkx/pull/5813
    • Drop NumPy 1.19 by @jarrodmillman in https://github.com/networkx/networkx/pull/5856
    • Correct louvain formula by @z3y50n in https://github.com/networkx/networkx/pull/5713
    • Naive lowest common ancestor implementation by @dtekinoglu in https://github.com/networkx/networkx/pull/5736
    • Speed up unionfind a bit by not adding root node in the path by @MridulS in https://github.com/networkx/networkx/pull/5844
    • Minor doc fixups by @rossbar in https://github.com/networkx/networkx/pull/5868
    • update tests in base class and simple rename in convert.py by @dschult in https://github.com/networkx/networkx/pull/5848
    • Gallery example: Morse code alphabet as a prefix tree by @rossbar in https://github.com/networkx/networkx/pull/5867
    • Move factory attributes to the class instead of instance. by @dschult in https://github.com/networkx/networkx/pull/5850
    • Attempt to reverse slowdown from hasattr needed for cached_property by @dschult in https://github.com/networkx/networkx/pull/5836
    • make lazy_import private and remove its internal use by @dschult in https://github.com/networkx/networkx/pull/5878
    • update all_pairs_lca docstrings by @tanmayaeron in https://github.com/networkx/networkx/pull/5876
    • Improve LCA input validation by @rossbar in https://github.com/networkx/networkx/pull/5877
    • strategy_saturation_largest_first now accepts partial colorings by @gpdwatkins in https://github.com/networkx/networkx/pull/5888
    • Fixed unused root argument in has_bridges by @juanis2112 in https://github.com/networkx/networkx/pull/5846
    • Update docs to include description of the return_seen kwarg by @SultanOrazbayev in https://github.com/networkx/networkx/pull/5891
    • Add cache reset for when G._node is changed by @dschult in https://github.com/networkx/networkx/pull/5894
    • refactor: modifications and additional tests for weighted distance by @lucasmccabe in https://github.com/networkx/networkx/pull/5305
    • Allow classes to relabel nodes -- casting by @dschult in https://github.com/networkx/networkx/pull/5903
    • Update lattice.py by @Geometrein in https://github.com/networkx/networkx/pull/5914
    • docstring updates for union, disjoint_union, and compose by @brocla in https://github.com/networkx/networkx/pull/5892
    • Adds nx.bfs_layers method by @still-n0thing in https://github.com/networkx/networkx/pull/5879
    • Add to about_us.rst by @dschult in https://github.com/networkx/networkx/pull/5919
    • Update precommit hooks by @jarrodmillman in https://github.com/networkx/networkx/pull/5923
    • Remove old Appveyor cruft by @jarrodmillman in https://github.com/networkx/networkx/pull/5924
    • signature change for node_link functions: for issue #5787 by @brocla in https://github.com/networkx/networkx/pull/5899
    • Allow unsortable nodes in approximation.treewidth functions by @dschult in https://github.com/networkx/networkx/pull/5921
    • Fix Louvain_partitions by yielding a copy of the sets in the partition gh-5901 by @dschult in https://github.com/networkx/networkx/pull/5902
    • Replace LCA with naive implementations by @rossbar in https://github.com/networkx/networkx/pull/5883
    • Add function bfs_layers to docs by @dschult in https://github.com/networkx/networkx/pull/5932
    • Bump nodelink args deprecation expiration to v3.2 by @rossbar in https://github.com/networkx/networkx/pull/5933
    • Update mapping logic in relabel_nodes by @rossbar in https://github.com/networkx/networkx/pull/5912
    • Propose to make new node_link arguments keyword only. by @rossbar in https://github.com/networkx/networkx/pull/5928
    • docstring update to lexicographical_topological_sort issue 5681 by @brocla in https://github.com/networkx/networkx/pull/5930
    • Update pygraphviz by @jarrodmillman in https://github.com/networkx/networkx/pull/5934
    • Support matplotlb 3.6rc1 by @jarrodmillman in https://github.com/networkx/networkx/pull/5937
    • Further improvements to strategy_saturation_largest_first by @gpdwatkins in https://github.com/networkx/networkx/pull/5935
    • Arf layout by @cvanelteren in https://github.com/networkx/networkx/pull/5910
    • [ENH] Find and verify a minimal D-separating set in DAG by @adam2392 in https://github.com/networkx/networkx/pull/5898
    • Add Mehlhorn Steiner approximations by @GuyAglionby in https://github.com/networkx/networkx/pull/5629
    • Updated networkx/classes/function.py . Solves Issue #5463 by @0ddoes in https://github.com/networkx/networkx/pull/5474
    • Improved documentation for all_simple_paths by @pmlpm1986 in https://github.com/networkx/networkx/pull/5944
    • Improve is_path by @pmlpm1986 in https://github.com/networkx/networkx/pull/5943
    • Preliminary VF2++ Implementation by @kpetridis24 in https://github.com/networkx/networkx/pull/5788
    • Minor docstring touchups and test refactor for is_path by @rossbar in https://github.com/networkx/networkx/pull/5967
    • Update documentation header links for latest pydata-sphinx-theme by @rossbar in https://github.com/networkx/networkx/pull/5966
    • Switch to relative import for vf2pp_helpers. by @rossbar in https://github.com/networkx/networkx/pull/5973
    • Add vf2pp_helpers subpackage to wheel by @rossbar in https://github.com/networkx/networkx/pull/5975
    • Enhance biconnected components to avoid indexing by @mturnansky in https://github.com/networkx/networkx/pull/5974
    • Update mentored projects list by @rossbar in https://github.com/networkx/networkx/pull/5985
    • Add concurrency hook to cancel jobs on new push. by @rossbar in https://github.com/networkx/networkx/pull/5986
    • Make all.py generator friendly by @ddelange in https://github.com/networkx/networkx/pull/5984
    • Fix failing example due to mpl 3.6 colorbar. by @rossbar in https://github.com/networkx/networkx/pull/5994
    • Only run scheduled pytest-randomly job in main repo. by @rossbar in https://github.com/networkx/networkx/pull/5993
    • Fix steiner tree test by @GuyAglionby in https://github.com/networkx/networkx/pull/5999
    • Add Tidelift security vulnerability link by @dschult in https://github.com/networkx/networkx/pull/6001
    • Update linters by @jarrodmillman in https://github.com/networkx/networkx/pull/6006
    • Update doc requirements by @jarrodmillman in https://github.com/networkx/networkx/pull/6008
    • VF2++ for Directed Graphs by @kpetridis24 in https://github.com/networkx/networkx/pull/5972
    • Bugfix /docfix for MappedQueue, issue 5681 by @brocla in https://github.com/networkx/networkx/pull/5939
    • Fix warnings from running tests in randomized order by @rossbar in https://github.com/networkx/networkx/pull/6014
    • Update pydata-sphinx-theme by @jarrodmillman in https://github.com/networkx/networkx/pull/6012
    • update secutiry link to tidelift by @dschult in https://github.com/networkx/networkx/pull/6019
    • Update numpydoc by @jarrodmillman in https://github.com/networkx/networkx/pull/6022
    • Support Python 3.11 by @jarrodmillman in https://github.com/networkx/networkx/pull/6023
    • Update linters by @jarrodmillman in https://github.com/networkx/networkx/pull/6024
    • Fixed test for average shortest path in the case of directed graphs by @vigna in https://github.com/networkx/networkx/pull/6003
    • Minor updates to expanders generator tests by @rossbar in https://github.com/networkx/networkx/pull/6027
    • Update deprecations by @jarrodmillman in https://github.com/networkx/networkx/pull/6031
    • Use scipy.sparse array datastructure by @jarrodmillman in https://github.com/networkx/networkx/pull/6037

    New Contributors

    • @juanis2112 made their first contribution in https://github.com/networkx/networkx/pull/5754
    • @lior8 made their first contribution in https://github.com/networkx/networkx/pull/5797
    • @shakedbr made their first contribution in https://github.com/networkx/networkx/pull/5809
    • @kpetridis24 made their first contribution in https://github.com/networkx/networkx/pull/5452
    • @0ddoes made their first contribution in https://github.com/networkx/networkx/pull/5528
    • @ben-heil made their first contribution in https://github.com/networkx/networkx/pull/5663
    • @alifa98 made their first contribution in https://github.com/networkx/networkx/pull/5223
    • @tom24d made their first contribution in https://github.com/networkx/networkx/pull/5852
    • @tanmayaeron made their first contribution in https://github.com/networkx/networkx/pull/5876
    • @gpdwatkins made their first contribution in https://github.com/networkx/networkx/pull/5888
    • @Geometrein made their first contribution in https://github.com/networkx/networkx/pull/5914
    • @brocla made their first contribution in https://github.com/networkx/networkx/pull/5892
    • @still-n0thing made their first contribution in https://github.com/networkx/networkx/pull/5879
    • @adam2392 made their first contribution in https://github.com/networkx/networkx/pull/5898
    • @GuyAglionby made their first contribution in https://github.com/networkx/networkx/pull/5629
    • @pmlpm1986 made their first contribution in https://github.com/networkx/networkx/pull/5944
    • @mturnansky made their first contribution in https://github.com/networkx/networkx/pull/5974
    • @ddelange made their first contribution in https://github.com/networkx/networkx/pull/5984
    • @vigna made their first contribution in https://github.com/networkx/networkx/pull/6003

    Full Changelog: https://github.com/networkx/networkx/compare/networkx-2.8.7...networkx-3.0b1

    Source code(tar.gz)
    Source code(zip)
  • networkx-2.8.7(Oct 1, 2022)

  • networkx-2.8.6(Aug 22, 2022)

  • networkx-2.8.5(Jul 18, 2022)

  • networkx-2.8.4(Jun 14, 2022)

    What's Changed

    • Clean up maximal_independent_set tests by @MridulS in https://github.com/networkx/networkx/pull/5567
    • MAINT: Cleanup centrality module, remove unused variables by @MridulS in https://github.com/networkx/networkx/pull/5308
    • importorskip scipy instead of numpy for total spanning tree by @MridulS in https://github.com/networkx/networkx/pull/5693
    • Add initial_graph parameter to scale_free_graph and deprecate create_using by @rossbar in https://github.com/networkx/networkx/pull/5697
    • Add docstring example for attr transfer to linegraph. by @rossbar in https://github.com/networkx/networkx/pull/5698
    • Update ISMAGS.analyze_symmetry docstring. by @rossbar in https://github.com/networkx/networkx/pull/5696
    • Add default value p=2 for minkowski distance metric. by @rossbar in https://github.com/networkx/networkx/pull/5700
    • Use inline math by @szhorvat in https://github.com/networkx/networkx/pull/5701
    • Update multigraph docstrings to reflect remove_edges_from behavior. by @rossbar in https://github.com/networkx/networkx/pull/5699
    • Update simple_cycles docstring w/ yields and examples by @rossbar in https://github.com/networkx/networkx/pull/5709
    • Chromatic polynomial by @lucasmccabe in https://github.com/networkx/networkx/pull/5675
    • Catch ':' explicitly while working with pydot by @MridulS in https://github.com/networkx/networkx/pull/5710
    • Revert "Add workaround for pytest failures on 3.11b2" by @rossbar in https://github.com/networkx/networkx/pull/5717
    • Default to lightmode for documentation by @rossbar in https://github.com/networkx/networkx/pull/5715
    • Dont compute all biconnected components in is_biconnected() by @matusvalo in https://github.com/networkx/networkx/pull/5688
    • Some more changes to make pytest-randomly happy by @MridulS in https://github.com/networkx/networkx/pull/5719
    • Add durations flag to coverage run on CI. by @rossbar in https://github.com/networkx/networkx/pull/5718
    • Recover order of layers in multipartite_layout when layers are sortable by @rossbar in https://github.com/networkx/networkx/pull/5705
    • Update doc requirements by @jarrodmillman in https://github.com/networkx/networkx/pull/5711
    • Touchups to MG and MDG edges docstrings. by @rossbar in https://github.com/networkx/networkx/pull/5708
    • Add PendingDeprecation for pydot by @jarrodmillman in https://github.com/networkx/networkx/pull/5721
    • Add example of topo_order kwarg to dag_longest_path by @rossbar in https://github.com/networkx/networkx/pull/5728
    • CI: add pytest-randomly workflow. by @rossbar in https://github.com/networkx/networkx/pull/4553

    New Contributors

    • @szhorvat made their first contribution in https://github.com/networkx/networkx/pull/5701

    Full Changelog: https://github.com/networkx/networkx/compare/networkx-2.8.3...networkx-2.8.4

    Source code(tar.gz)
    Source code(zip)
  • networkx-2.8.3(Jun 4, 2022)

    What's Changed

    • added example to closeness.py by @Lukong123 in https://github.com/networkx/networkx/pull/5645
    • Extract valid kwds from the function signature for draw_networkx_* by @MridulS in https://github.com/networkx/networkx/pull/5660
    • Error out when pydot fails to correctly parse node names by @MridulS in https://github.com/networkx/networkx/pull/5667
    • Remove redundant py2 numeric conversions - Take 2 by @MridulS in https://github.com/networkx/networkx/pull/5661
    • Correcting a typo in the references by @RATCOinc in https://github.com/networkx/networkx/pull/5677
    • Add workaround for pytest failures on 3.11b2 by @rossbar in https://github.com/networkx/networkx/pull/5680
    • Moved random_spanning_tree to public API by @mjschwenne in https://github.com/networkx/networkx/pull/5656
    • More tests for clustering (upstreaming from graphblas-algorithms) by @eriknw in https://github.com/networkx/networkx/pull/5673
    • Remove unused logic in nonisomorphic_trees by @Erotemic in https://github.com/networkx/networkx/pull/5682
    • equitable_coloring: Get lazily first item instead of creating whole list by @matusvalo in https://github.com/networkx/networkx/pull/5668
    • Update subgraph views tests to pass with out of order execution by @MridulS in https://github.com/networkx/networkx/pull/5683
    • Use isort with pre-commit to enforce import guidelines by @MridulS in https://github.com/networkx/networkx/pull/5659
    • ignore isort commit from git blame by @MridulS in https://github.com/networkx/networkx/pull/5684
    • Another catch by pytest-randomly by @MridulS in https://github.com/networkx/networkx/pull/5685
    • Remove unused file from utils.test by @MridulS in https://github.com/networkx/networkx/pull/5687
    • Update release requirements by @jarrodmillman in https://github.com/networkx/networkx/pull/5690
    • Update developer requirements by @jarrodmillman in https://github.com/networkx/networkx/pull/5689

    New Contributors

    • @RATCOinc made their first contribution in https://github.com/networkx/networkx/pull/5677
    • @eriknw made their first contribution in https://github.com/networkx/networkx/pull/5673
    • @matusvalo made their first contribution in https://github.com/networkx/networkx/pull/5668

    Full Changelog: https://github.com/networkx/networkx/compare/networkx-2.8.2...networkx-2.8.3

    Source code(tar.gz)
    Source code(zip)
  • networkx-2.8.2(May 21, 2022)

  • networkx-2.8.1(May 18, 2022)

  • networkx-2.8.1rc1(May 13, 2022)

  • networkx-2.8(Apr 9, 2022)

  • networkx-2.8rc1(Apr 5, 2022)

  • networkx-2.7.1(Mar 5, 2022)

  • networkx-2.7(Feb 28, 2022)

  • networkx-2.7rc1(Feb 19, 2022)

  • networkx-2.6.3(Sep 9, 2021)

  • networkx-2.6.2(Jul 27, 2021)

  • networkx-2.6.1(Jul 8, 2021)

  • networkx-2.6(Jul 8, 2021)

  • networkx-2.6rc2(Jun 23, 2021)

  • networkx-2.6rc1(May 31, 2021)

  • networkx-2.5.1(Apr 3, 2021)

  • networkx-2.5(Aug 22, 2020)

  • networkx-2.5rc1(Aug 16, 2020)

  • networkx-2.4(Oct 17, 2019)

  • networkx-2.4rc2(Oct 16, 2019)

  • networkx-2.4rc1(Oct 13, 2019)

  • networkx-2.3(Apr 11, 2019)

  • networkx-2.3rc3(Apr 4, 2019)

Owner
NetworkX
Software for Complex Networks
NetworkX
Simple local RPG turn-based to play while learn something using the anki system

Simple local RPG turn-based to play while learn something using the anki system

Raphael Kieling 5 Aug 02, 2022
A socket script to obtain chinese phones-sequence for any english word

Foreign Pronunciation Generator (English-Chinese) We provide a simple socket script for acquiring Chinese pronunciation of English words (phones in ai

Ephemeroptera 5 Jul 25, 2022
An automatic web reconnaissance tool written in python3.

WebRecon is an automatic web reconnaissance tool written in python3. Provides a command line interaction similar to msfconsole. The Exasmple.py file is provided, and you can write your own scripts yo

prophet 1 Feb 06, 2022
Get Your Localhost Online - Ngrok Alternative

Get Your Localhost Online - Ngrok Alternative

Azimjon Pulatov 442 Jan 04, 2023
A repository dedicated to IoT(internet of things ) and python scripts

📑 Introduction Week of Learning is a weekly program in which you will get all the necessary knowledge about Circuit-Building, Arduino and Micro-Contr

27 Nov 22, 2022
A lightweight python script that can monitor the T-Mobile Home Internet Nokia 5G Gateway for band and connectivity and reboot as needed.

tmo-monitor A lightweight Python 3 script that can monitor the T-Mobile Home Internet Nokia 5G Gateway for band and connectivity and reboot as needed.

61 Dec 17, 2022
This script aims to make the dynamic public ip of your local server, public.

EZ DDNS CLOUDFLARE This script aims to make the dynamic ip of your local server, public. It does this by regularly updating cloudflare's dns record. B

3 Feb 13, 2022
Timeouts for popular Python packages

Python Timeouts An unresponsive service can be worse than a down one. It can tie up your entire system if not handled properly. All network requests s

Andrew Kane 11 Nov 22, 2022
ARTEMIS: Real-Time Detection and Automatic Mitigation for BGP Prefix Hijacking.

ARTEMIS: Real-Time Detection and Automatic Mitigation for BGP Prefix Hijacking. This is the main ARTEMIS repository that composes artemis-frontend, artemis-backend, artemis-monitor and other needed c

INSPIRE Group @FORTH-ICS 273 Jan 01, 2023
A vpn that sits in your browser, accessible via a website

VPNInYourBrowser A vpn that sits in your browser, accessible via a website Example setup: https://VPNInBrowser.jaffa42.repl.co Setup Put the code onto

1 Jan 20, 2022
Some files casually made by @AneekBiswas

Python-Tools All Pyhthon Files are created and managed by @AneekBiswas Modules needed to be downloaded 1.CLI bagels.py random guess.py random text-tow

1 Feb 23, 2022
A non-custodial oracle and escrow system for the lightning network. Make LN contracts more expressive.

Hodl contracts A non-custodial oracle and escrow system for the lightning network. Make LN contracts more expressive. If you fire it up, be aware: (1)

31 Nov 30, 2022
Tsunami-Fi is simple multi-tool bash application for Wi-Fi attacks

🪴 Tsunami-Fi 🪴 Русская версия README 🌿 Description 🌿 Tsunami-Fi is simple multi-tool bash application for Wi-Fi WPS PixieDust and NullPIN attack,

【Kiko】 35 Dec 09, 2022
This is a python based command line Network Scanner utility, which input as an argument for the exact IP address or the relative IP Address range you wish to do the Network Scan for and returns all the available IP addresses with their MAC addresses on your current Network.

This is a python based command line Network Scanner utility, which input as an argument for the exact IP address or the relative IP Address range you wish to do the Network Scan for and returns all t

Abhinandan Khurana 1 Feb 09, 2022
Easy to use gRPC-web client in python

pyease-grpc Easy to use gRPC-web client in python Tutorial This package provides a requests like interface to make calls to gRPC-Web servers.

Sudipto Chandra 4 Dec 03, 2022
User-friendly packet captures

capture-packets: User-friendly packet captures Please read before using All network traffic occurring on your machine is captured (unless you specify

Seth Michael Larson 2 Feb 05, 2022
9SPY: a Windows RAT built in Python using sockets

9SPY 👁‍🗨 9SPY is a Windows RAT built in Python using sockets Features Features will be listed here soon, there are currenly 14 Information This is a

doop 12 Dec 01, 2022
A transport agnostic sync/async RPC library that focuses on exposing services with a well-defined API using popular protocols.

WARNING: This is from spyne's development branch. This version is not released yet! Latest stable release can be found in the 2_13 branch. If you like

1.1k Dec 23, 2022
A simple chat room using socket and threading for handle multiple connections.

• Socket Chat Room was a little project for socket study. It works with a server handling the incoming connections from the clients. Clients send encoded messages while waiting for others clients mes

Guilherme de Oliveira 2 Mar 03, 2022
A simple python application for generating a WiFi QR code for ease of connection

A simple python application for generating a WiFi QR code Initialize the class by providing QR code values WiFi_QR_Code(self, error_correction: int =

Ivan 2 Aug 01, 2022