Просмотр исходного кода

Merge remote-tracking branch 'upstream/master' into node-as-cluster

pull/823/head
Bruno Meneguello 3 лет назад
Родитель
Сommit
113b17b951
30 измененных файлов: 328 добавлений и 133 удалений
  1. +5
    -1
      autogen.sh
  2. +1
    -0
      config.py
  3. +8
    -0
      diagrams/onprem/analytics.py
  4. +8
    -0
      diagrams/onprem/monitoring.py
  5. +4
    -0
      diagrams/programming/framework.py
  6. +4
    -0
      diagrams/saas/alerting.py
  7. +0
    -1
      diagrams/saas/chat.py
  8. +15
    -0
      diagrams/saas/filesharing.py
  9. +5
    -0
      diagrams/saas/logging.py
  10. +3
    -3
      docs/getting-started/examples.md
  11. +90
    -0
      docs/nodes/custom.md
  12. +4
    -0
      docs/nodes/onprem.md
  13. +1
    -0
      docs/nodes/programming.md
  14. +6
    -0
      docs/nodes/saas.md
  15. +153
    -122
      poetry.lock
  16. +2
    -2
      pyproject.toml
  17. Двоичные данные
      resources/onprem/analytics/presto.png
  18. Двоичные данные
      resources/onprem/analytics/superset.png
  19. Двоичные данные
      resources/onprem/monitoring/humio.png
  20. Двоичные данные
      resources/onprem/monitoring/newrelic.png
  21. Двоичные данные
      resources/programming/framework/micronaut.png
  22. Двоичные данные
      resources/saas/alerting/newrelic.png
  23. Двоичные данные
      resources/saas/filesharing/nextcloud.png
  24. Двоичные данные
      resources/saas/logging/newrelic.png
  25. +7
    -2
      scripts/generate.py
  26. +6
    -0
      templates/apidoc_custom.tmpl
  27. +3
    -0
      website/i18n/en.json
  28. +3
    -2
      website/sidebars.json
  29. Двоичные данные
      website/static/img/custom_local.png
  30. Двоичные данные
      website/static/img/custom_remote.png

+ 5
- 1
autogen.sh Просмотреть файл

@@ -4,7 +4,7 @@ set -e
app_root_dir="diagrams"

# NOTE: azure icon set is not latest version
providers=("onprem" "aws" "azure" "gcp" "firebase" "k8s" "alibabacloud" "oci" "programming" "saas" "elastic" "generic" "openstack" "outscale")
providers=("onprem" "aws" "azure" "gcp" "firebase" "k8s" "alibabacloud" "oci" "programming" "saas" "elastic" "generic" "openstack" "outscale" )

if ! [ -x "$(command -v round)" ]; then
echo 'round is not installed'
@@ -52,6 +52,10 @@ for pvd in "${providers[@]}"; do
python -m scripts.generate "$pvd"
done

# Generate doc for custom module
echo "generating the docs for custom"
python -m scripts.generate "custom"

# run black
echo "linting the all the diagram modules"
black "$app_root_dir"/**/*.py

+ 1
- 0
config.py Просмотреть файл

