Metadata-Version: 2.4
Name: umlextensions
Version: 0.6.0
Summary: Plugins for umldiagrammer
Author-email: "Humberto A. Sanchez II" <Humberto.A.Sanchez.II@gmail.com>
Maintainer-email: "Humberto A. Sanchez II" <Humberto.A.Sanchez.II@gmail.com>
License-Expression: AGPL-1.0-or-later
Project-URL: Repository, https://github.com/hasii2011/umlextensions
Keywords: umldiagrammer,graphical,uml shapes,python
Classifier: Programming Language :: Python
Classifier: Intended Audience :: Developers
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: wxPython~=4.2.4
Requires-Dist: codeallybasic>=1.30.1
Requires-Dist: codeallyadvanced>=2.3.0
Requires-Dist: umlmodel>=3.4.0
Requires-Dist: umlshapes>=2.1.0
Requires-Dist: umlio>=0.7.0
Requires-Dist: antlr4-python3-runtime==4.13.2
Requires-Dist: Pypubsub==4.0.7
Requires-Dist: pyorthogonalrouting==2.0.0
Requires-Dist: orthogonal==1.3.2
Requires-Dist: pyforcedirectedlayout>=2.0.0
Provides-Extra: test
Requires-Dist: mypy==1.17.1; extra == "test"
Requires-Dist: mypy-extensions==1.1.0; extra == "test"
Requires-Dist: types-Deprecated==1.2.15.20250304; extra == "test"
Requires-Dist: html-testRunner~=1.2.1; extra == "test"
Provides-Extra: deploy
Requires-Dist: wheel==0.45.1; extra == "deploy"
Requires-Dist: setuptools==80.9.0; extra == "deploy"
Requires-Dist: twine==6.1.0; extra == "deploy"
Requires-Dist: build==1.3.0; extra == "deploy"
Requires-Dist: pkginfo==1.12.1.2; extra == "deploy"
Dynamic: license-file

![](https://github.com/hasii2011/code-ally-basic/blob/master/developer/agpl-license-web-badge-version-2-256x48.png "AGPL")

[![CircleCI](https://dl.circleci.com/status-badge/img/gh/hasii2011/umlextensions/tree/master.svg?style=shield)](https://dl.circleci.com/status-badge/redirect/gh/hasii2011/umlextensions/tree/master)
[![Build Status](https://app.travis-ci.com/hasii2011/umlextensions.svg?token=xLRFkv8yzJS4p9oSFs49&branch=master)](https://app.travis-ci.com/hasii2011/umlextensions)
[![PyPI version](https://badge.fury.io/py/umlextensions.svg)](https://badge.fury.io/py/umlextensions)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity)

[![forthebadge made-with-python](http://ForTheBadge.com/images/badges/made-with-python.svg)](https://www.python.org/)

# Introduction
This project is a library for generating UML diagrams from Python source code, and it includes a demonstration application.

# Overview

The `umlextensions` module provides a flexible way to add capabilities to the core UML Diagrammer.  There are extensions that read external data and convert it to a UML class diagram.  An example, is the `InputPython` extension that reads Python source code and generates an appropriate UML Diagram.  There are extensions that take an existing UML diagram and convert it to a different structure format.   For example, the `OutputGML` extension produced [GML](https://grokipedia.com/page/Graph_Modelling_Language) files.

Finally, there are tool extensions that manipulate a UML diagram.  Examples of this are:

-   ToolOrthogonalLayout - Lays out shapes in a manner to minimize link crossings and link bends
-   ToolOrthgonalRouting - Lays out link such that link bends are orthogonal
-   [ToolSugiyama](https://www.linkedin.com/pulse/understanding-sugiyama-framework-sanskar-tyagi-anh3c/) - Lays out shapes and links in a pleasing manner.



# Installation

You can install the project using pip. It is recommended to do this in a virtual environment.

```bash
pip install umlextensions
```

### Dependencies

This project relies on several other packages. `pip` will handle the installation of these dependencies. They are listed here for your reference:

*   wxPython
*   codeallybasic
*   codeallyadvanced
*   umlmodel
*   umlshapes
*   umlio
*   antlr4-python3-runtime
*   PyPubSub

# Usage

The primary way to use this project is as a library within a larger application. However, a demonstration application is included to showcase the functionality.

### Running the Demo Application

To run the demo application, follow these steps:

1.  **Clone the repository (if you haven't already):**
    ```bash
    git clone https://github.com/hasii2011/umlextensions.git
    cd umlextensions
    ```

2.  **Install dependencies (it is recommended to use a virtual environment):**
    ```bash
    pip install -e .
    ```

3.  **Run the demo application:**
    ```bash
    python tests/extensiondemo/ExtensionDemoApp.py
    ```
    This will open a window titled "Demo UML Extensions".

### Generating a UML Diagram

1.  In the "Demo UML Extensions" window, navigate to the menu bar and click **Extensions -> Input -> Python File(s)**.

2.  A file dialog will appear, allowing you to select one or more Python files. Select the files you want to include in your UML diagram and click **Open**.

3.  After parsing the files, a dialog titled "Shape Layout Parameters" may appear, allowing you to adjust the layout of the UML shapes. You can accept the defaults or modify them as needed and click **OK**.

4.  The application will then generate and display the UML class diagram based on the Python code in the selected files.

### As a Library

The project is designed to be used as a library. The `umlextensions` package can be imported into your own `wxPython` application. The `ExtensionsManager` class is the main entry point for discovering and running extensions. You can integrate it into your application by providing an implementation of the `IExtensionsFacade`.
___
Written by Humberto A. Sanchez II <mailto@Humberto.A.Sanchez.II@gmail.com>, (C) 2025

# Note
For all kind of problems, requests, enhancements, bug reports, etc., please drop me an e-mail.

------
![Humberto's Modified Logo](https://raw.githubusercontent.com/wiki/hasii2011/gittodoistclone/images/SillyGitHub.png)

I am concerned about GitHub's Copilot project

I urge you to read about the
[Give up GitHub](https://GiveUpGitHub.org) campaign from[the Software Freedom Conservancy](https://sfconservancy.org).

While I do not advocate for all the issues listed there I do not like that a company like Microsoft may profit from open source projects.

I continue to use GitHub because it offers the services I need for free.  But, I continue to monitor their terms of service.

Any use of this project's code by GitHub Copilot, past or present, is done without my permission.  I do not consent to GitHub's use of this project's code in Copilot.
