Skip to content
SciTools Blog
Menu
  • Home
  • Blog
  • Support
  • Contact
  • Login
  • Pricing
  • Free Trial
Menu
Detailed image of a ball python snake wrapped around a rod in an outdoor setting.

What’s New in the Understand 8.0 Python API

Posted on May 11, 2026

Understand 8.0 ships with a batch of Python API additions that have been on the wishlist for a while. Some of these close gaps that have been annoying plugin authors for years; a few open up workflows that weren’t really possible before. Here’s the rundown.

Generate Reports from Scripts

Understand 7 gave interactive reports real power: tables, images, multi-page output. The catch was that generating them from the command line required passing entity or architecture IDs manually, which made automation painful.

With 8.0, you can drive reports directly from Python. If you’ve built a report that documents a class, you can now write a script that iterates over every class in your project and generates that report for each one. Keeping documentation up to date becomes something a CI job can handle, not a manual task.

In-Memory Graph Data

The draw command has always been useful for producing image files, but getting the graph data into memory — say, to pass to an AI model or process programmatically — meant going through the filesystem first.

8.0 adds support for returning draw output directly in memory instead of always writing to a file. Any supported format — including SVG, PNG, DOT, and the new raw format — can now be returned directly to the caller. The raw format returns the Graph object itself, while formats like DOT or SVG may be more useful when you want to manipulate either the graph structure or layout information without creating an intermediate file.

The more interesting part: the returned graph includes sync information, so you can traverse it programmatically. Graphs like Shared Tasks can now be scanned in scripts without reimplementing the graph logic yourself.

Automatic Architectures on Demand

Understand has a solid collection of architecture plugins — copyright and license scanning, git author analysis, dependency pattern detection. Useful stuff. But if you wanted to use one of those architectures inside your own plugin, you either had to bundle the algorithm yourself or ask the user to enable the architecture manually before running your script.

8.0 lets you create automatic architectures on demand from the Python API. Your script can trigger the architecture it needs without any setup steps from the user.

Built-in Documentation for Graphs, Reports, and Architectures

Previously, figuring out what graphs were available and what options they accepted meant opening the GUI, navigating to the graph, and reverse-engineering an option string from what you saw. Not great if you’re working headlessly.

8.0 adds programmatic documentation for graphs, reports, and automatic architectures. You can list available graphs, query their options, and — importantly — edit the Options object directly and pass it into draw without constructing a format string by hand. Same pattern works for reports and architectures.

Improved Web Documentation

The Python API docs have been reorganized. The global sidebar now groups plugin-only classes separately from the general API, so you’re not hunting through Violation vs CheckViolation to figure out which one you actually need. (The rename to ViolationContext for plugin-context classes, covered below, helps clarify this further.)

More code snippets and inline examples are included throughout. Check it out.


Breaking Changes

The new features required some API reshaping. If you have existing scripts, a few things may need updating. Full details are in the support article, but here’s the summary.

understand.Metric.list now returns Metric objects instead of strings. Metric.description(id) and Metric.name(id) are gone; use Metric.lookup(id).description() and Metric.lookup(id).name() instead. Code that passes understand.Metric.list() into ent.metric() will still run, but the dictionary keys in the result will be Metric instances rather than ID strings, so any downstream code using those keys may need updating.

Plugin-context classes have been renamed. Classes that are only available when passed into a plugin script now end in Context to make the distinction clearer:

  • understand.Graph → understand.GraphContext
  • understand.IReport → understand.ReportContext
  • understand.AutomaticArch → understand.AutomaticArchContext
  • understand.MetricId → understand.MetricContext
  • understand.Check → understand.CheckContext
  • understand.CheckViolation → understand.ViolationContext

This mostly affects scripts using type annotations, since referring to these classes by name directly isn’t common otherwise.

"begin" reference queries now return both "Begin" and "Begin Body" references. A new Begin Body reference type was added to make it easier to distinguish body from declaration. If you’re filtering on "begin" references, you may get more results than before.

Learn more about Understand's Features

  • Dependency Graph
    View Dependency Graphs
  • Comply with Standards
  • View Useful Metrics
  • Team Annotations
  • Browse Depenedencies
  • Edit and Refactor

Related

  • AI
  • API
  • Architectures
  • Business
  • Code Comparison
  • Code Comprehension
  • Code Navigation
  • Code Visualization
  • Coding Standards
  • Dependencies
  • Developer Notes
  • DevOps
  • Getting Started
  • Legacy Code
  • Licensing
  • Metrics
  • Platform
  • Plugins
  • Power User Tips
  • Programming Practices
  • Useful Scripts
  • User Stories
  • May 2026
  • December 2025
  • November 2025
  • August 2025
  • June 2025
  • May 2025
  • January 2025
  • December 2024
  • November 2024
  • August 2024
  • June 2024
  • May 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • June 2023
  • April 2023
  • January 2023
  • December 2022
  • November 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

©2026 SciTools Blog | Design: Newspaperly WordPress Theme