@@ -402,6 +402,7 @@ ALIASES = {
"saas": {
"logging": {
"Datadog": "DataDog",
"Newrelic": "NewRelic"
}
},
"elastic": {


+ 8
- 0
diagrams/onprem/analytics.py Просмотреть файл

@@ -40,6 +40,10 @@ class Norikra(_Analytics):
_icon = "norikra.png"


class Presto(_Analytics):
_icon = "presto.png"


class Singer(_Analytics):
_icon = "singer.png"

@@ -52,6 +56,10 @@ class Storm(_Analytics):
_icon = "storm.png"


class Superset(_Analytics):
_icon = "superset.png"


class Tableau(_Analytics):
_icon = "tableau.png"



+ 8
- 0
diagrams/onprem/monitoring.py Просмотреть файл

@@ -20,6 +20,14 @@ class Grafana(_Monitoring):
_icon = "grafana.png"


class Humio(_Monitoring):
_icon = "humio.png"


class Newrelic(_Monitoring):
_icon = "newrelic.png"


class PrometheusOperator(_Monitoring):
_icon = "prometheus-operator.png"



+ 4
- 0
diagrams/programming/framework.py Просмотреть файл

@@ -36,6 +36,10 @@ class Laravel(_Framework):
_icon = "laravel.png"


class Micronaut(_Framework):
_icon = "micronaut.png"


class Rails(_Framework):
_icon = "rails.png"



+ 4
- 0
diagrams/saas/alerting.py Просмотреть файл

@@ -8,6 +8,10 @@ class _Alerting(_Saas):
_icon_dir = "resources/saas/alerting"


class Newrelic(_Alerting):
_icon = "newrelic.png"


class Opsgenie(_Alerting):
_icon = "opsgenie.png"



+ 0
- 1
diagrams/saas/chat.py Просмотреть файл

@@ -8,7 +8,6 @@ class _Chat(_Saas):
_icon_dir = "resources/saas/chat"



class Discord(_Chat):
_icon = "discord.png"



+ 15
- 0
diagrams/saas/filesharing.py Просмотреть файл

@@ -0,0 +1,15 @@
# This module is automatically generated by autogen.sh. DO NOT EDIT.

from . import _Saas


class _Filesharing(_Saas):
_type = "filesharing"
_icon_dir = "resources/saas/filesharing"


class Nextcloud(_Filesharing):
_icon = "nextcloud.png"


# Aliases

+ 5
- 0
diagrams/saas/logging.py Просмотреть файл

@@ -12,6 +12,10 @@ class Datadog(_Logging):
_icon = "datadog.png"


class Newrelic(_Logging):
_icon = "newrelic.png"


class Papertrail(_Logging):
_icon = "papertrail.png"

@@ -19,3 +23,4 @@ class Papertrail(_Logging):
# Aliases

DataDog = Datadog
NewRelic = Newrelic

+ 3
- 3
docs/getting-started/examples.md Просмотреть файл

@@ -178,7 +178,7 @@ from diagrams.onprem.analytics import Spark
from diagrams.onprem.compute import Server
from diagrams.onprem.database import PostgreSQL
from diagrams.onprem.inmemory import Redis
from diagrams.onprem.logging import Fluentd
from diagrams.onprem.aggregator import Fluentd
from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka
@@ -221,7 +221,7 @@ from diagrams.onprem.analytics import Spark
from diagrams.onprem.compute import Server
from diagrams.onprem.database import PostgreSQL
from diagrams.onprem.inmemory import Redis
from diagrams.onprem.logging import Fluentd
from diagrams.onprem.aggregator import Fluentd
from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka
@@ -283,4 +283,4 @@ with Diagram("Broker Consumers", show=False):
queue >> consumers >> Aurora("Database")
```

![rabbitmq consumers diagram](/img/rabbitmq_consumers_diagram.png)
![rabbitmq consumers diagram](/img/rabbitmq_consumers_diagram.png)

+ 90
- 0
docs/nodes/custom.md Просмотреть файл

@@ -0,0 +1,90 @@
---
id: custom
title: Custom
---

## Custom with local icons

For this example we use the following architecture:

```
.
├── custom_local.py
├── my_resources
│ ├── cc_heart.black.png
│ ├── cc_attribution.png
│ ├──...
```

The content of custom_local.py file:

```python
from diagrams import Diagram, Cluster
from diagrams.custom import Custom


with Diagram("Custom with local icons\n Can be downloaded here: \nhttps://creativecommons.org/about/downloads/", show=False, filename="custom_local", direction="LR"):
cc_heart = Custom("Creative Commons", "./my_resources/cc_heart.black.png")
cc_attribution = Custom("Credit must be given to the creator", "./my_resources/cc_attribution.png")

cc_sa = Custom("Adaptations must be shared\n under the same terms", "./my_resources/cc_sa.png")
cc_nd = Custom("No derivatives or adaptations\n of the work are permitted", "./my_resources/cc_nd.png")
cc_zero = Custom("Public Domain Dedication", "./my_resources/cc_zero.png")

with Cluster("Non Commercial"):
non_commercial = [Custom("Y", "./my_resources/cc_nc-jp.png") - Custom("E", "./my_resources/cc_nc-eu.png") - Custom("S", "./my_resources/cc_nc.png")]

cc_heart >> cc_attribution
cc_heart >> non_commercial
cc_heart >> cc_sa
cc_heart >> cc_nd
cc_heart >> cc_zero
```

It will generate the following diagram:

![custom local](/img/custom_local.png)


## Custom with remote icons

If your icons are hosted and can be accessed when you generate the diagrams, you can

```python
from diagrams import Diagram, Cluster
from diagrams.custom import Custom
from urllib.request import urlretrieve

with Diagram("Custom with remote icons", show=False, filename="custom_remote", direction="LR"):

# download the icon image file
diagrams_url = "https://github.com/mingrammer/diagrams/raw/master/assets/img/diagrams.png"
diagrams_icon = "diagrams.png"
urlretrieve(diagrams_url, diagrams_icon)

diagrams = Custom("Diagrams", diagrams_icon)

with Cluster("Some Providers"):

openstack_url = "https://github.com/mingrammer/diagrams/raw/master/resources/openstack/openstack.png"
openstack_icon = "openstack.png"
urlretrieve(openstack_url, openstack_icon)

openstack = Custom("OpenStack", openstack_icon)

elastic_url = "https://github.com/mingrammer/diagrams/raw/master/resources/elastic/saas/elastic.png"
elastic_icon = "elastic.png"
urlretrieve(elastic_url, elastic_icon)

elastic = Custom("Elastic", elastic_icon)

diagrams >> openstack
diagrams >> elastic
```

It will generate the following diagram:

![custom local](/img/custom_remote.png)


Another example can be found [Here](https://diagrams.mingrammer.com/docs/getting-started/examples#rabbitmq-consumers-with-custom-nodes).

+ 4
- 0
docs/nodes/onprem.md Просмотреть файл

@@ -20,9 +20,11 @@ Node classes list of onprem provider.
- **diagrams.onprem.analytics.Hive**
- **diagrams.onprem.analytics.Metabase**
- **diagrams.onprem.analytics.Norikra**
- **diagrams.onprem.analytics.Presto**
- **diagrams.onprem.analytics.Singer**
- **diagrams.onprem.analytics.Spark**
- **diagrams.onprem.analytics.Storm**
- **diagrams.onprem.analytics.Superset**
- **diagrams.onprem.analytics.Tableau**

## onprem.auth
@@ -150,6 +152,8 @@ Node classes list of onprem provider.
- **diagrams.onprem.monitoring.Cortex**
- **diagrams.onprem.monitoring.Datadog**
- **diagrams.onprem.monitoring.Grafana**
- **diagrams.onprem.monitoring.Humio**
- **diagrams.onprem.monitoring.Newrelic**
- **diagrams.onprem.monitoring.PrometheusOperator**
- **diagrams.onprem.monitoring.Prometheus**
- **diagrams.onprem.monitoring.Sentry**


+ 1
- 0
docs/nodes/programming.md Просмотреть файл

@@ -14,6 +14,7 @@ Node classes list of programming provider.
- **diagrams.programming.framework.Flask**
- **diagrams.programming.framework.Flutter**
- **diagrams.programming.framework.Laravel**
- **diagrams.programming.framework.Micronaut**
- **diagrams.programming.framework.Rails**
- **diagrams.programming.framework.React**
- **diagrams.programming.framework.Spring**


+ 6
- 0
docs/nodes/saas.md Просмотреть файл

@@ -7,6 +7,7 @@ Node classes list of saas provider.

## saas.alerting

- **diagrams.saas.alerting.Newrelic**
- **diagrams.saas.alerting.Opsgenie**
- **diagrams.saas.alerting.Pushover**

@@ -29,6 +30,10 @@ Node classes list of saas provider.
- **diagrams.saas.chat.Teams**
- **diagrams.saas.chat.Telegram**

## saas.filesharing

- **diagrams.saas.filesharing.Nextcloud**

## saas.identity

- **diagrams.saas.identity.Auth0**
@@ -37,6 +42,7 @@ Node classes list of saas provider.
## saas.logging

- **diagrams.saas.logging.Datadog**, **DataDog** (alias)
- **diagrams.saas.logging.Newrelic**, **NewRelic** (alias)
- **diagrams.saas.logging.Papertrail**

## saas.media


+ 153
- 122
poetry.lock Просмотреть файл

@@ -1,43 +1,40 @@
[[package]]
category = "dev"
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
name = "appdirs"
version = "1.4.3"
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = "*"
version = "1.4.3"

[[package]]
category = "dev"
description = "An abstract syntax tree for Python with inference support."
name = "astroid"
version = "2.3.3"
description = "An abstract syntax tree for Python with inference support."
category = "dev"
optional = false
python-versions = ">=3.5.*"
version = "2.3.3"

[package.dependencies]
lazy-object-proxy = ">=1.4.0,<1.5.0"
six = ">=1.12,<2.0"
typed-ast = {version = ">=1.4.0,<1.5", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""}
wrapt = ">=1.11.0,<1.12.0"

[package.dependencies.typed-ast]
python = "<3.8"
version = ">=1.4.0,<1.5"

[[package]]
category = "dev"
description = "Atomic file writes."
name = "atomicwrites"
version = "1.3.0"
description = "Atomic file writes."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.3.0"

[[package]]
category = "dev"
description = "Classes Without Boilerplate"
name = "attrs"
version = "19.3.0"
description = "Classes Without Boilerplate"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "19.3.0"

[package.extras]
azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"]
@@ -46,12 +43,12 @@ docs = ["sphinx", "zope.interface"]
tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]

[[package]]
category = "dev"
description = "The uncompromising code formatter."
name = "black"
version = "19.10b0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
python-versions = ">=3.6"
version = "19.10b0"

[package.dependencies]
appdirs = "*"
@@ -66,64 +63,60 @@ typed-ast = ">=1.4.0"
d = ["aiohttp (>=3.3.2)", "aiohttp-cors"]

[[package]]
category = "dev"
description = "Composable command line interface toolkit"
name = "click"
version = "7.0"
description = "Composable command line interface toolkit"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "7.0"

[[package]]
category = "dev"
description = "Cross-platform colored terminal text."
marker = "sys_platform == \"win32\""
name = "colorama"
version = "0.4.3"
description = "Cross-platform colored terminal text."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "0.4.3"

[[package]]
category = "main"
description = "PEP 567 Backport"
marker = "python_version >= \"3.6\" and python_version < \"3.7\""
name = "contextvars"
version = "2.4"
description = "PEP 567 Backport"
category = "main"
optional = false
python-versions = "*"
version = "2.4"

[package.dependencies]
immutables = ">=0.9"

[[package]]
category = "main"
description = "Simple Python interface for Graphviz"
name = "graphviz"
version = "0.16"
description = "Simple Python interface for Graphviz"
category = "main"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
version = "0.13.2"
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*"

[package.extras]
dev = ["tox (>=3.0)", "flake8", "pep8-naming", "wheel", "twine"]
docs = ["sphinx (>=1.7)", "sphinx-rtd-theme"]
test = ["mock (>=2)", "pytest (>=3.4,<3.10.0 || >3.10.0)", "pytest-mock (>=1.8)", "pytest-cov"]
dev = ["tox (>=3)", "flake8", "pep8-naming", "wheel", "twine"]
docs = ["sphinx (>=1.8)", "sphinx-rtd-theme"]
test = ["mock (>=3)", "pytest (>=4)", "pytest-mock (>=2)", "pytest-cov"]

[[package]]
category = "main"
description = "Immutable Collections"
marker = "python_version >= \"3.6\" and python_version < \"3.7\""
name = "immutables"
version = "0.11"
description = "Immutable Collections"
category = "main"
optional = false
python-versions = "*"
version = "0.11"

[[package]]
category = "dev"
description = "Read metadata from Python packages"
marker = "python_version < \"3.8\""
name = "importlib-metadata"
version = "1.5.0"
description = "Read metadata from Python packages"
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
version = "1.5.0"

[package.dependencies]
zipp = ">=0.5"
@@ -133,12 +126,20 @@ docs = ["sphinx", "rst.linker"]
testing = ["packaging", "importlib-resources"]

[[package]]
name = "iniconfig"
version = "1.1.1"
description = "iniconfig: brain-dead simple config-ini parsing"
category = "dev"
description = "A Python utility / library to sort Python imports."
optional = false
python-versions = "*"

[[package]]
name = "isort"
version = "4.3.21"
description = "A Python utility / library to sort Python imports."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "4.3.21"

[package.extras]
pipfile = ["pipreqs", "requirementslib"]
@@ -147,12 +148,12 @@ requirements = ["pipreqs", "pip-api"]
xdg_home = ["appdirs (>=1.4.0)"]

[[package]]
category = "main"
description = "A very fast and expressive template engine."
name = "jinja2"
version = "2.11.1"
description = "A very fast and expressive template engine."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "2.11.1"

[package.dependencies]
MarkupSafe = ">=0.23"
@@ -161,165 +162,178 @@ MarkupSafe = ">=0.23"
i18n = ["Babel (>=0.8)"]

[[package]]
category = "dev"
description = "A fast and thorough lazy object proxy."
name = "lazy-object-proxy"
version = "1.4.3"
description = "A fast and thorough lazy object proxy."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.4.3"

[[package]]
category = "main"
description = "Safely add untrusted strings to HTML/XML markup."
name = "markupsafe"
version = "1.1.1"
description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
version = "1.1.1"

[[package]]
category = "dev"
description = "McCabe checker, plugin for flake8"
name = "mccabe"
version = "0.6.1"
description = "McCabe checker, plugin for flake8"
category = "dev"
optional = false
python-versions = "*"
version = "0.6.1"

[[package]]
name = "packaging"
version = "20.8"
description = "Core utilities for Python packages"
category = "dev"
description = "More routines for operating on iterables, beyond itertools"
name = "more-itertools"
optional = false
python-versions = ">=3.5"
version = "8.2.0"
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[package.dependencies]
pyparsing = ">=2.0.2"

[[package]]
category = "dev"
description = "Utility library for gitignore style pattern matching of file paths."
name = "pathspec"
version = "0.7.0"
description = "Utility library for gitignore style pattern matching of file paths."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "0.7.0"

[[package]]
category = "dev"
description = "plugin and hook calling mechanisms for python"
name = "pluggy"
version = "0.13.1"
description = "plugin and hook calling mechanisms for python"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "0.13.1"

[package.dependencies]
[package.dependencies.importlib-metadata]
python = "<3.8"
version = ">=0.12"
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}

[package.extras]
dev = ["pre-commit", "tox"]

[[package]]
category = "dev"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
name = "py"
version = "1.10.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.8.1"

[[package]]
category = "dev"
description = "python code static checker"
name = "pylint"
version = "2.4.4"
description = "python code static checker"
category = "dev"
optional = false
python-versions = ">=3.5.*"
version = "2.4.4"

[package.dependencies]
astroid = ">=2.3.0,<2.4"
colorama = "*"
colorama = {version = "*", markers = "sys_platform == \"win32\""}
isort = ">=4.2.5,<5"
mccabe = ">=0.6,<0.7"

[[package]]
name = "pyparsing"
version = "2.4.7"
description = "Python parsing module"
category = "dev"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"

[[package]]
name = "pytest"
version = "6.2.1"
description = "pytest: simple powerful testing with Python"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "3.10.1"
python-versions = ">=3.6"

[package.dependencies]
atomicwrites = ">=1.0"
attrs = ">=17.4.0"
colorama = "*"
more-itertools = ">=4.0.0"
pluggy = ">=0.7"
py = ">=1.5.0"
setuptools = "*"
six = ">=1.10.0"
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
attrs = ">=19.2.0"
colorama = {version = "*", markers = "sys_platform == \"win32\""}
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
iniconfig = "*"
packaging = "*"
pluggy = ">=0.12,<1.0.0a1"
py = ">=1.8.2"
toml = "*"

[package.extras]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]

[[package]]
category = "dev"
description = "Alternative regular expression module, to replace re."
name = "regex"
version = "2020.2.20"
description = "Alternative regular expression module, to replace re."
category = "dev"
optional = false
python-versions = "*"
version = "2020.2.20"

[[package]]
category = "dev"
description = "a python refactoring library..."
name = "rope"
version = "0.14.0"
description = "a python refactoring library..."
category = "dev"
optional = false
python-versions = "*"
version = "0.14.0"

[[package]]
category = "dev"
description = "Python 2 and 3 compatibility utilities"
name = "six"
version = "1.14.0"
description = "Python 2 and 3 compatibility utilities"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
version = "1.14.0"

[[package]]
category = "dev"
description = "Python Library for Tom's Obvious, Minimal Language"
name = "toml"
version = "0.10.0"
description = "Python Library for Tom's Obvious, Minimal Language"
category = "dev"
optional = false
python-versions = "*"
version = "0.10.0"

[[package]]
category = "dev"
description = "a fork of Python 2 and 3 ast modules with type comment support"
name = "typed-ast"
version = "1.4.1"
description = "a fork of Python 2 and 3 ast modules with type comment support"
category = "dev"
optional = false
python-versions = "*"
version = "1.4.1"

[[package]]
category = "dev"
description = "Module for decorators, wrappers and monkey patching."
name = "wrapt"
version = "1.11.2"
description = "Module for decorators, wrappers and monkey patching."
category = "dev"
optional = false
python-versions = "*"
version = "1.11.2"

[[package]]
category = "dev"
description = "Backport of pathlib-compatible object wrapper for zip files"
marker = "python_version < \"3.8\""
name = "zipp"
version = "3.1.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "dev"
optional = false
python-versions = ">=3.6"
version = "3.1.0"

[package.extras]
docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
testing = ["jaraco.itertools", "func-timeout"]

[metadata]
content-hash = "da205efb5c35ed10116f51854f613a43fe000afa1341828bfd8cf3d6d58c4149"
lock-version = "1.1"
python-versions = "^3.6"
content-hash = "6cb154d248e0d13adbb5229f52d1c1ab9ce2ea9cfe54091cf34cd97ccb822653"

[metadata.files]
appdirs = [
@@ -354,8 +368,8 @@ contextvars = [
{file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"},
]
graphviz = [
{file = "graphviz-0.13.2-py2.py3-none-any.whl", hash = "sha256:241fb099e32b8e8c2acca747211c8237e40c0b89f24b1622860075d59f4c4b25"},
{file = "graphviz-0.13.2.zip", hash = "sha256:60acbeee346e8c14555821eab57dbf68a169e6c10bce40e83c1bf44f63a62a01"},
{file = "graphviz-0.16-py2.py3-none-any.whl", hash = "sha256:3cad5517c961090dfc679df6402a57de62d97703e2880a1a46147bb0dc1639eb"},
{file = "graphviz-0.16.zip", hash = "sha256:d2d25af1c199cad567ce4806f0449cb74eb30cf451fd7597251e1da099ac6e57"},
]
immutables = [
{file = "immutables-0.11-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:bce27277a2fe91509cca69181971ab509c2ee862e8b37b09f26b64f90e8fe8fb"},
@@ -379,6 +393,10 @@ importlib-metadata = [
{file = "importlib_metadata-1.5.0-py2.py3-none-any.whl", hash = "sha256:b97607a1a18a5100839aec1dc26a1ea17ee0d93b20b0f008d80a5a050afb200b"},
{file = "importlib_metadata-1.5.0.tar.gz", hash = "sha256:06f5b3a99029c7134207dd882428a66992a9de2bef7c2b699b5641f9886c3302"},
]
iniconfig = [
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
]
isort = [
{file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"},
{file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"},
@@ -449,9 +467,9 @@ mccabe = [
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
{file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
]
more-itertools = [
{file = "more-itertools-8.2.0.tar.gz", hash = "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507"},
{file = "more_itertools-8.2.0-py3-none-any.whl", hash = "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c"},
packaging = [
{file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"},
{file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"},
]
pathspec = [
{file = "pathspec-0.7.0-py2.py3-none-any.whl", hash = "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424"},
@@ -462,16 +480,20 @@ pluggy = [
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
]
py = [
{file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"},
{file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"},
{file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"},
{file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"},
]
pylint = [
{file = "pylint-2.4.4-py3-none-any.whl", hash = "sha256:886e6afc935ea2590b462664b161ca9a5e40168ea99e5300935f6591ad467df4"},
{file = "pylint-2.4.4.tar.gz", hash = "sha256:3db5468ad013380e987410a8d6956226963aed94ecb5f9d3a28acca6d9ac36cd"},
]
pyparsing = [
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
{file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
]
pytest = [
{file = "pytest-3.10.1-py2.py3-none-any.whl", hash = "sha256:3f193df1cfe1d1609d4c583838bea3d532b18d6160fd3f55c9447fdca30848ec"},
{file = "pytest-3.10.1.tar.gz", hash = "sha256:e246cf173c01169b9617fc07264b7b1316e78d7a650055235d6d897bc80d9660"},
{file = "pytest-6.2.1-py3-none-any.whl", hash = "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8"},
{file = "pytest-6.2.1.tar.gz", hash = "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306"},
]
regex = [
{file = "regex-2020.2.20-cp27-cp27m-win32.whl", hash = "sha256:99272d6b6a68c7ae4391908fc15f6b8c9a6c345a46b632d7fdb7ef6c883a2bbb"},
@@ -518,19 +540,28 @@ typed-ast = [
{file = "typed_ast-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75"},
{file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652"},
{file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"},
{file = "typed_ast-1.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fcf135e17cc74dbfbc05894ebca928ffeb23d9790b3167a674921db19082401f"},
{file = "typed_ast-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1"},
{file = "typed_ast-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa"},
{file = "typed_ast-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614"},
{file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41"},
{file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b"},
{file = "typed_ast-1.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:f208eb7aff048f6bea9586e61af041ddf7f9ade7caed625742af423f6bae3298"},
{file = "typed_ast-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe"},
{file = "typed_ast-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355"},
{file = "typed_ast-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6"},
{file = "typed_ast-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907"},
{file = "typed_ast-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d"},
{file = "typed_ast-1.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7e4c9d7658aaa1fc80018593abdf8598bf91325af6af5cce4ce7c73bc45ea53d"},
{file = "typed_ast-1.4.1-cp38-cp38-win32.whl", hash = "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c"},
{file = "typed_ast-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4"},
{file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"},
{file = "typed_ast-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:92c325624e304ebf0e025d1224b77dd4e6393f18aab8d829b5b7e04afe9b7a2c"},
{file = "typed_ast-1.4.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d648b8e3bf2fe648745c8ffcee3db3ff903d0817a01a12dd6a6ea7a8f4889072"},
{file = "typed_ast-1.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fac11badff8313e23717f3dada86a15389d0708275bddf766cca67a84ead3e91"},
{file = "typed_ast-1.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:0d8110d78a5736e16e26213114a38ca35cb15b6515d535413b090bd50951556d"},
{file = "typed_ast-1.4.1-cp39-cp39-win32.whl", hash = "sha256:b52ccf7cfe4ce2a1064b18594381bccf4179c2ecf7f513134ec2f993dd4ab395"},
{file = "typed_ast-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:3742b32cf1c6ef124d57f95be609c473d7ec4c14d0090e5a5e05a15269fb4d0c"},
{file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"},
]
wrapt = [


+ 2
- 2
pyproject.toml Просмотреть файл

@@ -11,12 +11,12 @@ include = ["resources/**/*"]

[tool.poetry.dependencies]
python = "^3.6"
graphviz = "^0.13.2"
graphviz = ">=0.13.2,<0.17.0"
jinja2 = "^2.10"
contextvars = { version = "^2.4", python = "~3.6" }

[tool.poetry.dev-dependencies]
pytest = "^3.0"
pytest = "^6.2"
pylint = "^2.4"
black = {version = "^19.0", allow-prereleases = true}
rope = "^0.14.0"


Двоичные данные
resources/onprem/analytics/presto.png Просмотреть файл

До После
Ширина: 256  |  Высота: 91  |  Размер: 13 KiB

Двоичные данные
resources/onprem/analytics/superset.png Просмотреть файл

До После
Ширина: 256  |  Высота: 128  |  Размер: 12 KiB

Двоичные данные
resources/onprem/monitoring/humio.png Просмотреть файл

До После
Ширина: 256  |  Высота: 256  |  Размер: 14 KiB

Двоичные данные
resources/onprem/monitoring/newrelic.png Просмотреть файл

До После
Ширина: 256  |  Высота: 208  |  Размер: 25 KiB

Двоичные данные
resources/programming/framework/micronaut.png Просмотреть файл

До После
Ширина: 256  |  Высота: 256  |  Размер: 27 KiB

Двоичные данные
resources/saas/alerting/newrelic.png Просмотреть файл

До После
Ширина: 256  |  Высота: 208  |  Размер: 25 KiB

Двоичные данные
resources/saas/filesharing/nextcloud.png Просмотреть файл

До После
Ширина: 256  |  Высота: 181  |  Размер: 11 KiB

Двоичные данные
resources/saas/logging/newrelic.png Просмотреть файл

До После
Ширина: 256  |  Высота: 208  |  Размер: 25 KiB

+ 7
- 2
scripts/generate.py Просмотреть файл

@@ -2,7 +2,7 @@ import os
import sys
from typing import Iterable

from jinja2 import Environment, FileSystemLoader, Template
from jinja2 import Environment, FileSystemLoader, Template, exceptions

import config as cfg
from . import app_root_dir, doc_root_dir, resource_dir, template_dir
@@ -41,7 +41,12 @@ def gen_classes(pvd: str, typ: str, paths: Iterable[str]) -> str:


def gen_apidoc(pvd: str, typ_paths: dict) -> str:
tmpl = load_tmpl(cfg.TMPL_APIDOC)
try:
default_tmp = cfg.TMPL_APIDOC.split('.')
tmpl_file = f"{default_tmp[0]}_{pvd}.{default_tmp[1]}"
tmpl = load_tmpl(tmpl_file)
except exceptions.TemplateNotFound:
tmpl = load_tmpl(cfg.TMPL_APIDOC)

# TODO: remove
def _gen_class_name(path: str) -> str:


+ 6
- 0
templates/apidoc_custom.tmpl Просмотреть файл

@@ -0,0 +1,6 @@
---
id: {{ pvd }}
title: {{ pvd|up_or_title(pvd) }}
---

For a full example check: [Here](https://diagrams.mingrammer.com/docs/getting-started/examples#rabbitmq-consumers-with-custom-nodes).

+ 3
- 0
website/i18n/en.json Просмотреть файл

@@ -32,6 +32,9 @@
"nodes/azure": {
"title": "Azure"
},
"nodes/custom": {
"title": "Custom"
},
"nodes/elastic": {
"title": "Elastic"
},


+ 3
- 2
website/sidebars.json Просмотреть файл

@@ -24,7 +24,8 @@
"nodes/elastic",
"nodes/generic",
"nodes/programming",
"nodes/saas"
"nodes/saas",
"nodes/custom"
]
}
}
}

Двоичные данные
website/static/img/custom_local.png Просмотреть файл

До После
Ширина: 975  |  Высота: 1706  |  Размер: 115 KiB

Двоичные данные
website/static/img/custom_remote.png Просмотреть файл

До После
Ширина: 747  |  Высота: 912  |  Размер: 34 KiB

Загрузка…
Отмена
Сохранить