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
Pritunl is a distributed enterprise vpn server built using the OpenVPN protocol.

Pritunl is a distributed enterprise vpn server built using the OpenVPN protocol.

Pritunl 3.8k Jan 03, 2023
DNSStager is an open-source project based on Python used to hide and transfer your payload using DNS.

What is DNSStager? DNSStager is an open-source project based on Python used to hide and transfer your payload using DNS. DNSStager will create a malic

Askar 547 Dec 20, 2022
This program ingests a Cisco "sh ip arp" as a text file and produces the list of vendors seen in the file

IP-ARP-Vendor_lookup This program ingests a Cisco "sh ip arp" as a text file and produces the list of vendors seen in the file Why? Answers the questi

Stew Alexander 1 Dec 24, 2022
Ip-Seeker - See Details With Public Ip && Find Web Ip Addresses

IP SEEKER See Details With Public Ip && Find Web Ip Addresses Tool By Heshan

M.D.Heshan Sankalpa 1 Jan 02, 2022
Lightweight asyncio compatible utilities for consuming broker messages.

A simple asyncio compatible consumer for handling amqp messages.

Mehdi Kamani 3 Apr 10, 2022
Tool to get the top 100 of the fastest nodes in the Tor network. Based on Kirzahk tool.

Tor Network Top 100 IPs Tool to get the top 100 of the fastest nodes in the Tor network. Based on Kirzahk tool. Just execute top100ipstor.py to get th

Juan Manuel 0 Jan 23, 2022
Connection package to a raspberry or any other machine using ssh, it simplifies the deployment scripts and monitoring.

Connection package to a raspberry or any other machine using ssh, it simplifies the deployment scripts and monitoring.

Dashstrom 7 Mar 29, 2022
TsuserverMoS - A Python-based server for Attorney Online,

tsuserverMoS A Python-based server for Attorney Online, forked from RealKaiser/tsuserverCC Requires Python 3.7+ and PyYAML. Changes/additions from tsu

1 Dec 30, 2021
WARP+ uses Cloudflare’s virtual private backbone, known as Argo, to achieve higher speeds and ensure your connection is encrypted across the long haul of the Internet

WARP+ uses Cloudflare’s virtual private backbone, known as Argo, to achieve higher speeds and ensure your connection is encrypted across the long haul of the Internet

Rivane Rasetiansyah 3 Apr 01, 2022
An curated collection of awesome resources about networking in cybersecurity

An ongoing curated collection of awesome software, libraries, frameworks, talks & videos, best practices, learning tutorials and important practical resources about networking in cybersecurity

Paul Veillard, P. Eng 7 Nov 30, 2022
Dark Utilities - Cloudflare Uam Bypass

Dark Utilities - Cloudflare Uam Bypass

Inplex-sys 26 Dec 14, 2022
Medusa is a cross-platform agent compatible with both Python 3.8 and Python 2.7.

Medusa Medusa is a cross-platform agent compatible with both Python 3.8 and Python 2.7. Installation To install Medusa, you'll need Mythic installed o

Mythic Agents 123 Nov 09, 2022
Simple self-hosted server to receive files from remote systems

Badtray This is a very simple self-hosted server to receive files from remote systems. This works similar to Bintray (RIP) and primarily designed to d

Alex Taradov 1 Nov 22, 2021
Network monitoring tool

netmeter If you are looking for a tool to monitor your network interfaces, here you are. See netmeter-exporter to export Prometheus metrics. Installat

Saeid Bostandoust 97 Dec 03, 2022
Edge static generator. Also Edge means: the outside limit of an object, area, or surface.

Edge Edge is a new static generator. Edge is onworking. Do not clone or do any changes. No P.R will be merged Also Edge means: the outside limit of an

AmirHossein Mohammadi 12 Jan 16, 2022
Apple Store Stock Notifier monitors the availability of selected Apple devices in selected Apple stores, and sends you a notification when devices are available!

Apple Store Stock Notifier This software will immediately send you a notification via Telegram when one of your coveted Apple Devices is available in

Floris-Jan Willemsen 25 Dec 05, 2022
QUIC and HTTP/3 implementation in Python

aioquic What is aioquic? aioquic is a library for the QUIC network protocol in Python. It features a minimal TLS 1.3 implementation, a QUIC stack and

1.2k Dec 29, 2022
This is the code repository for Mastering Python for Networking and Security – Second Edition

Mastering Python for Networking and Security – Second Edition This is the code repository for Mastering Python for Networking and Security – Second Ed

Frank Gottinger 1 Feb 09, 2022
Building a Robust IOT device which is customizable, encrypted, secure and user friendly

Building a Robust IOT device which is customizable, encrypted, secure and user friendly, which uses a single GPIO pin to extract multiple sensor values

1 Jan 03, 2022
Share clipboards between two devices in a network

Shared Clipboard I felt the need for sharing clipboard texts between virtual machines but I didn't find any reliable solutions for this (I use HyperV)

Teja Swaroop 9 Jun 10, 2022