All Versions
Latest Version
Avg Release Cycle
55 days
Latest Release

Changelog History
Page 1

  • v0.20.2 Changes

    ๐Ÿท Tag Python 3.11 support.

  • v0.20.1 Changes

    ๐Ÿ›  Fix documentation building: upgrade to Sphinx 5.0.

    ๐Ÿ›  Fix broken user guide links in API documentation.

  • v0.20 Changes

    Add keyword-only neato_no_op argument to .render(), .pipe(), and stand-alone graphviz.render() and graphviz.pipe().

    ๐Ÿ— When building a Graph or Digraph, warn about an expected DOT syntax error in rendering when passing a string that ends with an odd number of backslashes (e.g. invalid dot.node('spam', label='\\') instead of correct ..., label=r'\\' for a node labled as a backslash).

    ๐Ÿ“š Increase visibility of graphviz.escape() in the documentation.

  • v0.19.2 Changes

    โฌ‡๏ธ Drop Python 3.6 support (end of life 23 Dec 2021).

    Fix ExecutableNotFound and CalledProcessError in graphviz.__all__.

    ๐Ÿ‘ Better document 0.18 change of behaviour for the body argument/attribute (lines need to include their final newline).

  • v0.19.1 Changes

    ๐Ÿ›  Fix undecoded CalledProcessError.stdout and .stderr when .pipe() call with an encoding different from self.encoding fails.

    ๐Ÿ›  Fix missing project root in source distribution.

    Extend examples/graphviz-escapes.ipynb.

    ๐Ÿ‘Œ Improve test coverage.

    ๐Ÿ— Increase build scripts verbosity.

  • v0.19 Changes

    โž• Add PendingDeprecationWarning to calls using positional arguments ๐Ÿ—„ that will be deprecated in a later version. The future API will allow from one to three positional arguments depending on the method or function. Keyword-only arguments where not around when this library was created. โšก๏ธ This signals dependents and in general users to start updating ๐Ÿ“Œ or pinning to the wanted version (or range). Crucially, this helps new users with a safer API that allows to avoid some common mistakes. โœ… Warnings reported in tests.

    โž• Add keyword-only outfile argument to .render() and stand-alone graphviz.render(). ๐Ÿ‘ Allows to override the rendered output file name: .render(filename='spam.gv', outfile='spam.pdf') ๐Ÿ‘ Allows to derive the format and the filename from the rendered outfile name: .render(outfile='spam.svg') 0๏ธโƒฃ Tries to infer default format from the outfile suffix. You can override by setting format explicitly. โš  Warns with a graphviz.FormatSuffixMismatchWarning if there is a mismatch between given format and the inferred format from outfile suffix. โš  Warns with a graphviz.UnknownSuffixWarning if format is given and outfile uses a suffix ๐Ÿ‘ that cannot be mapped to a supported format.

    Add graphviz.set_jupyter_format() to set the output format ๐Ÿ‘‰ used by the Jupyter visualization of graphviz.Graph, graphviz.Digraph, ๐Ÿ‘ and graphviz.Source (supported formats: 'svg', 'png', 'jpeg'). Replace _repr_svg_() internally with _repr_mimebundle_(include, exclude) 0๏ธโƒฃ returning a mimebundle {'image/svg+xml', '<?xml version=...'} by default. โž• Adds support for IPython.display.display_png(). โž• Adds support for IPython.display.display_jpeg(). PR #150 <>_ Christoph Boeddeker.

    Add keyword-only raise_if_result_exists argument to .render() and stand-alone graphviz.render(). Raises graphviz.FileExistsError if the rendered file already exists.

    โž• Add support to for .render() and stand-alone .render() to overwrite the input source file with the rendered output when using the outfile keyword-only argument. This probably only makes sense for text-based Graphviz formats such as dot or plain. You need to specify overwrite_filepath=True to enable this.

    โž• Add graphviz.CalledProcessError derived from subprocess.CalledProcessError so users can choose either one in their excepts.

    โž• Add graphviz.FileExistsError derived from FileExistsError so users can choose either one in their excepts.

    โž• Add --only-exe flag to (overrides --skip-exe).

    โž• Add --no-open and --open flags to

    โž• Add and use in build job.

    โœ… Increase doctest coverage.

    Extend type annotations. Accept path-like objects for filename, directory, and filepath.

    ๐Ÿ“š Extend and improve documentation.

    ๐Ÿ‘Œ Improve build tests.

  • v0.18.2 Changes

    ๐Ÿ›  Fix filepath fallback to name of Graph/Digraph for โช when filepath is not present (restore graphviz.Graph('spam').filename == 'spam.gv' broken in 0.18).

    ๐Ÿ›  Fix unintended API docs reference to internal backend name for DOT_BINARY and UNFLATTEN_BINARY. Moved to public API as graphviz.DOT_BINARY and graphviz.UNFLATTEN_BINARY.

    ๐Ÿ›  Fix broken documentation links.

    ๐Ÿ“„ Docs: re-render most SVGs and notebooks with upstream Graphviz 2.49.3.

  • v0.18.1 Changes

    ๐Ÿ›  Fix TypeError: argument of type 'WindowsPath' is not iterable ๐Ÿ on Windows platform under Python 3.6 and 3.7 โ†ช (work around

    โšก๏ธ Update outdated examples source links.

    ๐Ÿ‘Œ Improve mode structure and separation of concerns.

    ๐Ÿ‘Œ Improve test structure and coverage.

    ๐Ÿ‘Œ Improve output of โž• Add exit status for CI. Disable view().

    โž• Add script for development.

    โž• Add script for development.

  • v0.18 Changes

    ๐Ÿ”„ Change of beaviour: File endings are now normalized so that all DOT source outputs end with a final newline (Unix convention, simplifies concatenation). This includes DOT source files written by .render(), .view(), or .save() as well was .source generated or loaded from Source (or Source.from_file()).

    ๐Ÿ”„ Change of behaviour: Source instances created by Source.from_file() no nonger write the content read into .source back into the file. ๐Ÿ‘‰ Use .save(skip_existing=False) before calling .render() or .view() if you want to overwrite the file to produce the previous (less safe) behaviour.

    ๐Ÿ”„ Change of undocumented behaviour: When iterating over a Graph, Digraph, or Source instance, the yielded lines now include a final newline ('\n'). This mimics iteration over file object lines in text mode.

    ๐Ÿ”„ Change of behaviour: When adding custom DOT statements using the body argument of Graph or Digraph or appending to the body attribute of an instance, the lines now need to include their final newline ('\n').

    When passing invalid parameters such as unknown engine, format, etc., .render() now raises early before writing the file. Call .save() explicitly to produce the previous (less safe) behaviour.

    โž• Add optional keyword-only encoding argument to pipe(). Returns the decoded stdout from the rendering process (e.g. format='svg'). Delegates encoding/decoding to subprocess in the common case 0๏ธโƒฃ (input and output encoding are the same, e.g. default encoding='utf-8'). ๐Ÿ‘‰ Used by the Jupyter notebook integration.

    โž• Add optional keyword-only engine argument to .pipe() and .render().

    โž• Add optional keyword-only renderer and formatter arguments to Graph(), Digraph(), Source() and Source.from_file() 0๏ธโƒฃ to set default renderers and formatters (similar to format). ๐Ÿ‘‰ Used by .pipe(), .render(), and .view() if not given as method-argument.

    Add pipe_string(), pipe_lines(), and pipe_lines_string(). Pipe input_string, return string. Pipe input_lines incrementally, return bytes. Pipe input_lines incrementally, return string.

    0๏ธโƒฃ Add set_default_engine() and set_default_format()


    Restructure the internal class hierarchy using multiple-inheritance with cooperative super() calling: Graph now inherits both from Dot and from Render, and both of them inherit from Base which defines their common interface: Lines of DOT source code that Dot generates (also Source) and rendering iterates over. This might break some undocumented use of subclassing and require adatation (e.g. if the methods don't use cooperative super() calling convention or if the MRO has conflicts, supposedly rare).

    ๐Ÿ‘Œ Improve test separation. Improve test coverage of running the tests with --skip-exe.

    โž• Add pytype checking and flake8 to build workflow.

    Extend type annotations.

    โž• Add config with head development environment. โž• Add launch badge to code repository.

    ๐Ÿ‘Œ Improve documentation and examples.

    โž• Add development docs.

    ๐Ÿš€ Document release process.

  • v0.17 Changes

    โฌ‡๏ธ Drop Python 2 support. Tag Python 3.10 support.

    ๐Ÿ‘ท Migrate CI to GitHub actions. Add pypy3 to matrix.

    โœ… Tests: implement --skip-exe via custom pytest marker.

    ๐Ÿ“š Documentation: point Anaconda users to conda-forge/python-graphviz.

    ๐Ÿšš Move type hints from docstrings to type annotations. Improve doctests.

    Examples: standardize import convention and modernize.

    Re-render example notebooks with Graphviz 2.46.1.