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
- 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
- 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:
- Creating a Python module with filter implementations
- Registering the module with Bauklotz
- Referencing the custom filters in your configuration using
external.module:FilterNamesyntax
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
Metadata
Release files for bauklotz 2.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| bauklotz-2.3.2.tar.gz | 69.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bauklotz-2.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 166.7 kB
Release files / bauklotz-2.3.2.tar.gz
| Download URL | bauklotz-2.3.2.tar.gz |
|---|---|
| Size | 69.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
666a2fed0c1f507fbbb094b61f9b89da9f3fa704e8aa3cdc1d3e726d7c298c36
|
|
BLAKE2b-256 checksum How to use checksums |
3f6aa5c81b69c6a47f4f8d90928e572156b2cf5a50144455a0adffda708c3af8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.14.7 Linux/5.15.154+
|
Release files / bauklotz-2.3.2-py3-none-any.whl
| Download URL | bauklotz-2.3.2-py3-none-any.whl |
|---|---|
| Size | 97.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e4c477348c9ec336ac0c998b845f38c5b79e5a076135beee396ecec8278170a2
|
|
BLAKE2b-256 checksum How to use checksums |
9b325de9cb58d6f119797e9bfef106023f3e07c20f38ed2494ed48e7aad4e465
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.14.7 Linux/5.15.154+
|
Security for bauklotz 2.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.