Skip to main content

Bauklotz

A Python-based tool for software architecture analysis and visualization.

Overview

Bauklotz is a framework for building and executing analysis pipelines that process software project structures. It is designed to help software architects analyze codebases through configurable filters and generate various reports and visualizations.

Features

  • Pipeline-based architecture analysis
  • Configurable filters for analyzing Python projects
  • Multiple report formats (CSV, YAML, UML diagrams, C4 diagrams, Treemaps)
  • Graph-based visualization of class hierarchies and dependency networks
  • C4 model extraction from docstring annotations
  • Extensible filter and report system
  • Plugin system for custom filters and reports
  • Fact contract validation: static pre-run check that every filter's required facts are provided by upstream filters

Installation

pip install bauklotz

Usage

  1. Create a configuration file describing your analysis pipeline:
channel input

filter builtin.python.project:PythonProjectFilter project
filter builtin.python.structure:PythonClassHierarchyFilter hierarchy
    internal_modules: "your_module"

# External filter example
filter external.metrics:ComplexityFilter complexity
    threshold: 10

report builtin.writer.uml:ClassDiagramWriter classdiagram
   path: "output/classdiagram.uml"

input -> project -> hierarchy -> complexity -> classdiagram
  1. Run the analysis:
bauklotz config.bauklotz <project_dir> input --extension external

Configuration

The pipeline is configured using a simple DSL that defines:

  • Input channels
  • Filters for processing (both built-in and external)
  • Reports for output generation
  • Connections between components

Syntax Notes

A few DSL conventions that aren't obvious from the example above:

  • Argument names always end with a colon, e.g. threshold: (the colon is stripped from the parsed name).
  • A value prefixed with @ is treated as a file path, e.g. path: @output/summary.csv; relative paths are resolved relative to the config file's directory.
  • Numeric argument values (e.g. threshold: 10) are always parsed as floating point numbers internally.
  • # starts a comment that runs to the end of the line; a # inside a "quoted string" is treated as a literal character, not a comment.

Plugin System

Bauklotz supports external filters and reports through its plugin system. Custom filters can be added by:

  1. Creating a Python module with filter implementations
  2. Registering the module with Bauklotz
  3. Referencing the custom filters in your configuration using external.module:FilterName syntax

Core Components

  • Pipe: Base interface for pipeline construction and execution
  • Filter: Processes items in the pipeline
  • Report: Generates output in various formats

Output Formats

  • CSV reports
  • YAML summaries
  • UML class diagrams
  • Graph formats (GML)
  • C4 architecture diagrams (PlantUML)
  • Interactive Treemaps (HTML)

Documentation

For detailed documentation, please visit the project repository.

License

BSD3

Download files

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

Source Distribution

bauklotz-2.3.2.tar.gz (69.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bauklotz-2.3.2-py3-none-any.whl (97.1 kB view details)

Uploaded Python 3

File details

Details for the file bauklotz-2.3.2.tar.gz.

File metadata

  • Download URL: bauklotz-2.3.2.tar.gz
  • Upload date:
  • Size: 69.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.7 Linux/5.15.154+

File hashes

Hashes for bauklotz-2.3.2.tar.gz
Algorithm Hash digest
SHA256 666a2fed0c1f507fbbb094b61f9b89da9f3fa704e8aa3cdc1d3e726d7c298c36
MD5 a6af2b361baa866411f4343ea80c050c
BLAKE2b-256 3f6aa5c81b69c6a47f4f8d90928e572156b2cf5a50144455a0adffda708c3af8

See more details on using hashes here.

File details

Details for the file bauklotz-2.3.2-py3-none-any.whl.

File metadata

  • Download URL: bauklotz-2.3.2-py3-none-any.whl
  • Upload date:
  • Size: 97.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.7 Linux/5.15.154+

File hashes

Hashes for bauklotz-2.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e4c477348c9ec336ac0c998b845f38c5b79e5a076135beee396ecec8278170a2
MD5 05816d2112fe0e1a340f656ad327da72
BLAKE2b-256 9b325de9cb58d6f119797e9bfef106023f3e07c20f38ed2494ed48e7aad4e465

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.3.2 This release

2 files

2.3.1

2 files

2.3.0

2 files

2.2.1

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

2.0.2

2 files

1.0.3

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page