blockdiag

3.0.0 · active · verified Fri Apr 17

blockdiag generates block-diagram images from simple text definitions. It is part of the diag suite of tools for various diagrams and is currently at version 3.0.0. Its release cadence is feature-driven, providing updates for new Python versions and enhancements.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to programmatically generate a block diagram. It parses a diagram definition string, then uses `generate_image` to create a PNG image into a BytesIO object, which is then saved to a file.

from blockdiag.parser import parse_string
from blockdiag.command.blockdiag import generate_image
from io import BytesIO
import os

diagram_text = """
diagram {
  A -> B -> C;
  B -> D;
}
"""

try:
    # Parse the diagram definition
    tree = parse_string(diagram_text)

    # Generate the image to a BytesIO object
    output_image_stream = BytesIO()
    generate_image(tree, format='png', output_filename=output_image_stream)

    # You can now save output_image_stream.getvalue() to a file
    output_filename = os.environ.get('BLOCKDIAG_OUTPUT_FILE', 'example_diagram.png')
    with open(output_filename, "wb") as f:
        f.write(output_image_stream.getvalue())

    print(f"Diagram generated to {output_filename}")

except ImportError as e:
    print(f"Error: {e}. Make sure blockdiag and Pillow are installed.")
except Exception as e:
    print(f"An unexpected error occurred: {e}")

view raw JSON →