# Description

Generate modules import graph for python project. Using `plantuml` for render.

# Installation

```shell
pip install arch-blueprint
```

# Usage

Commands
```shell
python arch_blueprint --help
usage: arch_blueprint [-h] [--modules [MODULES ...]] root

Generate component diagrams in plantuml for python applications

positional arguments:
  root                  Name of root python module in project (example: 'myapp'

options:
  -h, --help            show this help message and exit
  --modules [MODULES ...], -m [MODULES ...]
                        Selected modules for rendering (examples: 'myapp.somemodule',
                        'myapp.somemodule.*', 'myapp.somemodule.**')
```

# Examples

Command usage example for `taskiq` lib
```shell
arch_blueprint taskiq -m "taskiq.api.*" "taskiq.cli.*" "taskiq.abc.*" "taskiq.result_backends.*" "taskiq.state" "taskiq.task" "taskiq.brokes.*" > out.puml
```

Example of graph

![Generated Graph](https://img.plantuml. )


```plantuml
@startuml taskiq
!theme amiga

top to bottom direction
hide empty members

class taskiq.api.scheduler <<(M, #1ABC9C)>>

class taskiq.abc.result_backend <<(M, #1ABC9C)>>

class taskiq.abc.cmd <<(M, #1ABC9C)>>

class taskiq.abc.schedule_source <<(M, #1ABC9C)>>

class taskiq.abc.serializer <<(M, #1ABC9C)>>

class taskiq.abc.middleware <<(M, #1ABC9C)>>

class taskiq.cli.worker <<(M, #1ABC9C)>>

class taskiq.state <<(M, #2ECC71)>>

class taskiq.cli.utils <<(M, #1ABC9C)>>

class taskiq.cli.common_args <<(M, #1ABC9C)>>

class taskiq.cli.scheduler <<(M, #1ABC9C)>>

class taskiq.abc.formatter <<(M, #1ABC9C)>>

class taskiq.abc.broker <<(M, #1ABC9C)>>

class taskiq.result_backends.dummy <<(M, #1ABC9C)>>

class taskiq.task <<(M, #2ECC71)>>

class taskiq.cli.watcher <<(M, #1ABC9C)>>

class taskiq.api.receiver <<(M, #1ABC9C)>>
taskiq.result_backends -down-> taskiq.abc
taskiq.cli.worker -down-> taskiq.cli.watcher
taskiq.cli.scheduler -down-> taskiq.cli.common_args
taskiq.cli.scheduler -down-> taskiq.cli.utils
taskiq.abc.broker -down-> taskiq.abc.formatter
taskiq.task -down-> taskiq.abc
taskiq.abc -down-> taskiq.result_backends
taskiq.abc.broker -down-> taskiq.abc.result_backend
taskiq.abc.broker -down-> taskiq.abc.serializer
taskiq.api -down-> taskiq.cli
taskiq.abc.broker -down-> taskiq.abc.middleware
taskiq.cli.worker -down-> taskiq.cli.common_args
taskiq.cli.worker -down-> taskiq.cli.utils
taskiq.abc -down-> taskiq.state
taskiq.api -down-> taskiq.abc
taskiq.cli -down-> taskiq.abc
taskiq.abc.middleware -down-> taskiq.abc.broker
@enduml
```
