Metadata-Version: 2.4
Name: bauklotz
Version: 2.1.2
Summary: 
License: BSD3
License-File: LICENSE
Keywords: software-architecture,static-analysis,code-analysis,visualization,uml,class-diagram,pipeline,architecture-analysis,plugin-system,python-ast,graph-visualization,metrics,code-quality,documentation-generator,dependency-analysis
Author: voidpointercast
Author-email: voidpointercast@justmail.de
Maintainer: voidpointercast
Maintainer-email: voidpointercast@justmail.de
Requires-Python: >=3.12, !=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, !=3.7.*, !=3.8.*, !=3.9.*, !=3.10.*, !=3.11.*
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: BSD License
Classifier: License :: Other/Proprietary License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Documentation
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: Documentation
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Typing :: Typed
Requires-Dist: asteval (>=1.0.8,<2.0.0)
Requires-Dist: choreographer (>=1.2.1,<2.0.0)
Requires-Dist: dacite (>=1.9.2,<2.0.0)
Requires-Dist: flatten-dict (>=0.4.2,<0.5.0)
Requires-Dist: iniconfig (>=2.3.0,<3.0.0)
Requires-Dist: jinja2 (>=3.1.6,<4.0.0)
Requires-Dist: kaleido (>=1.2.0,<2.0.0)
Requires-Dist: lark (>=1.3.1,<2.0.0)
Requires-Dist: logistro (>=2.0.1,<3.0.0)
Requires-Dist: loguru (>=0.7.3,<0.8.0)
Requires-Dist: markupsafe (>=3.0.3,<4.0.0)
Requires-Dist: more-itertools (>=10.8.0,<11.0.0)
Requires-Dist: narwhals (>=2.15.0,<3.0.0)
Requires-Dist: networkx (>=3.6.1,<4.0.0)
Requires-Dist: numpy (>=2.4.1,<3.0.0)
Requires-Dist: orjson (>=3.11.5,<4.0.0)
Requires-Dist: packaging (>=26.0,<27.0)
Requires-Dist: pandas (>=3.0.0,<4.0.0)
Requires-Dist: plotly (>=6.5.2,<7.0.0)
Requires-Dist: pluggy (>=1.6.0,<2.0.0)
Requires-Dist: pygments (>=2.19.2,<3.0.0)
Requires-Dist: pytest (>=9.0.2,<10.0.0)
Requires-Dist: pytest-timeout (>=2.4.0,<3.0.0)
Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
Requires-Dist: pytz (>=2025.2,<2026.0)
Requires-Dist: pyyaml (>=6.0.3,<7.0.0)
Requires-Dist: simplejson (>=3.20.2,<4.0.0)
Requires-Dist: six (>=1.17.0,<2.0.0)
Requires-Dist: stdlib-list (>=0.12.0,<0.13.0)
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
Requires-Dist: toolz (>=1.1.0,<2.0.0)
Requires-Dist: tzdata (>=2025.3,<2026.0)
Project-URL: Documentation, https://bauklotz.readthedocs.io/
Project-URL: Repository, https://gitlab.com/patrick.daniel.gress/bauklotz
Description-Content-Type: text/markdown

# 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

## Installation

```bash
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
```

2. Run the analysis:

```bash
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

### 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](https://gitlab.com/patrick.daniel.gress/bauklotz).

## License

BSD3
