Merge branch 'master' into master

pull/963/head
Filipe Oliveira 3 weeks ago committed by GitHub
commit 71695c4cee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -394,3 +394,17 @@ The following import changes:
### Added ### Added
- Support kubernetes diagrams: [3eda1cb](https://github.com/mingrammer/diagrams/commit/3eda1cb6bca8be8a55773d90b93483a8fab3e0f1) - Support kubernetes diagrams: [3eda1cb](https://github.com/mingrammer/diagrams/commit/3eda1cb6bca8be8a55773d90b93483a8fab3e0f1)
## v0.23.5
### Breaking Changes
The following import changes:
#### OCI
| Old import path | New import path |
| -------------------------------------------------------------------| --------------------------------------------------------------|
| `from diagrams.oci.connectivity import CustomerPremiseWhite` | `from diagrams.oci.connectivity import CustomerPremisesWhite` |
| `from diagrams.oci.connectivity import CustomerPremises` | `from diagrams.oci.connectivity import CustomerPremises` |

@ -5,14 +5,14 @@ yourself.
## Set up your environment ## Set up your environment
* See [DEVELOPMENT][DEVELOPMENT.md] - See [DEVELOPMENT][DEVELOPMENT.md]
## Resources ## Resources
### Update nodes ### Update nodes
All node classes was auto-generated from image resource files. For example, the All node classes are auto-generated from image resource files. For example, the
`diagram.aws.compute.EC2` class was auto-generated based on `diagram.aws.compute.EC2` class is auto-generated based on the
`resources/aws/compute/ec2.png` image resource file. `resources/aws/compute/ec2.png` image resource file.
So, if you want to add new node resources or update existing node resources, you So, if you want to add new node resources or update existing node resources, you
@ -30,13 +30,13 @@ ffmpeg -i my_big_image.jpg -vf scale=w=256:h=256:force_original_aspect_ratio=dec
Then just run the `./autogen.sh` to generate the added or updated node classes. (cf. [DEVELOPMENT][DEVELOPMENT.md]) Then just run the `./autogen.sh` to generate the added or updated node classes. (cf. [DEVELOPMENT][DEVELOPMENT.md])
> IMPORTANT NOTE: To run `autogen.sh`, you need [round][round], [black][black] and > IMPORTANT NOTE: To run `autogen.sh`, you need the [round][round], [black][black] and
> [inkscape][inkscape] command lines that are used for cleaning the image > [inkscape][inkscape] command line tools that are used for cleaning the image
> resource filenames and formatting the generated python code. > resource filenames and formatting the generated python code.
> >
> macOS users can download the inkscape via Homebrew. > macOS users can download inkscape via Homebrew.
> >
> Or you should use the docker image. > Or you can use the docker image.
[DEVELOPMENT.md]: ./DEVELOPMENT.md [DEVELOPMENT.md]: ./DEVELOPMENT.md
[round]: https://github.com/mingrammer/round [round]: https://github.com/mingrammer/round
@ -54,11 +54,13 @@ or update the `ALIASES` map in [config.py](config.py).
Then just run the `./autogen.sh` to generate the added or updated aliases. (cf. [DEVELOPMENT][DEVELOPMENT.md]) Then just run the `./autogen.sh` to generate the added or updated aliases. (cf. [DEVELOPMENT][DEVELOPMENT.md])
> IMPORTANT NOTE: To run `autogen.sh`, you need [round][round] and > IMPORTANT NOTE: To run `autogen.sh`, you need the [round][round] and
> [inkscape][inkscape] command lines that are used for cleaning the image > [inkscape][inkscape] command line tools that are used for cleaning the image
> resource filenames. > resource filenames.
> >
> Or you should use the docker image. > macOS users can download inkscape via Homebrew.
>
> Or you can use the docker image.
## Run Tests ## Run Tests

@ -39,7 +39,7 @@ You should have docker installed in your system, if not click [here](https://doc
## Mac local development setup ## Mac local development setup
To be able to develop and run diagrams locally on you Mac device, you should have [Python](https://www.python.org/downloads/), [Go](https://golang.org/doc/install) and [brew](https://brew.sh/) installed on your system. To be able to develop and run diagrams locally on you Mac device, you should have [Python](https://www.python.org/downloads/), [Go](https://golang.org/doc/install), and [brew](https://brew.sh/) installed on your system.
1. Go to diagrams root directory. 1. Go to diagrams root directory.
@ -74,4 +74,4 @@ To be able to develop and run diagrams locally on you Mac device, you should hav
./autogen.sh ./autogen.sh
``` ```
7. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development. 7. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.

@ -13,7 +13,7 @@
**Diagram as Code**. **Diagram as Code**.
Diagrams lets you draw the cloud system architecture **in Python code**. It was born for **prototyping** a new system architecture design without any design tools. You can also describe or visualize the existing system architecture as well. Diagrams currently supports main major providers including: `AWS`, `Azure`, `GCP`, `Kubernetes`, `Alibaba Cloud`, `Oracle Cloud` etc... It also supports `On-Premise` nodes, `SaaS` and major `Programming` frameworks and languages. Diagrams lets you draw the cloud system architecture **in Python code**. It was born for **prototyping** a new system architecture design without any design tools. You can also describe or visualize the existing system architecture as well. Diagrams currently supports main major providers including: `AWS`, `Azure`, `GCP`, `Kubernetes`, `Alibaba Cloud`, `Oracle Cloud` etc... It also supports `On-Premises` nodes, `SaaS` and major `Programming` frameworks and languages.
**Diagram as Code** also allows you to **track** the architecture diagram changes in any **version control** system. **Diagram as Code** also allows you to **track** the architecture diagram changes in any **version control** system.
@ -33,7 +33,7 @@ Diagrams lets you draw the cloud system architecture **in Python code**. It was
![digital ocean provider](https://img.shields.io/badge/DigitalOcean-0080ff?logo=digitalocean&color=0080ff) ![digital ocean provider](https://img.shields.io/badge/DigitalOcean-0080ff?logo=digitalocean&color=0080ff)
![elastic provider](https://img.shields.io/badge/Elastic-orange?logo=elastic&color=005571) ![elastic provider](https://img.shields.io/badge/Elastic-orange?logo=elastic&color=005571)
![outscale provider](https://img.shields.io/badge/OutScale-orange?color=5f87bf) ![outscale provider](https://img.shields.io/badge/OutScale-orange?color=5f87bf)
![on premise provider](https://img.shields.io/badge/OnPremise-orange?color=5f87bf) ![on premises provider](https://img.shields.io/badge/OnPremises-orange?color=5f87bf)
![generic provider](https://img.shields.io/badge/Generic-orange?color=5f87bf) ![generic provider](https://img.shields.io/badge/Generic-orange?color=5f87bf)
![programming provider](https://img.shields.io/badge/Programming-orange?color=5f87bf) ![programming provider](https://img.shields.io/badge/Programming-orange?color=5f87bf)
![saas provider](https://img.shields.io/badge/SaaS-orange?color=5f87bf) ![saas provider](https://img.shields.io/badge/SaaS-orange?color=5f87bf)
@ -64,7 +64,7 @@ You can start with [quick start](https://diagrams.mingrammer.com/docs/getting-st
| Event Processing | Stateful Architecture | Advanced Web Service | | Event Processing | Stateful Architecture | Advanced Web Service |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ![event processing](https://diagrams.mingrammer.com/img/event_processing_diagram.png) | ![stateful architecture](https://diagrams.mingrammer.com/img/stateful_architecture_diagram.png) | ![advanced web service with on-premise](https://diagrams.mingrammer.com/img/advanced_web_service_with_on-premise.png) | | ![event processing](https://diagrams.mingrammer.com/img/event_processing_diagram.png) | ![stateful architecture](https://diagrams.mingrammer.com/img/stateful_architecture_diagram.png) | ![advanced web service with on-premises](https://diagrams.mingrammer.com/img/advanced_web_service_with_on-premises.png) |
You can find all the examples on the [examples](https://diagrams.mingrammer.com/docs/getting-started/examples) page. You can find all the examples on the [examples](https://diagrams.mingrammer.com/docs/getting-started/examples) page.

@ -82,7 +82,7 @@ class Diagram:
filename: str = "", filename: str = "",
direction: str = "LR", direction: str = "LR",
curvestyle: str = "ortho", curvestyle: str = "ortho",
outformat: str = "png", outformat: str | list[str] = "png",
autolabel: bool = False, autolabel: bool = False,
show: bool = True, show: bool = True,
strict: bool = False, strict: bool = False,

@ -8,6 +8,10 @@ class _Analytics(_AWS):
_icon_dir = "resources/aws/analytics" _icon_dir = "resources/aws/analytics"
class AmazonOpensearchService(_Analytics):
_icon = "amazon-opensearch-service.png"
class Analytics(_Analytics): class Analytics(_Analytics):
_icon = "analytics.png" _icon = "analytics.png"

@ -20,6 +20,10 @@ class Cloud9(_Devtools):
_icon = "cloud9.png" _icon = "cloud9.png"
class Codeartifact(_Devtools):
_icon = "codeartifact.png"
class Codebuild(_Devtools): class Codebuild(_Devtools):
_icon = "codebuild.png" _icon = "codebuild.png"

@ -8,6 +8,22 @@ class _Management(_AWS):
_icon_dir = "resources/aws/management" _icon_dir = "resources/aws/management"
class AmazonDevopsGuru(_Management):
_icon = "amazon-devops-guru.png"
class AmazonManagedGrafana(_Management):
_icon = "amazon-managed-grafana.png"
class AmazonManagedPrometheus(_Management):
_icon = "amazon-managed-prometheus.png"
class AmazonManagedWorkflowsApacheAirflow(_Management):
_icon = "amazon-managed-workflows-apache-airflow.png"
class AutoScaling(_Management): class AutoScaling(_Management):
_icon = "auto-scaling.png" _icon = "auto-scaling.png"
@ -140,10 +156,18 @@ class PersonalHealthDashboard(_Management):
_icon = "personal-health-dashboard.png" _icon = "personal-health-dashboard.png"
class Proton(_Management):
_icon = "proton.png"
class ServiceCatalog(_Management): class ServiceCatalog(_Management):
_icon = "service-catalog.png" _icon = "service-catalog.png"
class SystemsManagerAppConfig(_Management):
_icon = "systems-manager-app-config.png"
class SystemsManagerAutomation(_Management): class SystemsManagerAutomation(_Management):
_icon = "systems-manager-automation.png" _icon = "systems-manager-automation.png"

@ -84,6 +84,10 @@ class NATGateway(_Network):
_icon = "nat-gateway.png" _icon = "nat-gateway.png"
class NetworkFirewall(_Network):
_icon = "network-firewall.png"
class NetworkingAndContentDelivery(_Network): class NetworkingAndContentDelivery(_Network):
_icon = "networking-and-content-delivery.png" _icon = "networking-and-content-delivery.png"

@ -0,0 +1,27 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.
from . import _Azure
class _Monitor(_Azure):
_type = "monitor"
_icon_dir = "resources/azure/monitor"
class ChangeAnalysis(_Monitor):
_icon = "change-analysis.png"
class Logs(_Monitor):
_icon = "logs.png"
class Metrics(_Monitor):
_icon = "metrics.png"
class Monitor(_Monitor):
_icon = "monitor.png"
# Aliases

@ -1,6 +1,7 @@
""" """
A set of nodes and edges to visualize software architecture using the C4 model. A set of nodes and edges to visualize software architecture using the C4 model.
""" """
import html import html
import textwrap import textwrap
from diagrams import Cluster, Node, Edge from diagrams import Cluster, Node, Edge

@ -32,12 +32,12 @@ class CustomerDatacntrWhite(_Connectivity):
_icon = "customer-datacntr-white.png" _icon = "customer-datacntr-white.png"
class CustomerPremiseWhite(_Connectivity): class CustomerPremisesWhite(_Connectivity):
_icon = "customer-premise-white.png" _icon = "customer-premises-white.png"
class CustomerPremise(_Connectivity): class CustomerPremises(_Connectivity):
_icon = "customer-premise.png" _icon = "customer-premises.png"
class DisconnectedRegionsWhite(_Connectivity): class DisconnectedRegionsWhite(_Connectivity):

@ -1,5 +1,5 @@
""" """
OnPrem provides a set of general on-premise services. OnPrem provides a set of general on-premises services.
""" """
from diagrams import Node from diagrams import Node

@ -16,6 +16,10 @@ class Backbone(_Framework):
_icon = "backbone.png" _icon = "backbone.png"
class Camel(_Framework):
_icon = "camel.png"
class Django(_Framework): class Django(_Framework):
_icon = "django.png" _icon = "django.png"
@ -44,6 +48,14 @@ class Graphql(_Framework):
_icon = "graphql.png" _icon = "graphql.png"
class Hibernate(_Framework):
_icon = "hibernate.png"
class Jhipster(_Framework):
_icon = "jhipster.png"
class Laravel(_Framework): class Laravel(_Framework):
_icon = "laravel.png" _icon = "laravel.png"
@ -94,3 +106,4 @@ FastAPI = Fastapi
GraphQL = Graphql GraphQL = Graphql
DotNet = Dotnet DotNet = Dotnet
NextJs = Nextjs NextJs = Nextjs
JHipster = Jhipster

@ -170,7 +170,7 @@ with Diagram("Stateful Architecture", show=False):
![stateful architecture diagram](/img/stateful_architecture_diagram.png) ![stateful architecture diagram](/img/stateful_architecture_diagram.png)
## Advanced Web Service with On-Premise ## Advanced Web Service with On-Premises
```python ```python
from diagrams import Cluster, Diagram from diagrams import Cluster, Diagram
@ -183,7 +183,7 @@ from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka from diagrams.onprem.queue import Kafka
with Diagram("Advanced Web Service with On-Premise", show=False): with Diagram("Advanced Web Service with On-Premises", show=False):
ingress = Nginx("ingress") ingress = Nginx("ingress")
metrics = Prometheus("metric") metrics = Prometheus("metric")

@ -3,11 +3,13 @@ id: installation
title: Installation title: Installation
--- ---
It requires **Python 3.6** or higher, check your Python version first. **diagrams** requires **Python 3.7** or higher, check your Python version first.
It uses [Graphviz](https://www.graphviz.org/) to render the diagram, so you need to [install Graphviz](https://graphviz.gitlab.io/download/) to use **diagrams**. After installing graphviz (or already have it), install the **diagrams**. **diagrams** uses [Graphviz](https://www.graphviz.org/) to render the diagram, so you need to [install Graphviz](https://graphviz.gitlab.io/download/) to use it.
> macOS users can download the Graphviz via `brew install graphviz` if you're using [Homebrew](https://brew.sh). Similarly, Windows users with [Chocolatey](https://chocolatey.org) installed can run `choco install graphviz`. > macOS users using [Homebrew](https://brew.sh) can install Graphviz via `brew install graphviz` . Similarly, Windows users with [Chocolatey](https://chocolatey.org) installed can run `choco install graphviz`.
After installing Graphviz (or if you already have it), install **diagrams**:
```shell ```shell
# using pip (pip3) # using pip (pip3)
@ -33,16 +35,18 @@ with Diagram("Web Service", show=False):
ELB("lb") >> EC2("web") >> RDS("userdb") ELB("lb") >> EC2("web") >> RDS("userdb")
``` ```
This code generates below diagram. To generate the diagram, run:
```shell ```shell
$ python diagram.py $ python diagram.py
``` ```
This generates the diagram below:
![web service diagram](/img/web_service_diagram.png) ![web service diagram](/img/web_service_diagram.png)
It will be saved as `web_service.png` on your working directory. It will be saved as `web_service.png` in your working directory.
## Next ## Next
See more [Examples](/docs/getting-started/examples) or see [Guides](/docs/guides/diagram) page for more details. See more [Examples](/docs/getting-started/examples) or see the [Guides](/docs/guides/diagram) page for more details.

@ -3,13 +3,13 @@ id: cluster
title: Clusters title: Clusters
--- ---
Cluster allows you group (or clustering) the nodes in an isolated group. `Cluster` allows you to group (or cluster) nodes in an isolated group.
## Basic ## Basic
Cluster represents a local cluster context. `Cluster` represents a local cluster context.
You can create a cluster context with Cluster class. And you can also connect the nodes in a cluster to other nodes outside a cluster. You can create a cluster context using the `Cluster` class. You can also connect the nodes in a cluster to other nodes outside a cluster.
```python ```python
from diagrams import Cluster, Diagram from diagrams import Cluster, Diagram
@ -33,7 +33,7 @@ with Diagram("Simple Web Service with DB Cluster", show=False):
## Nested Clusters ## Nested Clusters
Nested clustering is also possible. Nested clustering is also possible:
```python ```python
from diagrams import Cluster, Diagram from diagrams import Cluster, Diagram
@ -68,4 +68,4 @@ with Diagram("Event Processing", show=False):
![event processing diagram](/img/event_processing_diagram.png) ![event processing diagram](/img/event_processing_diagram.png)
> There is no depth limit of nesting. Feel free to create nested clusters as deep as you want. > There is no depth limit to nesting. Feel free to create nested clusters as deep as you want.

@ -3,13 +3,13 @@ id: diagram
title: Diagrams title: Diagrams
--- ---
Diagram is a primary object representing a diagram. `Diagram` is a primary object representing a diagram.
## Basic ## Basic
Diagram represents a global diagram context. `Diagram` represents a global diagram context.
You can create a diagram context with Diagram class. The first parameter of Diagram constructor will be used for output filename. You can create a diagram context with the `Diagram` class. The first parameter of the `Diagram` constructor will be used to generate the output filename.
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -19,17 +19,17 @@ with Diagram("Simple Diagram"):
EC2("web") EC2("web")
``` ```
And if you run the above script with below command, If you run the above script with the command below,
```shell ```shell
$ python diagram.py $ python diagram.py
``` ```
It will generate an image file with single `EC2` node drawn as `simple_diagram.png` on your working directory, and open that created image file immediately. it will generate an image file with single `EC2` node drawn as `simple_diagram.png` in your working directory and open that created image file immediately.
## Jupyter Notebooks ## Jupyter Notebooks
Diagrams can be also rendered directly inside the notebook as like this: Diagrams can also be rendered directly inside Jupyter notebooks like this:
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -42,9 +42,9 @@ diag
## Options ## Options
You can specify the output file format with `outformat` parameter. Default is **png**. You can specify the output file format with the `outformat` parameter. The default is **png**.
> (png, jpg, svg, pdf and dot) are allowed. > Allowed formats are: png, jpg, svg, pdf, and dot
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -54,7 +54,7 @@ with Diagram("Simple Diagram", outformat="jpg"):
EC2("web") EC2("web")
``` ```
The `outformat` parameter also support list to output all the defined output in one call. The `outformat` parameter also supports a list to output all the defined outputs in one call:
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -64,7 +64,7 @@ with Diagram("Simple Diagram Multi Output", outformat=["jpg", "png", "dot"]):
EC2("web") EC2("web")
``` ```
You can specify the output filename with `filename` parameter. The extension shouldn't be included, it's determined by the `outformat` parameter. You can specify the output filename with the `filename` parameter. The extension shouldn't be included, it's determined by the `outformat` parameter.
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -74,7 +74,7 @@ with Diagram("Simple Diagram", filename="my_diagram"):
EC2("web") EC2("web")
``` ```
You can also disable the automatic file opening by setting the `show` parameter as **false**. Default is **true**. You can also disable the automatic file opening by setting the `show` parameter to **false**. The default is **true**.
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -84,7 +84,7 @@ with Diagram("Simple Diagram", show=False):
EC2("web") EC2("web")
``` ```
It allows custom Graphviz dot attributes options. Diagrams also allow custom Graphviz dot attributes options.
> `graph_attr`, `node_attr` and `edge_attr` are supported. Here is a [reference link](https://www.graphviz.org/doc/info/attrs.html). > `graph_attr`, `node_attr` and `edge_attr` are supported. Here is a [reference link](https://www.graphviz.org/doc/info/attrs.html).

@ -3,13 +3,13 @@ id: edge
title: Edges title: Edges
--- ---
Edge is representing an edge between Nodes. `Edge` represents an edge between nodes.
## Basic ## Basic
Edge is an object representing a connection between Nodes with some additional properties. `Edge` is an object representing a connection between nodes with some additional properties.
An edge object contains three attributes: **label**, **color** and **style** which mirror corresponding graphviz edge attributes. An edge object contains three attributes: **label**, **color**, and **style**. They mirror the corresponding Graphviz edge attributes.
```python ```python
from diagrams import Cluster, Diagram, Edge from diagrams import Cluster, Diagram, Edge
@ -22,7 +22,7 @@ from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka from diagrams.onprem.queue import Kafka
with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False): with Diagram(name="Advanced Web Service with On-Premises (colored)", show=False):
ingress = Nginx("ingress") ingress = Nginx("ingress")
metrics = Prometheus("metric") metrics = Prometheus("metric")
@ -66,4 +66,4 @@ with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False):
>> aggregator >> aggregator
``` ```
![advanced web service with on-premise diagram colored](/img/advanced_web_service_with_on-premise_colored.png) ![advanced web service with on-premises diagram colored](/img/advanced_web_service_with_on-premises_colored.png)

@ -3,11 +3,11 @@ id: node
title: Nodes title: Nodes
--- ---
Node is a second object representing a node or system component. `Node` is an object representing a node or system component.
## Basic ## Basic
Node is an abstract concept that represents a single system component object. `Node` is an abstract concept that represents a single system component object.
A node object consists of three parts: **provider**, **resource type** and **name**. You may already have seen each part in the previous example. A node object consists of three parts: **provider**, **resource type** and **name**. You may already have seen each part in the previous example.
@ -19,9 +19,9 @@ with Diagram("Simple Diagram"):
EC2("web") EC2("web")
``` ```
In above example, the `EC2` is a node of `compute` resource type which provided by `aws` provider. In the example above, the `EC2` is a node of resource type `compute` which is provided by the `aws` provider.
You can use other node objects in a similar manner like: You can use other node objects in a similar manner:
```python ```python
# aws resources # aws resources
@ -42,7 +42,7 @@ from diagrams.alibabacloud.storage import ObjectTableStore
# gcp resources # gcp resources
from diagrams.gcp.compute import AppEngine, GKE from diagrams.gcp.compute import AppEngine, GKE
from diagrams.gcp.ml import AutoML from diagrams.gcp.ml import AutoML
... ...
# k8s resources # k8s resources
@ -57,15 +57,17 @@ from diagrams.oci.network import Firewall
from diagrams.oci.storage import FileStorage, StorageGateway from diagrams.oci.storage import FileStorage, StorageGateway
``` ```
You can find all available nodes list in [Here](https://diagrams.mingrammer.com/docs/nodes/aws). You can find lists of all available nodes for each provider in the sidebar on the left.
For example, [here](https://diagrams.mingrammer.com/docs/nodes/aws) is the list of all available AWS nodes.
## Data Flow ## Data Flow
You can represent data flow by connecting the nodes with these operators: `>>`, `<<` and `-`. You can represent data flow by connecting the nodes with the operators `>>`, `<<`, and `-`.
* **>>**: Connect nodes in left to right direction. - **>>** connects nodes in left to right direction.
* **<<**: Connect nodes in right to left direction. - **<<** connects nodes in right to left direction.
* **-**: Connect nodes in no direction. Undirected. - **-** connects nodes in no direction. Undirected.
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -80,15 +82,15 @@ with Diagram("Web Services", show=False):
(ELB("lb") >> EC2("web")) - EC2("web") >> RDS("userdb") (ELB("lb") >> EC2("web")) - EC2("web") >> RDS("userdb")
``` ```
> Be careful when using the `-` and any shift operators together, which could cause unexpected results due to operator precedence. > Be careful when using `-` and any shift operators together. It can cause unexpected results due to Python's operator precedence, so you might have to use parentheses.
![web services diagram](/img/web_services_diagram.png) ![web services diagram](/img/web_services_diagram.png)
> The order of rendered diagrams is the reverse of the declaration order. > The order of rendered diagrams is the reverse of the declaration order.
You can change the data flow direction with `direction` parameter. Default is **LR**. You can change the data flow direction with the `direction` parameter. The default is **LR**.
> (TB, BT, LR and RL) are allowed. > Allowed values are: TB, BT, LR, and RL
```python ```python
from diagrams import Diagram from diagrams import Diagram
@ -110,7 +112,7 @@ with Diagram("Workers", show=False, direction="TB"):
## Group Data Flow ## Group Data Flow
Above worker example has too many redundant flows. In this case, you can group nodes into a list so that all nodes are connected to other nodes at once. The above worker example has too many redundant flows. To avoid this, you can group nodes into a list so that all nodes are connected to other nodes at once:
```python ```python
from diagrams import Diagram from diagrams import Diagram

@ -3,7 +3,7 @@ id: alibabacloud
title: AlibabaCloud title: AlibabaCloud
--- ---
Node classes list of alibabacloud provider. Node classes list of the alibabacloud provider.
## alibabacloud.analytics ## alibabacloud.analytics

@ -3,11 +3,14 @@ id: aws
title: AWS title: AWS
--- ---
Node classes list of aws provider. Node classes list of the aws provider.
## aws.analytics ## aws.analytics
<img width="30" src="/img/resources/aws/analytics/amazon-opensearch-service.png" alt="AmazonOpensearchService" style="float: left; padding-right: 5px;" >
**diagrams.aws.analytics.AmazonOpensearchService**
<img width="30" src="/img/resources/aws/analytics/analytics.png" alt="Analytics" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/analytics/analytics.png" alt="Analytics" style="float: left; padding-right: 5px;" >
**diagrams.aws.analytics.Analytics** **diagrams.aws.analytics.Analytics**
@ -389,6 +392,9 @@ Node classes list of aws provider.
<img width="30" src="/img/resources/aws/devtools/cloud9.png" alt="Cloud9" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/devtools/cloud9.png" alt="Cloud9" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Cloud9** **diagrams.aws.devtools.Cloud9**
<img width="30" src="/img/resources/aws/devtools/codeartifact.png" alt="Codeartifact" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Codeartifact**
<img width="30" src="/img/resources/aws/devtools/codebuild.png" alt="Codebuild" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/devtools/codebuild.png" alt="Codebuild" style="float: left; padding-right: 5px;" >
**diagrams.aws.devtools.Codebuild** **diagrams.aws.devtools.Codebuild**
@ -800,6 +806,18 @@ Node classes list of aws provider.
## aws.management ## aws.management
<img width="30" src="/img/resources/aws/management/amazon-devops-guru.png" alt="AmazonDevopsGuru" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AmazonDevopsGuru**
<img width="30" src="/img/resources/aws/management/amazon-managed-grafana.png" alt="AmazonManagedGrafana" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AmazonManagedGrafana**
<img width="30" src="/img/resources/aws/management/amazon-managed-prometheus.png" alt="AmazonManagedPrometheus" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AmazonManagedPrometheus**
<img width="30" src="/img/resources/aws/management/amazon-managed-workflows-apache-airflow.png" alt="AmazonManagedWorkflowsApacheAirflow" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AmazonManagedWorkflowsApacheAirflow**
<img width="30" src="/img/resources/aws/management/auto-scaling.png" alt="AutoScaling" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/management/auto-scaling.png" alt="AutoScaling" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.AutoScaling** **diagrams.aws.management.AutoScaling**
@ -899,9 +917,15 @@ Node classes list of aws provider.
<img width="30" src="/img/resources/aws/management/personal-health-dashboard.png" alt="PersonalHealthDashboard" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/management/personal-health-dashboard.png" alt="PersonalHealthDashboard" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.PersonalHealthDashboard** **diagrams.aws.management.PersonalHealthDashboard**
<img width="30" src="/img/resources/aws/management/proton.png" alt="Proton" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.Proton**
<img width="30" src="/img/resources/aws/management/service-catalog.png" alt="ServiceCatalog" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/management/service-catalog.png" alt="ServiceCatalog" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.ServiceCatalog** **diagrams.aws.management.ServiceCatalog**
<img width="30" src="/img/resources/aws/management/systems-manager-app-config.png" alt="SystemsManagerAppConfig" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.SystemsManagerAppConfig**
<img width="30" src="/img/resources/aws/management/systems-manager-automation.png" alt="SystemsManagerAutomation" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/management/systems-manager-automation.png" alt="SystemsManagerAutomation" style="float: left; padding-right: 5px;" >
**diagrams.aws.management.SystemsManagerAutomation** **diagrams.aws.management.SystemsManagerAutomation**
@ -1205,6 +1229,9 @@ Node classes list of aws provider.
<img width="30" src="/img/resources/aws/network/nat-gateway.png" alt="NATGateway" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/network/nat-gateway.png" alt="NATGateway" style="float: left; padding-right: 5px;" >
**diagrams.aws.network.NATGateway** **diagrams.aws.network.NATGateway**
<img width="30" src="/img/resources/aws/network/network-firewall.png" alt="NetworkFirewall" style="float: left; padding-right: 5px;" >
**diagrams.aws.network.NetworkFirewall**
<img width="30" src="/img/resources/aws/network/networking-and-content-delivery.png" alt="NetworkingAndContentDelivery" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/aws/network/networking-and-content-delivery.png" alt="NetworkingAndContentDelivery" style="float: left; padding-right: 5px;" >
**diagrams.aws.network.NetworkingAndContentDelivery** **diagrams.aws.network.NetworkingAndContentDelivery**

@ -3,7 +3,7 @@ id: azure
title: Azure title: Azure
--- ---
Node classes list of azure provider. Node classes list of the azure provider.
## azure.analytics ## azure.analytics
@ -524,6 +524,21 @@ Node classes list of azure provider.
<img width="30" src="/img/resources/azure/mobile/notification-hubs.png" alt="NotificationHubs" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/azure/mobile/notification-hubs.png" alt="NotificationHubs" style="float: left; padding-right: 5px;" >
**diagrams.azure.mobile.NotificationHubs** **diagrams.azure.mobile.NotificationHubs**
## azure.monitor
<img width="30" src="/img/resources/azure/monitor/change-analysis.png" alt="ChangeAnalysis" style="float: left; padding-right: 5px;" >
**diagrams.azure.monitor.ChangeAnalysis**
<img width="30" src="/img/resources/azure/monitor/logs.png" alt="Logs" style="float: left; padding-right: 5px;" >
**diagrams.azure.monitor.Logs**
<img width="30" src="/img/resources/azure/monitor/metrics.png" alt="Metrics" style="float: left; padding-right: 5px;" >
**diagrams.azure.monitor.Metrics**
<img width="30" src="/img/resources/azure/monitor/monitor.png" alt="Monitor" style="float: left; padding-right: 5px;" >
**diagrams.azure.monitor.Monitor**
## azure.network ## azure.network

@ -3,7 +3,7 @@ id: digitalocean
title: DigitalOcean title: DigitalOcean
--- ---
Node classes list of digitalocean provider. Node classes list of the digitalocean provider.
## digitalocean.compute ## digitalocean.compute

@ -3,7 +3,7 @@ id: elastic
title: Elastic title: Elastic
--- ---
Node classes list of elastic provider. Node classes list of the elastic provider.
## elastic.agent ## elastic.agent

@ -3,7 +3,7 @@ id: firebase
title: Firebase title: Firebase
--- ---
Node classes list of firebase provider. Node classes list of the firebase provider.
## firebase.base ## firebase.base

@ -3,7 +3,7 @@ id: gcp
title: GCP title: GCP
--- ---
Node classes list of gcp provider. Node classes list of the gcp provider.
## gcp.analytics ## gcp.analytics

@ -3,7 +3,7 @@ id: generic
title: Generic title: Generic
--- ---
Node classes list of generic provider. Node classes list of the generic provider.
## generic.blank ## generic.blank

@ -3,7 +3,7 @@ id: ibm
title: IBM title: IBM
--- ---
Node classes list of ibm provider. Node classes list of the ibm provider.
## ibm.analytics ## ibm.analytics

@ -3,7 +3,7 @@ id: k8s
title: K8S title: K8S
--- ---
Node classes list of k8s provider. Node classes list of the k8s provider.
## k8s.chaos ## k8s.chaos

@ -3,7 +3,7 @@ id: oci
title: OCI title: OCI
--- ---
Node classes list of oci provider. Node classes list of the oci provider.
## oci.compute ## oci.compute
@ -77,11 +77,11 @@ Node classes list of oci provider.
<img width="30" src="/img/resources/oci/connectivity/customer-datacntr-white.png" alt="CustomerDatacntrWhite" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/oci/connectivity/customer-datacntr-white.png" alt="CustomerDatacntrWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.CustomerDatacntrWhite** **diagrams.oci.connectivity.CustomerDatacntrWhite**
<img width="30" src="/img/resources/oci/connectivity/customer-premise-white.png" alt="CustomerPremiseWhite" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/oci/connectivity/customer-premises-white.png" alt="CustomerPremisesWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.CustomerPremiseWhite** **diagrams.oci.connectivity.CustomerPremisesWhite**
<img width="30" src="/img/resources/oci/connectivity/customer-premise.png" alt="CustomerPremise" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/oci/connectivity/customer-premises.png" alt="CustomerPremises" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.CustomerPremise** **diagrams.oci.connectivity.CustomerPremises**
<img width="30" src="/img/resources/oci/connectivity/disconnected-regions-white.png" alt="DisconnectedRegionsWhite" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/oci/connectivity/disconnected-regions-white.png" alt="DisconnectedRegionsWhite" style="float: left; padding-right: 5px;" >
**diagrams.oci.connectivity.DisconnectedRegionsWhite** **diagrams.oci.connectivity.DisconnectedRegionsWhite**

@ -3,7 +3,7 @@ id: onprem
title: OnPrem title: OnPrem
--- ---
Node classes list of onprem provider. Node classes list of the onprem provider.
## onprem.aggregator ## onprem.aggregator

@ -3,7 +3,7 @@ id: openstack
title: OpenStack title: OpenStack
--- ---
Node classes list of openstack provider. Node classes list of the openstack provider.
## openstack.apiproxies ## openstack.apiproxies

@ -3,7 +3,7 @@ id: outscale
title: Outscale title: Outscale
--- ---
Node classes list of outscale provider. Node classes list of the outscale provider.
## outscale.compute ## outscale.compute

@ -3,7 +3,7 @@ id: programming
title: Programming title: Programming
--- ---
Node classes list of programming provider. Node classes list of the programming provider.
## programming.flowchart ## programming.flowchart
@ -89,6 +89,9 @@ Node classes list of programming provider.
<img width="30" src="/img/resources/programming/framework/backbone.png" alt="Backbone" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/programming/framework/backbone.png" alt="Backbone" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Backbone** **diagrams.programming.framework.Backbone**
<img width="30" src="/img/resources/programming/framework/camel.png" alt="Camel" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Camel**
<img width="30" src="/img/resources/programming/framework/django.png" alt="Django" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/programming/framework/django.png" alt="Django" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Django** **diagrams.programming.framework.Django**
@ -110,6 +113,12 @@ Node classes list of programming provider.
<img width="30" src="/img/resources/programming/framework/graphql.png" alt="Graphql" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/programming/framework/graphql.png" alt="Graphql" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Graphql**, **GraphQL** (alias) **diagrams.programming.framework.Graphql**, **GraphQL** (alias)
<img width="30" src="/img/resources/programming/framework/hibernate.png" alt="Hibernate" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Hibernate**
<img width="30" src="/img/resources/programming/framework/jhipster.png" alt="Jhipster" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Jhipster**, **JHipster** (alias)
<img width="30" src="/img/resources/programming/framework/laravel.png" alt="Laravel" style="float: left; padding-right: 5px;" > <img width="30" src="/img/resources/programming/framework/laravel.png" alt="Laravel" style="float: left; padding-right: 5px;" >
**diagrams.programming.framework.Laravel** **diagrams.programming.framework.Laravel**

@ -3,7 +3,7 @@ id: saas
title: Saas title: Saas
--- ---
Node classes list of saas provider. Node classes list of the saas provider.
## saas.alerting ## saas.alerting

33
poetry.lock generated

@ -1,10 +1,9 @@
# This file is automatically @generated by Poetry and should not be changed by hand. # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
[[package]] [[package]]
name = "astroid" name = "astroid"
version = "2.9.0" version = "2.9.0"
description = "An abstract syntax tree for Python with inference support." description = "An abstract syntax tree for Python with inference support."
category = "dev"
optional = false optional = false
python-versions = "~=3.6" python-versions = "~=3.6"
files = [ files = [
@ -23,7 +22,6 @@ wrapt = ">=1.11,<1.14"
name = "black" name = "black"
version = "22.12.0" version = "22.12.0"
description = "The uncompromising code formatter." description = "The uncompromising code formatter."
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -60,7 +58,6 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "click" name = "click"
version = "8.1.3" version = "8.1.3"
description = "Composable command line interface toolkit" description = "Composable command line interface toolkit"
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -76,7 +73,6 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
name = "colorama" name = "colorama"
version = "0.4.3" version = "0.4.3"
description = "Cross-platform colored terminal text." description = "Cross-platform colored terminal text."
category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [ files = [
@ -88,7 +84,6 @@ files = [
name = "exceptiongroup" name = "exceptiongroup"
version = "1.1.0" version = "1.1.0"
description = "Backport of PEP 654 (exception groups)" description = "Backport of PEP 654 (exception groups)"
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -103,7 +98,6 @@ test = ["pytest (>=6)"]
name = "graphviz" name = "graphviz"
version = "0.20.1" version = "0.20.1"
description = "Simple Python interface for Graphviz" description = "Simple Python interface for Graphviz"
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -120,7 +114,6 @@ test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>=
name = "importlib-metadata" name = "importlib-metadata"
version = "1.5.0" version = "1.5.0"
description = "Read metadata from Python packages" description = "Read metadata from Python packages"
category = "dev"
optional = false optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [ files = [
@ -139,7 +132,6 @@ testing = ["importlib-resources", "packaging"]
name = "iniconfig" name = "iniconfig"
version = "1.1.1" version = "1.1.1"
description = "iniconfig: brain-dead simple config-ini parsing" description = "iniconfig: brain-dead simple config-ini parsing"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -151,7 +143,6 @@ files = [
name = "isort" name = "isort"
version = "4.3.21" version = "4.3.21"
description = "A Python utility / library to sort Python imports." description = "A Python utility / library to sort Python imports."
category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [ files = [
@ -169,7 +160,6 @@ xdg-home = ["appdirs (>=1.4.0)"]
name = "jinja2" name = "jinja2"
version = "3.1.2" version = "3.1.2"
description = "A very fast and expressive template engine." description = "A very fast and expressive template engine."
category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -187,7 +177,6 @@ i18n = ["Babel (>=2.7)"]
name = "lazy-object-proxy" name = "lazy-object-proxy"
version = "1.4.3" version = "1.4.3"
description = "A fast and thorough lazy object proxy." description = "A fast and thorough lazy object proxy."
category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [ files = [
@ -218,7 +207,6 @@ files = [
name = "markupsafe" name = "markupsafe"
version = "2.0.1" version = "2.0.1"
description = "Safely add untrusted strings to HTML/XML markup." description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -297,7 +285,6 @@ files = [
name = "mccabe" name = "mccabe"
version = "0.6.1" version = "0.6.1"
description = "McCabe checker, plugin for flake8" description = "McCabe checker, plugin for flake8"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -309,7 +296,6 @@ files = [
name = "mypy-extensions" name = "mypy-extensions"
version = "0.4.3" version = "0.4.3"
description = "Experimental type system extensions for programs checked with the mypy typechecker." description = "Experimental type system extensions for programs checked with the mypy typechecker."
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -321,7 +307,6 @@ files = [
name = "packaging" name = "packaging"
version = "20.8" version = "20.8"
description = "Core utilities for Python packages" description = "Core utilities for Python packages"
category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [ files = [
@ -336,7 +321,6 @@ pyparsing = ">=2.0.2"
name = "pathspec" name = "pathspec"
version = "0.10.1" version = "0.10.1"
description = "Utility library for gitignore style pattern matching of file paths." description = "Utility library for gitignore style pattern matching of file paths."
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -348,7 +332,6 @@ files = [
name = "platformdirs" name = "platformdirs"
version = "2.4.0" version = "2.4.0"
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -364,7 +347,6 @@ test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock
name = "pluggy" name = "pluggy"
version = "0.13.1" version = "0.13.1"
description = "plugin and hook calling mechanisms for python" description = "plugin and hook calling mechanisms for python"
category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [ files = [
@ -382,7 +364,6 @@ dev = ["pre-commit", "tox"]
name = "pylint" name = "pylint"
version = "2.12.0" version = "2.12.0"
description = "python code static checker" description = "python code static checker"
category = "dev"
optional = false optional = false
python-versions = "~=3.6" python-versions = "~=3.6"
files = [ files = [
@ -403,7 +384,6 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""
name = "pyparsing" name = "pyparsing"
version = "2.4.7" version = "2.4.7"
description = "Python parsing module" description = "Python parsing module"
category = "dev"
optional = false optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [ files = [
@ -415,7 +395,6 @@ files = [
name = "pytest" name = "pytest"
version = "7.3.0" version = "7.3.0"
description = "pytest: simple powerful testing with Python" description = "pytest: simple powerful testing with Python"
category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
@ -439,7 +418,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
name = "rope" name = "rope"
version = "0.14.0" version = "0.14.0"
description = "a python refactoring library..." description = "a python refactoring library..."
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -452,7 +430,6 @@ files = [
name = "setuptools" name = "setuptools"
version = "59.6.0" version = "59.6.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages" description = "Easily download, build, install, upgrade, and uninstall Python packages"
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -468,7 +445,6 @@ testing = ["flake8-2020", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock"
name = "toml" name = "toml"
version = "0.10.0" version = "0.10.0"
description = "Python Library for Tom's Obvious, Minimal Language" description = "Python Library for Tom's Obvious, Minimal Language"
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -480,7 +456,6 @@ files = [
name = "tomli" name = "tomli"
version = "1.2.3" version = "1.2.3"
description = "A lil' TOML parser" description = "A lil' TOML parser"
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -492,7 +467,6 @@ files = [
name = "typed-ast" name = "typed-ast"
version = "1.5.4" version = "1.5.4"
description = "a fork of Python 2 and 3 ast modules with type comment support" description = "a fork of Python 2 and 3 ast modules with type comment support"
category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -526,7 +500,6 @@ files = [
name = "typing-extensions" name = "typing-extensions"
version = "4.1.1" version = "4.1.1"
description = "Backported and Experimental Type Hints for Python 3.6+" description = "Backported and Experimental Type Hints for Python 3.6+"
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -538,7 +511,6 @@ files = [
name = "wrapt" name = "wrapt"
version = "1.11.2" version = "1.11.2"
description = "Module for decorators, wrappers and monkey patching." description = "Module for decorators, wrappers and monkey patching."
category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
@ -549,7 +521,6 @@ files = [
name = "zipp" name = "zipp"
version = "3.1.0" version = "3.1.0"
description = "Backport of pathlib-compatible object wrapper for zip files" description = "Backport of pathlib-compatible object wrapper for zip files"
category = "dev"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
@ -564,4 +535,4 @@ testing = ["func-timeout", "jaraco.itertools"]
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.7" python-versions = "^3.7"
content-hash = "5c2b82d1c8a6a283f63558fc693271f42fdcaeab73616713eb9b38b0b59787fc" content-hash = "eab830dc3befbc19bb7c149e48641763ce360963d948395e4e3083143e4e71a8"

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@ -4,7 +4,7 @@ from pathlib import Path
import config as cfg import config as cfg
def base_dir() -> str: def base_dir() -> Path:
return Path(os.path.abspath(os.path.dirname(__file__))).parent return Path(os.path.abspath(os.path.dirname(__file__))).parent

@ -3,7 +3,7 @@ id: {{ pvd }}
title: {{ pvd|up_or_title(pvd) }} title: {{ pvd|up_or_title(pvd) }}
--- ---
Node classes list of {{ pvd }} provider. Node classes list of the {{ pvd }} provider.
{% for typ, classes in typ_classes.items() %} {% for typ, classes in typ_classes.items() %}
## {{ pvd }}.{{ typ }} ## {{ pvd }}.{{ typ }}
{% for class in classes %} {% for class in classes %}

@ -106,7 +106,7 @@ class Index extends React.Component {
`Diagram as Code` allows you to **track** the architecture diagram changes in any **version control** system. `Diagram as Code` allows you to **track** the architecture diagram changes in any **version control** system.
</MarkdownBlock> </MarkdownBlock>
<MarkdownBlock> <MarkdownBlock>
Diagrams currently supports main major providers including: `AWS`, `Azure`, `GCP`, `Kubernetes`, `Alibaba Cloud`, `Oracle Cloud` etc... It also supports `On-Premise` nodes, `SaaS` and major `Programming` frameworks and languages. Diagrams currently supports main major providers including: `AWS`, `Azure`, `GCP`, `Kubernetes`, `Alibaba Cloud`, `Oracle Cloud` etc... It also supports `On-Premises` nodes, `SaaS` and major `Programming` frameworks and languages.
</MarkdownBlock> </MarkdownBlock>
<MarkdownBlock> <MarkdownBlock>
`NOTE: It does not control any actual cloud resources nor does it generate cloud formation or terraform code. It is just for drawing the cloud system architecture diagrams.` `NOTE: It does not control any actual cloud resources nor does it generate cloud formation or terraform code. It is just for drawing the cloud system architecture diagrams.`

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Loading…
Cancel
Save