diff --git a/autogen.sh b/autogen.sh index 6af32ce..12d5142 100755 --- a/autogen.sh +++ b/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 diff --git a/config.py b/config.py index 12fec10..57c9830 100644 --- a/config.py +++ b/config.py @@ -402,6 +402,7 @@ ALIASES = { "saas": { "logging": { "Datadog": "DataDog", + "Newrelic": "NewRelic" } }, "elastic": { diff --git a/diagrams/onprem/analytics.py b/diagrams/onprem/analytics.py index 0cbb90b..a62e401 100644 --- a/diagrams/onprem/analytics.py +++ b/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" diff --git a/diagrams/onprem/monitoring.py b/diagrams/onprem/monitoring.py index 68b2fb4..c097eca 100644 --- a/diagrams/onprem/monitoring.py +++ b/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" diff --git a/diagrams/programming/framework.py b/diagrams/programming/framework.py index 410a53a..48929c1 100644 --- a/diagrams/programming/framework.py +++ b/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" diff --git a/diagrams/saas/alerting.py b/diagrams/saas/alerting.py index bd64d8a..0e3f65e 100644 --- a/diagrams/saas/alerting.py +++ b/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" diff --git a/diagrams/saas/chat.py b/diagrams/saas/chat.py index 2eb5254..e48587a 100644 --- a/diagrams/saas/chat.py +++ b/diagrams/saas/chat.py @@ -8,7 +8,6 @@ class _Chat(_Saas): _icon_dir = "resources/saas/chat" - class Discord(_Chat): _icon = "discord.png" diff --git a/diagrams/saas/filesharing.py b/diagrams/saas/filesharing.py new file mode 100644 index 0000000..c17eef1 --- /dev/null +++ b/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 diff --git a/diagrams/saas/logging.py b/diagrams/saas/logging.py index 8ae4a00..fd8a28c 100644 --- a/diagrams/saas/logging.py +++ b/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 diff --git a/docs/getting-started/examples.md b/docs/getting-started/examples.md index 7596567..d32a3e6 100644 --- a/docs/getting-started/examples.md +++ b/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) \ No newline at end of file +![rabbitmq consumers diagram](/img/rabbitmq_consumers_diagram.png) diff --git a/docs/nodes/custom.md b/docs/nodes/custom.md new file mode 100644 index 0000000..8c2b1b4 --- /dev/null +++ b/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). diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index 26fe0f0..ef64a7a 100644 --- a/docs/nodes/onprem.md +++ b/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** diff --git a/docs/nodes/programming.md b/docs/nodes/programming.md index 4a5cc9e..8240515 100644 --- a/docs/nodes/programming.md +++ b/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** diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md index 5cb0832..146e93c 100644 --- a/docs/nodes/saas.md +++ b/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 diff --git a/poetry.lock b/poetry.lock index 82a9434..bc2cf5b 100644 --- a/poetry.lock +++ b/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 = [ diff --git a/pyproject.toml b/pyproject.toml index fceb277..934b91c 100644 --- a/pyproject.toml +++ b/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" diff --git a/resources/onprem/analytics/presto.png b/resources/onprem/analytics/presto.png new file mode 100644 index 0000000..7d97519 Binary files /dev/null and b/resources/onprem/analytics/presto.png differ diff --git a/resources/onprem/analytics/superset.png b/resources/onprem/analytics/superset.png new file mode 100644 index 0000000..e5272ac Binary files /dev/null and b/resources/onprem/analytics/superset.png differ diff --git a/resources/onprem/monitoring/humio.png b/resources/onprem/monitoring/humio.png new file mode 100644 index 0000000..bd36be1 Binary files /dev/null and b/resources/onprem/monitoring/humio.png differ diff --git a/resources/onprem/monitoring/newrelic.png b/resources/onprem/monitoring/newrelic.png new file mode 100644 index 0000000..908ccd0 Binary files /dev/null and b/resources/onprem/monitoring/newrelic.png differ diff --git a/resources/programming/framework/micronaut.png b/resources/programming/framework/micronaut.png new file mode 100644 index 0000000..9bdc978 Binary files /dev/null and b/resources/programming/framework/micronaut.png differ diff --git a/resources/saas/alerting/newrelic.png b/resources/saas/alerting/newrelic.png new file mode 100644 index 0000000..908ccd0 Binary files /dev/null and b/resources/saas/alerting/newrelic.png differ diff --git a/resources/saas/filesharing/nextcloud.png b/resources/saas/filesharing/nextcloud.png new file mode 100644 index 0000000..4370ddf Binary files /dev/null and b/resources/saas/filesharing/nextcloud.png differ diff --git a/resources/saas/logging/newrelic.png b/resources/saas/logging/newrelic.png new file mode 100644 index 0000000..908ccd0 Binary files /dev/null and b/resources/saas/logging/newrelic.png differ diff --git a/scripts/generate.py b/scripts/generate.py index f1568d2..d757b9c 100644 --- a/scripts/generate.py +++ b/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: diff --git a/templates/apidoc_custom.tmpl b/templates/apidoc_custom.tmpl new file mode 100644 index 0000000..d3c8820 --- /dev/null +++ b/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). diff --git a/website/i18n/en.json b/website/i18n/en.json index 00bb553..1c4a1a3 100644 --- a/website/i18n/en.json +++ b/website/i18n/en.json @@ -32,6 +32,9 @@ "nodes/azure": { "title": "Azure" }, + "nodes/custom": { + "title": "Custom" + }, "nodes/elastic": { "title": "Elastic" }, diff --git a/website/sidebars.json b/website/sidebars.json index a969711..0f53f30 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -24,7 +24,8 @@ "nodes/elastic", "nodes/generic", "nodes/programming", - "nodes/saas" + "nodes/saas", + "nodes/custom" ] } -} \ No newline at end of file +} diff --git a/website/static/img/custom_local.png b/website/static/img/custom_local.png new file mode 100644 index 0000000..55b8176 Binary files /dev/null and b/website/static/img/custom_local.png differ diff --git a/website/static/img/custom_remote.png b/website/static/img/custom_remote.png new file mode 100644 index 0000000..31e2b1b Binary files /dev/null and b/website/static/img/custom_remote.png differ