# plantuml-sequence
Create PlantUML sequence charts programmatically from Python
The basic example of the [PlantUML Documentation](https://plantuml.com/sequence-diagram) can be implemented with the
following Python script:
``` python
from plantuml_sequence import Diagram
with open("my-diagram.puml", "w") as file, Diagram(file) as sequence:
(
sequence.message("Alice", "Bob", "Authentication Request")
.message("Bob", "Alice", "Authentication Response", arrow_style="-->")
.blank_line()
.message("Alice", "Bob", "Another authentication Request")
.message("Alice", "Bob", "Another authentication Response", arrow_style="<--")
)
```
Its output inside *my-diagram.puml* is:
``` puml
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml
```
This file be compiled to an image using the `plantuml` command-line or a online server. See the
[PlantUML documentation](https://plantuml.com/starting) for more details.
---
**[Read the documentation on ReadTheDocs!](https://plantuml-sequence.readthedocs.io/)**
---
## Installation and supported Python versions
```sh
pip install plantuml-sequence
```
Python 3.10+ is supported
## Supported PlantUML features
Not all of the features of message sequence charts are supported yet. See the list of implemented features below.
### General
* [x] Use *teoz* renderer
### Participants
* [x] Declaring participants
* [ ] Multiline participants
* [ ] Create participant with message
* [x] Lifeline activation / deactivation
* [ ] Lifeline auto-activate
* [x] Participants encompass (Box around participants)
* [x] Remove foot boxes
### Messages
* [x] Messages
* [x] Basic `autonumber` message numbering
* [ ] Advanced auto numbering
* [ ] `autonumber` formats
* [ ] `autonumber` sequence increments
* [x] Hide unlinked participants
* [ ] Mainframe
### Notes
* [x] Different note shapes (`note`, `hnote`, `rnote`)
* [x] Notes on messages
* [x] Notes over / left / right of lifelines
* [x] Notes across all participants
* [ ] Multiple notes at the same level
### Flow
* [ ] Basic message grouping
* [ ] `alt` / `else` groups
* [x] Divider
* [ ] Reference
* [x] Delay
* [x] Space
### Styling
* [ ] Colored groups
* [x] Arrow style change
* [x] Standard arrow styles
* [x] Short arrows
* [ ] Slanted arrows
* [ ] Styling changes using the [`skinparam`](https://plantuml.com/skinparam) command
### Preprocessing
> Currently no preprocessing features are planned to be supported
* [ ] Variable definition
* [ ] Boolean expression
* [ ] Conditions
* [ ] While loops
* [ ] Procedures & functions blocks
* [ ] Include directive
* [ ] Memory dump
* [ ] Assertions
Raw data
{
"_id": null,
"home_page": "https://github.com/jonasehrlich/plantuml-sequence",
"name": "plantuml-sequence",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "",
"keywords": "plantuml,charts",
"author": "Jonas Ehrlich",
"author_email": "jonas.ehrlich@gmail.com",
"download_url": "",
"platform": null,
"description": "# plantuml-sequence\n\nCreate PlantUML sequence charts programmatically from Python\n\nThe basic example of the [PlantUML Documentation](https://plantuml.com/sequence-diagram) can be implemented with the\nfollowing Python script:\n\n``` python\nfrom plantuml_sequence import Diagram\n\nwith open(\"my-diagram.puml\", \"w\") as file, Diagram(file) as sequence:\n (\n sequence.message(\"Alice\", \"Bob\", \"Authentication Request\")\n .message(\"Bob\", \"Alice\", \"Authentication Response\", arrow_style=\"-->\")\n .blank_line()\n .message(\"Alice\", \"Bob\", \"Another authentication Request\")\n .message(\"Alice\", \"Bob\", \"Another authentication Response\", arrow_style=\"<--\")\n )\n\n```\n\nIts output inside *my-diagram.puml* is:\n\n``` puml\n@startuml\nAlice -> Bob: Authentication Request\nBob --> Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml\n```\n\nThis file be compiled to an image using the `plantuml` command-line or a online server. See the\n[PlantUML documentation](https://plantuml.com/starting) for more details.\n\n---\n\n**[Read the documentation on ReadTheDocs!](https://plantuml-sequence.readthedocs.io/)**\n\n---\n\n## Installation and supported Python versions\n\n```sh\npip install plantuml-sequence\n```\n\nPython 3.10+ is supported\n\n## Supported PlantUML features\n\nNot all of the features of message sequence charts are supported yet. See the list of implemented features below.\n\n### General\n\n* [x] Use *teoz* renderer\n\n### Participants\n\n* [x] Declaring participants\n* [ ] Multiline participants\n* [ ] Create participant with message\n* [x] Lifeline activation / deactivation\n* [ ] Lifeline auto-activate\n* [x] Participants encompass (Box around participants)\n* [x] Remove foot boxes\n\n### Messages\n\n* [x] Messages\n* [x] Basic `autonumber` message numbering\n* [ ] Advanced auto numbering\n * [ ] `autonumber` formats\n * [ ] `autonumber` sequence increments\n* [x] Hide unlinked participants\n* [ ] Mainframe\n\n### Notes\n\n* [x] Different note shapes (`note`, `hnote`, `rnote`)\n* [x] Notes on messages\n* [x] Notes over / left / right of lifelines\n* [x] Notes across all participants\n* [ ] Multiple notes at the same level\n\n### Flow\n\n* [ ] Basic message grouping\n* [ ] `alt` / `else` groups\n* [x] Divider\n* [ ] Reference\n* [x] Delay\n* [x] Space\n\n### Styling\n\n* [ ] Colored groups\n* [x] Arrow style change\n * [x] Standard arrow styles\n * [x] Short arrows\n* [ ] Slanted arrows\n* [ ] Styling changes using the [`skinparam`](https://plantuml.com/skinparam) command\n\n### Preprocessing\n\n> Currently no preprocessing features are planned to be supported\n\n* [ ] Variable definition\n* [ ] Boolean expression\n* [ ] Conditions\n* [ ] While loops\n* [ ] Procedures & functions blocks\n* [ ] Include directive\n* [ ] Memory dump\n* [ ] Assertions\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Create PlantUML sequence charts programmatically from Python",
"version": "0.3.0",
"split_keywords": [
"plantuml",
"charts"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4014fc95f743585db569e6a078f268eb1aa4ed9b51a10368c6a7501902935789",
"md5": "f800f93fa75bb6e0d3677b940bfb813c",
"sha256": "462f8665df902869681c69eedbcee4816034a48b4c23e8479765fc1e75f84aec"
},
"downloads": -1,
"filename": "plantuml_sequence-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f800f93fa75bb6e0d3677b940bfb813c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 9635,
"upload_time": "2023-04-11T19:50:24",
"upload_time_iso_8601": "2023-04-11T19:50:24.942090Z",
"url": "https://files.pythonhosted.org/packages/40/14/fc95f743585db569e6a078f268eb1aa4ed9b51a10368c6a7501902935789/plantuml_sequence-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-11 19:50:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "jonasehrlich",
"github_project": "plantuml-sequence",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "plantuml-sequence"
}