Skip to main content

A package for generating UML Class diagrams from Python code

Project description

PDGen

PDGen is a Python library for generating UML diagrams from Python code using PlantUML. It simplifies UML generation by allowing you to annotate your classes and methods directly in your code, and then generates a UML diagram based on these annotations.

Features

  • Simple Annotations: Mark classes and methods to include in your UML diagram using the @include_in_uml decorator.
  • PlantUML Integration: Generates UML diagrams in PlantUML format.
  • Customizable Output: Save your diagram as an image and optionally output the UML text.

Installation

Install PDGen via pip:

pip install pdgen

Quick Start

Here’s how you can use PDGen to generate a UML diagram:

import logging
from pathlib import Path

# Configure logging to see debug output
logging.basicConfig(level=logging.DEBUG)

from pdgen import include_in_uml, generate_diagram

@include_in_uml
class Bike:
    @include_in_uml
    def __init__(self, name: str):
        self.name = name

@include_in_uml
class Car:
    def __init__(self,name: str, make: str, model: str):
        self.name = name
        self.make = make
        self.model = model
    
    def set_name(self, name: str):
        self.name = name
    
    def get_name(self):
        return self.name
    
    @include_in_uml
    def drive(self):
        pass

    @include_in_uml
    def park(self):
        pass


if __name__ == '__main__':
    # Generate a UML diagram
    generate_diagram(Path("diagram_new.png"), Path("diagram_new.txt"))

Output

The above script generates:

  1. diagram_new.png: A UML diagram image.
  2. diagram_new.txt: The PlantUML source text for the diagram.

Example UML Diagram

The generated UML diagram includes the annotated classes and methods:

@startuml
skinparam dpi 600

class Vehicle {
    name: str
}

class Car {
    name: str
    model: str
    make: str
    drive()
    park()
}

Vehicle <|-- Car
@enduml

API Reference

@include_in_uml

A decorator used to mark classes or methods for inclusion in the UML diagram.

generate_diagram(output_path: Path, uml_text_path: Path)

Generates a UML diagram and optionally saves the PlantUML source.

  • output_path: Path to save the generated UML diagram (e.g., PNG format).
  • uml_text_path: Path to save the PlantUML source text.

Logging

PDGen uses Python's logging module to output debug information. You can configure the logging level in your script for better insights into the generation process.

import logging
logging.basicConfig(level=logging.DEBUG)

Contributing

Contributions are welcome!

License

This project is licensed under the MIT License. See the LICENSE file for details.

Links

Project details


Download files

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

Source Distribution

pdgen-0.3.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

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

pdgen-0.3.0-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file pdgen-0.3.0.tar.gz.

File metadata

  • Download URL: pdgen-0.3.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Windows/11

File hashes

Hashes for pdgen-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a0a17f7d7dc8778d5ebcfa753264d99c3d7b9909d8e5516a9dfd2158a1660c6c
MD5 6cf5aa5779999609d20cbf076ffc913c
BLAKE2b-256 6a7d3af95290de883e20c3d59588d130d42521deeedc7a2fba923d64ae0af7f9

See more details on using hashes here.

File details

Details for the file pdgen-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: pdgen-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Windows/11

File hashes

Hashes for pdgen-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a1b3748f93afc43e43cbf069441218aadcf0a39aec437ad9c23f259c6c3c8f8
MD5 b36b9165f80a24a9606af789cf18d060
BLAKE2b-256 67f7348aa6b91b54b24f0b184139a45fffd33a5e49801c354d8649e3f1368744

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page