This documents the development version of PyGraphviz. Documentation for the current release can be found here.



Release date: TBD

  • Drop Python 3.8 (SPEC 0)


Release date: 1 June 2023

  • Update to SWIG 4.1.1

  • Require Graphviz 2.46+

  • Fix passthrough of graph attributes when copying

  • Update install instructions


Release date: 19 August 2022

  • Add Python 3.11 support

  • Fix gvRenderData bytes output

  • Fix FILE* resource leak in agread() wrapper

  • Close all references to fname before calling unlink(fname)


Release date: 9 February 2022

  • Drop Python 3.7 support

  • Add Python 3.10 support

  • Add osage and patchwork to progs list

  • Add IPython rich display hook to AGraph class

  • Add contributor guide

  • Fixed directed nature of AGraph.copy()

  • Minor documentation and code fixes


Release date: 20 January 2022

This release was pulled because the install was broken with pip 22 and python 3.7.


Release date: 1 February 2021

  • Drop Python 3.6 support

  • Add Python 3.9 support

  • Require Graphviz 2.42+, (Graphviz 2.46+ recommended)

  • Improve installation process and documentation

  • Switch from nose to pytest

  • Remove old Python 2 code

  • AGraph.eq includes attribute comparison (PR #246)


Release date: 05 September 2020

  • Add Python 3.8 support

  • Drop Python 2.7 support

  • Update to SWIG 4.0.1


Release date: 10 September 2018

  • Python 3.7 support


Release date: 6 September 2015

  • Update manifest to include missing files


Release date: 5 September 2015

  • Python 3 support

  • Encoding bugfixes


Release date: 3 August 2013

  • Quote Graphviz program names to work with space (Windows fix)

  • Keep name in reverse()


Release date: 9 February 2011

  • Added unicode support for handling non-ASCII characters

  • Better handling of user data on initialization of AGraph() object to guess input type (AGraph object, file, dict-of-dicts, file)

  • Add sfdp to layout options



Release date: 30 July 2010


  • Added to_string() and from_string methods

  • Interface to graphviz “acyclic” and “tred”

  • Better handling of user data on initialization of AGraph() object to guess input type (AGraph object, file, dict-of-dicts, file)

  • Add handling of default attributes for subgraphs

  • Improved error handling when using non-string data

  • Fix bug in default attribute handling

  • Make sure file handles are closed correctly


Release date: 7 December 2008


  • Use Graphviz libcgraph instead of deprecated libagraph

  • More closely match API to NetworkX

  • edges() now produces two-tuples or three tuples if edges(keys=True)

  • Edge and Node objects now have .name and .handle properties

  • Warn without throwing exceptions for Graphviz errors

  • Graph now has .strict and .directed properties

  • Cleared up fontsize warnings in examples


Release date: 18 November 2008



Release date: 17 August 2008



Release date: 13 January 2008


  • Automatic handling of types on init of AGraph(data): data can be a filename, string in dot format, dictionary-of-dictionaries, or a SWIG AGraph pointer.

  • Add interface to Graphviz programs acyclic and tred

  • Refactor process handling to allow easier access to Graphviz layout and graph processing programs

  • to_string() and from_string() methods

  • Handle multiple anonymous edges correctly

  • Attribute handling on add_node, add_edge and init of AGraph. So you can e.g. A=AGraph(ranksep=’0.1’); A.add_node(‘a’,color=’red’) A.add_edge(‘a’,’b’,color=’blue’)


Release date: 22 July 2007


  • Rebuilt SWIG wrappers - works correctly now on 64 bit machines/python2.5

  • Implement Graphviz subgraph functionality

  • Better error reporting when attempting to set attributes, avoid segfault when using None

  • pkg-config handling now works in more configurations (hopefully all)


Release date: 11 April 2007


  • run “python test” for tests if you have setuptools

  • added tests for layout code

  • use pkg-config for finding graphviz (dotneato-config still works for older graphviz versions)

  • use threads and temporary files for multiplatform nonblocking IO

  • django example


  • Workaround for “nop” bug in graphviz-2.8, improved packaging, updated swig wrapper, better error handling.


The release pygraphviz-0.32 is the second rewrite of the original project. It has improved attribute handling and drawing capabilities. It is not backward compatible with earlier versions. Earlier versions will always be available at the download site.

This version now inter-operates with many of the NetworkX algorithms and graph generators. See