Skip to main content

Python graph (network) package

Project description

altgraph is a fork of graphlib: a graph (network) package for constructing graphs, BFS and DFS traversals, topological sort, shortest paths, etc. with graphviz output.

altgraph includes some additional usage of Python 2.6+ features and enhancements related to modulegraph and macholib.


  • Update classifiers for Python 3.11


  • Change in to fix the sidebar links on PyPI


  • Explicitly mark Python 3.10 as supported in wheel metadata.


  • Explicitly mark Python 3.8 as supported in wheel metadata.

  • Migrate from Bitbucket to GitHub

  • Run black on the entire repository


  • Explicitly mark Python 3.7 as supported in wheel metadata.


  • Add LICENSE file


  • ObjectGraph.get_edges, ObjectGraph.getEdgeData and ObjectGraph.updateEdgeData accept None as the node to get and treat this as an alias for self (as other methods already did).


  • Issue #7: Remove use of iteritems in altgraph.GraphAlgo code


  • Issue #4: Graph._bfs_subgraph and back_bfs_subgraph return subgraphs with reversed edges

    Fix by “pombredanne” on bitbucket.


  • Added ObjectGraph.edgeData to retrieve the edge data from a specific edge.

  • Added AltGraph.update_edge_data and ObjectGraph.updateEdgeData to update the data associated with a graph edge.


  • Stabilize the order of elements in dot file exports, patch from bitbucket user ‘pombredanne’.

  • Tweak file to remove dependency on distribute (but keep the dependency on setuptools)


  • There where no classifiers in the package metadata due to a bug in


This is a bugfix release

Bug fixes:

  • Issue #3: The source archive contains a README.txt while the setup file refers to ReadMe.txt.

    This is caused by a misfeature in distutils, as a workaround I’ve renamed ReadMe.txt to README.txt in the source tree and setup file.


This is a minor feature release


  • Do not use “2to3” to support Python 3.

    As a side effect of this altgraph now supports Python 2.6 and later, and no longer supports earlier releases of Python.

  • The order of attributes in the Dot output is now always alphabetical.

    With this change the output will be consistent between runs and Python versions.


This is a minor bugfix release


  • Added altgraph.ObjectGraph.ObjectGraph.nodes, a method yielding all nodes in an object graph.


  • The 0.8 release didn’t work with py2app when using python 3.x.


This is a minor feature release. The major new feature is a extensive set of unittests, which explains almost all other changes in this release.


  • Installing failed with Python 2.5 due to using a distutils class that isn’t available in that version of Python (issue #1 on the issue tracker)

  • altgraph.GraphStat.degree_dist now actually works

  • altgraph.Graph.add_edge(a, b, create_nodes=False) will no longer create the edge when one of the nodes doesn’t exist.

  • altgraph.Graph.forw_topo_sort failed for some sparse graphs.

  • altgraph.Graph.back_topo_sort was completely broken in previous releases.

  • altgraph.Graph.forw_bfs_subgraph now actually works.

  • altgraph.Graph.back_bfs_subgraph now actually works.

  • altgraph.Graph.iterdfs now returns the correct result when the forward argument is False.

  • altgraph.Graph.iterdata now returns the correct result when the forward argument is False.


  • The altgraph.Graph constructor now accepts an argument that contains 2- and 3-tuples instead of requireing that all items have the same size. The (optional) argument can now also be any iterator.

  • altgraph.Graph.Graph.add_node has no effect when you add a hidden node.

  • The private method altgraph.Graph._bfs is no longer present.

  • The private method altgraph.Graph._dfs is no longer present.

  • altgraph.ObjectGraph now has a __contains__ methods, which means you can use the in operator to check if a node is part of a graph.

  • altgraph.GraphUtil.generate_random_graph will raise GraphError instead of looping forever when it is impossible to create the requested graph.

  • altgraph.Dot.edge_style raises GraphError when one of the nodes is not present in the graph. The method silently added the tail in the past, but without ensuring a consistent graph state.

  • altgraph.Dot.save_img now works when the mode is "neato".


This is a minor bugfix release


  • distutils didn’t include the documentation subtree


This is a minor feature release


  • Documentation is now generated using sphinx and can be viewed at <>.

  • The repository has moved to bitbucket

  • altgraph.GraphStat.avg_hops is no longer present, the function had no implementation and no specified behaviour.

  • the module altgraph.compat is gone, which means altgraph will no longer work with Python 2.3.


This is a minor feature release.


  • Support for Python 3

  • It is now possible to run tests using ‘python test’

    (The actual testsuite is still very minimal though)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

altgraph-0.17.4.tar.gz (48.4 kB view hashes)

Uploaded Source

Built Distribution

altgraph-0.17.4-py2.py3-none-any.whl (21.2 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page