Переглянути джерело

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

pull/823/head
Bruno Meneguello 3 роки тому
джерело
коміт
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. BIN
      resources/onprem/analytics/presto.png
  18. BIN
      resources/onprem/analytics/superset.png
  19. BIN
      resources/onprem/monitoring/humio.png
  20. BIN
      resources/onprem/monitoring/newrelic.png
  21. BIN
      resources/programming/framework/micronaut.png
  22. BIN
      resources/saas/alerting/newrelic.png
  23. BIN
      resources/saas/filesharing/nextcloud.png
  24. BIN
      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. BIN
      website/static/img/custom_local.png
  30. BIN
      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"


BIN
resources/onprem/analytics/presto.png Переглянути файл

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

BIN
resources/onprem/analytics/superset.png Переглянути файл

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

BIN
resources/onprem/monitoring/humio.png Переглянути файл

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

BIN
resources/onprem/monitoring/newrelic.png Переглянути файл

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

BIN
resources/programming/framework/micronaut.png Переглянути файл

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

BIN
resources/saas/alerting/newrelic.png Переглянути файл

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

BIN
resources/saas/filesharing/nextcloud.png Переглянути файл

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

BIN
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"
]
}
}
}

BIN
website/static/img/custom_local.png Переглянути файл

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

BIN
website/static/img/custom_remote.png Переглянути файл

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

Завантаження…
Відмінити
Зберегти