diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 2c39972c..34661352 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -10,7 +10,7 @@ RUN apk update && apk add --no-cache \ RUN go install github.com/mingrammer/round@latest # install fonts -RUN curl -O https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \ +RUN curl -O https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \ && mkdir -p /usr/share/fonts/NotoSansCJKjp \ && unzip NotoSansCJKjp-hinted.zip -d /usr/share/fonts/NotoSansCJKjp/ \ && rm NotoSansCJKjp-hinted.zip \ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4b8064a2..57e86248 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -25,7 +25,7 @@ "extensions": [ "ms-python.python", "ms-python.debugpy", - "mhutchie.git-graph", + "mhutchie.git-graph", "mutantdino.resourcemonitor", "tehpeng.diagramspreviewer" ] @@ -35,4 +35,4 @@ "workspaceFolder": "/usr/src/diagrams" // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. // "remoteUser": "root" -} \ No newline at end of file +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93dc0d05..0f644a9a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,6 +67,21 @@ find . -type f -name "*.svg" -exec bash -c 'rm "$0"' {} \; If you get any errors with autogen, it will probably be a '+' in filename +### Add new provider + +To add a new provider to Diagrams, please follow the steps below in addition to the image intructions above: +- in `autogen.sh` add in the `providers` variable the new provider code +- in `config.py`: + - in the `providers` variable, add the new provider code + - in the `FILE_PREFIXES` variable, add a new entry with your new provider code. And eventually a file prefix + - Optionnaly, update the `UPPER_WORDS` variable to a new entry with your new provider code. + - in the `ALIASES` variable, add a new entry with your new provider code. See below on how to add new aliases. +- in `scripts/resource.py`: + - add a function `cleaner_XXX` (replace XXX by your provider name). For the implementation look at the existing functions + - in the `cleaners` variable, add an entry with your new provider code and the function defined above +- in `sidebars.json`, update the `Nodes` array to add the reference of the new provider +- in the `diagrams` folder, add a new file `__init__.py` for the new provider. For the content look at the existing providers + ### Update Aliases Some node classes have alias. For example, `aws.compute.ECS` class is an alias diff --git a/README.md b/README.md index 500e4f88..b98cf470 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,8 @@ To contribute to diagram, check out [contribution guidelines](CONTRIBUTING.md). [Airflow Diagrams](https://github.com/feluelle/airflow-diagrams) is an Airflow plugin that aims to easily visualise your Airflow DAGs on service level from providers like AWS, GCP, Azure, etc. via diagrams. +[KubeDiagrams](https://github.com/philippemerle/KubeDiagrams) is a tool to generate Kubernetes architecture diagrams from Kubernetes manifest files, kustomization files, Helm charts, and actual cluster state. [KubeDiagrams](https://github.com/philippemerle/KubeDiagrams) supports all Kubernetes built-in resources, any custom resources, and label-based resource clustering. + ## Other languages - If you are familiar with Go, you can use [go-diagrams](https://github.com/blushft/go-diagrams) as well. diff --git a/autogen.sh b/autogen.sh index 9e8cefe5..c8e6922d 100755 --- a/autogen.sh +++ b/autogen.sh @@ -20,6 +20,7 @@ providers=( "generic" "openstack" "outscale" + "gis" ) if ! [ -x "$(command -v round)" ]; then diff --git a/config.py b/config.py index 86a58342..06aa05bb 100644 --- a/config.py +++ b/config.py @@ -29,6 +29,7 @@ PROVIDERS = ( "generic", "openstack", "outscale", + "gis" ) ######################### @@ -59,6 +60,7 @@ FILE_PREFIXES = { "outscale": (), "generic": (), "openstack": (), + "gis": (), } ######################### @@ -87,8 +89,9 @@ UPPER_WORDS = { "generic": ("vpn", "ios", "xen", "sql", "lxc"), "outscale": ("osc",), "openstack": ("rpm", "loci", "nfv", "ec2api"), - "pve": ("pve"), - "ibm": ("ibm"), + "pve": ("pve",), + "ibm": ("ibm",), + "gis": ("gis","ban","ign","ogc","qgis","wfs","wms"), } TITLE_WORDS = { @@ -143,6 +146,7 @@ ALIASES = { "Mssql": "MSSQL", "Mysql": "MySQL", "Postgresql": "PostgreSQL", + "Qdrant": "Qdrant", }, "gitops": { "Argocd": "ArgoCD", @@ -411,6 +415,7 @@ ALIASES = { } }, "digitalocean": {}, + "gis": {}, "oci": { "compute": { "VM": "VirtualMachine", diff --git a/diagrams/__init__.py b/diagrams/__init__.py index 8625cd5d..66c3458f 100644 --- a/diagrams/__init__.py +++ b/diagrams/__init__.py @@ -528,7 +528,7 @@ class Edge: for o in other: if isinstance(o, Edge): o.forward = forward if forward else o.forward - o.reverse = forward if forward else o.reverse + o.reverse = reverse if reverse else o.reverse self._attrs = o.attrs.copy() result.append(o) else: diff --git a/diagrams/aws/compute.py b/diagrams/aws/compute.py index 14c54403..66022a16 100644 --- a/diagrams/aws/compute.py +++ b/diagrams/aws/compute.py @@ -96,6 +96,10 @@ class ElasticContainerServiceService(_Compute): _icon = "elastic-container-service-service.png" +class ElasticContainerServiceTask(_Compute): + _icon = "elastic-container-service-task.png" + + class ElasticContainerService(_Compute): _icon = "elastic-container-service.png" diff --git a/diagrams/aws/devtools.py b/diagrams/aws/devtools.py index d6458e5a..968d53c9 100644 --- a/diagrams/aws/devtools.py +++ b/diagrams/aws/devtools.py @@ -20,6 +20,10 @@ class Cloud9(_Devtools): _icon = "cloud9.png" +class Cloudshell(_Devtools): + _icon = "cloudshell.png" + + class Codeartifact(_Devtools): _icon = "codeartifact.png" diff --git a/diagrams/aws/integration.py b/diagrams/aws/integration.py index cfe23d48..40a1b809 100644 --- a/diagrams/aws/integration.py +++ b/diagrams/aws/integration.py @@ -32,10 +32,30 @@ class EventbridgeDefaultEventBusResource(_Integration): _icon = "eventbridge-default-event-bus-resource.png" +class EventbridgeEvent(_Integration): + _icon = "eventbridge-event.png" + + +class EventbridgePipes(_Integration): + _icon = "eventbridge-pipes.png" + + +class EventbridgeRule(_Integration): + _icon = "eventbridge-rule.png" + + class EventbridgeSaasPartnerEventBusResource(_Integration): _icon = "eventbridge-saas-partner-event-bus-resource.png" +class EventbridgeScheduler(_Integration): + _icon = "eventbridge-scheduler.png" + + +class EventbridgeSchema(_Integration): + _icon = "eventbridge-schema.png" + + class Eventbridge(_Integration): _icon = "eventbridge.png" diff --git a/diagrams/aws/management.py b/diagrams/aws/management.py index f6710686..3de22625 100644 --- a/diagrams/aws/management.py +++ b/diagrams/aws/management.py @@ -236,6 +236,10 @@ class TrustedAdvisor(_Management): _icon = "trusted-advisor.png" +class UserNotifications(_Management): + _icon = "user-notifications.png" + + class WellArchitectedTool(_Management): _icon = "well-architected-tool.png" diff --git a/diagrams/aws/ml.py b/diagrams/aws/ml.py index beb454bd..a08da89c 100644 --- a/diagrams/aws/ml.py +++ b/diagrams/aws/ml.py @@ -16,6 +16,10 @@ class AugmentedAi(_ML): _icon = "augmented-ai.png" +class Bedrock(_ML): + _icon = "bedrock.png" + + class Comprehend(_ML): _icon = "comprehend.png" @@ -72,6 +76,10 @@ class Polly(_ML): _icon = "polly.png" +class Q(_ML): + _icon = "q.png" + + class RekognitionImage(_ML): _icon = "rekognition-image.png" diff --git a/diagrams/azure/ml.py b/diagrams/azure/ml.py index eb0c474e..e9fff87d 100644 --- a/diagrams/azure/ml.py +++ b/diagrams/azure/ml.py @@ -12,8 +12,8 @@ class AzureOpenAI(_Ml): _icon = "azure-open-ai.png" -class AzureSpeedToText(_Ml): - _icon = "azure-speed-to-text.png" +class AzureSpeechService(_Ml): + _icon = "azure-speech-service.png" class BatchAI(_Ml): diff --git a/diagrams/cli.py b/diagrams/cli.py new file mode 100644 index 00000000..c75eb3d9 --- /dev/null +++ b/diagrams/cli.py @@ -0,0 +1,38 @@ +import argparse +import sys + + +def run() -> int: + """ + Run diagrams code files in a diagrams environment. + Args: + paths: A list of paths to Python files containing diagrams code. + + Returns: + The exit code. + """ + parser = argparse.ArgumentParser( + description="Run diagrams code files in a diagrams environment.", + ) + parser.add_argument( + "paths", + metavar="path", + type=str, + nargs="+", + help="a Python file containing diagrams code", + ) + args = parser.parse_args() + + for path in args.paths: + with open(path, encoding='utf-8') as f: + exec(f.read()) + + return 0 + + +def main(): + sys.exit(run()) + + +if __name__ == "__main__": + main() diff --git a/diagrams/gis/__init__.py b/diagrams/gis/__init__.py new file mode 100644 index 00000000..684dca02 --- /dev/null +++ b/diagrams/gis/__init__.py @@ -0,0 +1,12 @@ +""" +GIS provides a set of services for Geographic Information Systems provider. +""" + +from diagrams import Node + + +class _GIS(Node): + _provider = "gis" + _icon_dir = "resources/gis" + + fontcolor = "#2d3436" diff --git a/diagrams/gis/cli.py b/diagrams/gis/cli.py new file mode 100644 index 00000000..4cf8e9f1 --- /dev/null +++ b/diagrams/gis/cli.py @@ -0,0 +1,35 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Cli(_GIS): + _type = "cli" + _icon_dir = "resources/gis/cli" + + +class Gdal(_Cli): + _icon = "gdal.png" + + +class Imposm(_Cli): + _icon = "imposm.png" + + +class Lastools(_Cli): + _icon = "lastools.png" + + +class Mapnik(_Cli): + _icon = "mapnik.png" + + +class Mdal(_Cli): + _icon = "mdal.png" + + +class Pdal(_Cli): + _icon = "pdal.png" + + +# Aliases diff --git a/diagrams/gis/cplusplus.py b/diagrams/gis/cplusplus.py new file mode 100644 index 00000000..a772d45d --- /dev/null +++ b/diagrams/gis/cplusplus.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Cplusplus(_GIS): + _type = "cplusplus" + _icon_dir = "resources/gis/cplusplus" + + +class Mapnik(_Cplusplus): + _icon = "mapnik.png" + + +# Aliases diff --git a/diagrams/gis/data.py b/diagrams/gis/data.py new file mode 100644 index 00000000..99dbd696 --- /dev/null +++ b/diagrams/gis/data.py @@ -0,0 +1,31 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Data(_GIS): + _type = "data" + _icon_dir = "resources/gis/data" + + +class BAN(_Data): + _icon = "ban.png" + + +class Here(_Data): + _icon = "here.png" + + +class IGN(_Data): + _icon = "ign.png" + + +class Openstreetmap(_Data): + _icon = "openstreetmap.png" + + +class Overturemaps(_Data): + _icon = "overturemaps.png" + + +# Aliases diff --git a/diagrams/gis/database.py b/diagrams/gis/database.py new file mode 100644 index 00000000..04ee2f72 --- /dev/null +++ b/diagrams/gis/database.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Database(_GIS): + _type = "database" + _icon_dir = "resources/gis/database" + + +class Postgis(_Database): + _icon = "postgis.png" + + +# Aliases diff --git a/diagrams/gis/desktop.py b/diagrams/gis/desktop.py new file mode 100644 index 00000000..b39ff222 --- /dev/null +++ b/diagrams/gis/desktop.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Desktop(_GIS): + _type = "desktop" + _icon_dir = "resources/gis/desktop" + + +class Maptunik(_Desktop): + _icon = "maptunik.png" + + +class QGIS(_Desktop): + _icon = "qgis.png" + + +# Aliases diff --git a/diagrams/gis/format.py b/diagrams/gis/format.py new file mode 100644 index 00000000..3c932a1f --- /dev/null +++ b/diagrams/gis/format.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Format(_GIS): + _type = "format" + _icon_dir = "resources/gis/format" + + +class Geopackage(_Format): + _icon = "geopackage.png" + + +class Geoparquet(_Format): + _icon = "geoparquet.png" + + +# Aliases diff --git a/diagrams/gis/geocoding.py b/diagrams/gis/geocoding.py new file mode 100644 index 00000000..de533277 --- /dev/null +++ b/diagrams/gis/geocoding.py @@ -0,0 +1,27 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Geocoding(_GIS): + _type = "geocoding" + _icon_dir = "resources/gis/geocoding" + + +class Addok(_Geocoding): + _icon = "addok.png" + + +class Gisgraphy(_Geocoding): + _icon = "gisgraphy.png" + + +class Nominatim(_Geocoding): + _icon = "nominatim.png" + + +class Pelias(_Geocoding): + _icon = "pelias.png" + + +# Aliases diff --git a/diagrams/gis/georchestra.py b/diagrams/gis/georchestra.py new file mode 100644 index 00000000..fc1b8ebf --- /dev/null +++ b/diagrams/gis/georchestra.py @@ -0,0 +1,11 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Georchestra(_GIS): + _type = "georchestra" + _icon_dir = "resources/gis/georchestra" + + +# Aliases diff --git a/diagrams/gis/java.py b/diagrams/gis/java.py new file mode 100644 index 00000000..371b847f --- /dev/null +++ b/diagrams/gis/java.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Java(_GIS): + _type = "java" + _icon_dir = "resources/gis/java" + + +class Geotools(_Java): + _icon = "geotools.png" + + +# Aliases diff --git a/diagrams/gis/javascript.py b/diagrams/gis/javascript.py new file mode 100644 index 00000000..4a9c7391 --- /dev/null +++ b/diagrams/gis/javascript.py @@ -0,0 +1,43 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Javascript(_GIS): + _type = "javascript" + _icon_dir = "resources/gis/javascript" + + +class Cesium(_Javascript): + _icon = "cesium.png" + + +class Geostyler(_Javascript): + _icon = "geostyler.png" + + +class Keplerjs(_Javascript): + _icon = "keplerjs.png" + + +class Leaflet(_Javascript): + _icon = "leaflet.png" + + +class Maplibre(_Javascript): + _icon = "maplibre.png" + + +class OlExt(_Javascript): + _icon = "ol-ext.png" + + +class Openlayers(_Javascript): + _icon = "openlayers.png" + + +class Turfjs(_Javascript): + _icon = "turfjs.png" + + +# Aliases diff --git a/diagrams/gis/mobile.py b/diagrams/gis/mobile.py new file mode 100644 index 00000000..b798eddd --- /dev/null +++ b/diagrams/gis/mobile.py @@ -0,0 +1,23 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Mobile(_GIS): + _type = "mobile" + _icon_dir = "resources/gis/mobile" + + +class Mergin(_Mobile): + _icon = "mergin.png" + + +class Qfield(_Mobile): + _icon = "qfield.png" + + +class Smash(_Mobile): + _icon = "smash.png" + + +# Aliases diff --git a/diagrams/gis/ogc.py b/diagrams/gis/ogc.py new file mode 100644 index 00000000..956df61e --- /dev/null +++ b/diagrams/gis/ogc.py @@ -0,0 +1,23 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _OGC(_GIS): + _type = "ogc" + _icon_dir = "resources/gis/ogc" + + +class OGC(_OGC): + _icon = "ogc.png" + + +class WFS(_OGC): + _icon = "wfs.png" + + +class WMS(_OGC): + _icon = "wms.png" + + +# Aliases diff --git a/diagrams/gis/organization.py b/diagrams/gis/organization.py new file mode 100644 index 00000000..5fc49441 --- /dev/null +++ b/diagrams/gis/organization.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Organization(_GIS): + _type = "organization" + _icon_dir = "resources/gis/organization" + + +class Osgeo(_Organization): + _icon = "osgeo.png" + + +# Aliases diff --git a/diagrams/gis/python.py b/diagrams/gis/python.py new file mode 100644 index 00000000..340139d8 --- /dev/null +++ b/diagrams/gis/python.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Python(_GIS): + _type = "python" + _icon_dir = "resources/gis/python" + + +class Geopandas(_Python): + _icon = "geopandas.png" + + +class Pysal(_Python): + _icon = "pysal.png" + + +# Aliases diff --git a/diagrams/gis/routing.py b/diagrams/gis/routing.py new file mode 100644 index 00000000..2176df71 --- /dev/null +++ b/diagrams/gis/routing.py @@ -0,0 +1,27 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Routing(_GIS): + _type = "routing" + _icon_dir = "resources/gis/routing" + + +class Graphhopper(_Routing): + _icon = "graphhopper.png" + + +class Osrm(_Routing): + _icon = "osrm.png" + + +class Pgrouting(_Routing): + _icon = "pgrouting.png" + + +class Valhalla(_Routing): + _icon = "valhalla.png" + + +# Aliases diff --git a/diagrams/gis/server.py b/diagrams/gis/server.py new file mode 100644 index 00000000..c6ac4106 --- /dev/null +++ b/diagrams/gis/server.py @@ -0,0 +1,99 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Server(_GIS): + _type = "server" + _icon_dir = "resources/gis/server" + + +class Actinia(_Server): + _icon = "actinia.png" + + +class Baremaps(_Server): + _icon = "baremaps.png" + + +class Deegree(_Server): + _icon = "deegree.png" + + +class G3WSuite(_Server): + _icon = "g3w-suite.png" + + +class Geohealthcheck(_Server): + _icon = "geohealthcheck.png" + + +class Geomapfish(_Server): + _icon = "geomapfish.png" + + +class Geomesa(_Server): + _icon = "geomesa.png" + + +class Geonetwork(_Server): + _icon = "geonetwork.png" + + +class Geonode(_Server): + _icon = "geonode.png" + + +class Georchestra(_Server): + _icon = "georchestra.png" + + +class Geoserver(_Server): + _icon = "geoserver.png" + + +class Geowebcache(_Server): + _icon = "geowebcache.png" + + +class Kepler(_Server): + _icon = "kepler.png" + + +class Mapproxy(_Server): + _icon = "mapproxy.png" + + +class Mapserver(_Server): + _icon = "mapserver.png" + + +class Mapstore(_Server): + _icon = "mapstore.png" + + +class Mviewer(_Server): + _icon = "mviewer.png" + + +class Pg_Tileserv(_Server): + _icon = "pg_tileserv.png" + + +class Pycsw(_Server): + _icon = "pycsw.png" + + +class Pygeoapi(_Server): + _icon = "pygeoapi.png" + + +class QGISServer(_Server): + _icon = "qgis-server.png" + + +class Zooproject(_Server): + _icon = "zooproject.png" + + +# Aliases diff --git a/diagrams/gis/toolkit.py b/diagrams/gis/toolkit.py new file mode 100644 index 00000000..d67d1d81 --- /dev/null +++ b/diagrams/gis/toolkit.py @@ -0,0 +1,11 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _GIS + + +class _Toolkit(_GIS): + _type = "toolkit" + _icon_dir = "resources/gis/toolkit" + + +# Aliases diff --git a/diagrams/onprem/database.py b/diagrams/onprem/database.py index 40ed89ca..7013c7b0 100644 --- a/diagrams/onprem/database.py +++ b/diagrams/onprem/database.py @@ -36,6 +36,10 @@ class Druid(_Database): _icon = "druid.png" +class Duckdb(_Database): + _icon = "duckdb.png" + + class Hbase(_Database): _icon = "hbase.png" @@ -76,6 +80,10 @@ class Postgresql(_Database): _icon = "postgresql.png" +class Qdrant(_Database): + _icon = "qdrant.png" + + class Scylla(_Database): _icon = "scylla.png" @@ -93,3 +101,4 @@ MongoDB = Mongodb MSSQL = Mssql MySQL = Mysql PostgreSQL = Postgresql +Qdrant = Qdrant diff --git a/diagrams/onprem/iac.py b/diagrams/onprem/iac.py index 33d8ea77..c56284ac 100644 --- a/diagrams/onprem/iac.py +++ b/diagrams/onprem/iac.py @@ -20,6 +20,10 @@ class Awx(_Iac): _icon = "awx.png" +class Pulumi(_Iac): + _icon = "pulumi.png" + + class Puppet(_Iac): _icon = "puppet.png" diff --git a/diagrams/onprem/network.py b/diagrams/onprem/network.py index 7ef068b5..73b6f28e 100644 --- a/diagrams/onprem/network.py +++ b/diagrams/onprem/network.py @@ -24,6 +24,18 @@ class Caddy(_Network): _icon = "caddy.png" +class CiscoRouter(_Network): + _icon = "cisco-router.png" + + +class CiscoSwitchL2(_Network): + _icon = "cisco-switch-l2.png" + + +class CiscoSwitchL3(_Network): + _icon = "cisco-switch-l3.png" + + class Consul(_Network): _icon = "consul.png" diff --git a/diagrams/saas/automation.py b/diagrams/saas/automation.py new file mode 100644 index 00000000..ef047d5f --- /dev/null +++ b/diagrams/saas/automation.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _Saas + + +class _Automation(_Saas): + _type = "automation" + _icon_dir = "resources/saas/automation" + + +class N8N(_Automation): + _icon = "n8n.png" + + +# Aliases diff --git a/diagrams/saas/cdn.py b/diagrams/saas/cdn.py index cc0b4fc2..aafd50e3 100644 --- a/diagrams/saas/cdn.py +++ b/diagrams/saas/cdn.py @@ -20,4 +20,8 @@ class Fastly(_Cdn): _icon = "fastly.png" +class Imperva(_Cdn): + _icon = "imperva.png" + + # Aliases diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile index bc6e76ae..ab653077 100644 --- a/docker/dev/Dockerfile +++ b/docker/dev/Dockerfile @@ -1,5 +1,5 @@ # use latest python alpine image. -FROM python:3.13.1-alpine3.20 +FROM python:3.13.3-alpine3.20 # install system dependencies. RUN apk update && apk add --no-cache \ diff --git a/docs/getting-started/examples.md b/docs/getting-started/examples.md index d2d2f4c7..71c57542 100644 --- a/docs/getting-started/examples.md +++ b/docs/getting-started/examples.md @@ -211,9 +211,9 @@ with Diagram("Advanced Web Service with On-Premises", show=False): ingress >> grpcsvc >> aggregator ``` -![advanced web service with on-premise diagram](/img/advanced_web_service_with_on-premise.png) +![advanced web service with on-premises diagram](/img/advanced_web_service_with_on-premises.png) -## Advanced Web Service with On-Premise (with colors and labels) +## Advanced Web Service with On-Premises (with colors and labels) ```python from diagrams import Cluster, Diagram, Edge @@ -226,7 +226,7 @@ from diagrams.onprem.monitoring import Grafana, Prometheus from diagrams.onprem.network import Nginx from diagrams.onprem.queue import Kafka -with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False): +with Diagram(name="Advanced Web Service with On-Premises (colored)", show=False): ingress = Nginx("ingress") metrics = Prometheus("metric") @@ -254,7 +254,7 @@ with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False): ingress >> Edge(color="darkgreen") << grpcsvc >> Edge(color="darkorange") >> aggregator ``` -![advanced web service with on-premise diagram colored](/img/advanced_web_service_with_on-premise_colored.png) +![advanced web service with on-premises diagram colored](/img/advanced_web_service_with_on-premises_colored.png) ## RabbitMQ Consumers with Custom Nodes diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index f38b5242..cdbc86f8 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -7,7 +7,7 @@ title: Installation **diagrams** uses [Graphviz](https://www.graphviz.org/) to render the diagram, so you need to [install Graphviz](https://graphviz.gitlab.io/download/) to use it. -> macOS users using [Homebrew](https://brew.sh) can install Graphviz via `brew install graphviz` . Similarly, Windows users with [Chocolatey](https://chocolatey.org) installed can run `choco install graphviz`. +> macOS users using [Homebrew](https://brew.sh) can install Graphviz via `brew install graphviz` . Similarly, Windows users with [Chocolatey](https://chocolatey.org) installed can run `choco install graphviz` or use [Winget](https://learn.microsoft.com/windows/package-manager/) via `winget install Graphviz.Graphviz -i`. After installing Graphviz (or if you already have it), install **diagrams**: @@ -20,6 +20,9 @@ $ pipenv install diagrams # using poetry $ poetry add diagrams + +# using uv +$ uv tool install diagrams ``` ## Quick Start @@ -47,6 +50,14 @@ This generates the diagram below: It will be saved as `web_service.png` in your working directory. +### CLI + +With the `diagrams` CLI you can process one or more diagram files at once. + +```shell +$ diagrams diagram1.py diagram2.py +``` + ## Next See more [Examples](/docs/getting-started/examples) or see the [Guides](/docs/guides/diagram) page for more details. diff --git a/docs/guides/edge.md b/docs/guides/edge.md index befee710..c1bfced6 100644 --- a/docs/guides/edge.md +++ b/docs/guides/edge.md @@ -65,5 +65,131 @@ with Diagram(name="Advanced Web Service with On-Premises (colored)", show=False) >> Edge(color="darkorange") \ >> aggregator ``` +![advanced web service with on-premise diagram colored](/img/advanced_web_service_with_on-premise_colored.png) -![advanced web service with on-premises diagram colored](/img/advanced_web_service_with_on-premises_colored.png) +## Less Edges + +As you can see on the previous graph the edges can quickly become noisy. Below are two examples to solve this problem. + +One approach is to get creative with the Node class to create blank placeholders, together with named nodes within Clusters, and then only pointing to single named elements within those Clusters. + +Compare the output below to the example output above . + +```python +from diagrams import Cluster, Diagram, Node +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.aggregator import Fluentd +from diagrams.onprem.monitoring import Grafana, Prometheus +from diagrams.onprem.network import Nginx +from diagrams.onprem.queue import Kafka + +with Diagram("\nAdvanced Web Service with On-Premise Less edges", show=False) as diag: + ingress = Nginx("ingress") + + with Cluster("Service Cluster"): + serv1 = Server("grpc1") + serv2 = Server("grpc2") + serv3 = Server("grpc3") + + with Cluster(""): + blankHA = Node("", shape="plaintext", width="0", height="0") + + metrics = Prometheus("metric") + metrics << Grafana("monitoring") + + aggregator = Fluentd("logging") + blankHA >> aggregator >> Kafka("stream") >> Spark("analytics") + + with Cluster("Database HA"): + db = PostgreSQL("users") + db - PostgreSQL("replica") << metrics + blankHA >> db + + with Cluster("Sessions HA"): + sess = Redis("session") + sess - Redis("replica") << metrics + blankHA >> sess + + ingress >> serv2 >> blankHA + +diag +``` + +![advanced web service with on-premise less edges](/img/advanced_web_service_with_on-premise_less_edges.png) + +## Merged Edges + +Yet another option is to set the graph_attr dictionary key "concentrate" to "true". + +Note the following restrictions: + +1. the Edge must end at the same headport +2. This only works when the "splines" graph_attr key is set to the value "spline". It has no effect when the value was set to "ortho", which is the default for the diagrams library. +3. this will only work with the "dot" layout engine, which is the default for the diagrams library. + +For more information see: + + https://graphviz.gitlab.io/doc/info/attrs.html#d:concentrate + + https://www.graphviz.org/pdf/dotguide.pdf Section 3.3 Concentrators + + + +```python +from diagrams import Cluster, Diagram, Edge, Node +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.aggregator import Fluentd +from diagrams.onprem.monitoring import Grafana, Prometheus +from diagrams.onprem.network import Nginx +from diagrams.onprem.queue import Kafka + +graph_attr = { + "concentrate": "true", + "splines": "spline", +} + +edge_attr = { + "minlen":"3", +} + +with Diagram("\n\nAdvanced Web Service with On-Premise Merged edges", show=False, + graph_attr=graph_attr, + edge_attr=edge_attr) as diag: + + ingress = Nginx("ingress") + + metrics = Prometheus("metric") + metrics << Edge(minlen="0") << Grafana("monitoring") + + with Cluster("Service Cluster"): + grpsrv = [ + Server("grpc1"), + Server("grpc2"), + Server("grpc3")] + + blank = Node("", shape="plaintext", height="0.0", width="0.0") + + with Cluster("Sessions HA"): + sess = Redis("session") + sess - Redis("replica") << metrics + + with Cluster("Database HA"): + db = PostgreSQL("users") + db - PostgreSQL("replica") << metrics + + aggregator = Fluentd("logging") + aggregator >> Kafka("stream") >> Spark("analytics") + + ingress >> [grpsrv[0], grpsrv[1], grpsrv[2],] + [grpsrv[0], grpsrv[1], grpsrv[2],] - Edge(headport="w", minlen="1") - blank + blank >> Edge(headport="w", minlen="2") >> [sess, db, aggregator] + +diag +``` +![advanced web service with on-premise merged edges](/img/advanced_web_service_with_on-premise_merged_edges.png) diff --git a/docs/nodes/aws.md b/docs/nodes/aws.md index 7abb578a..5085f62d 100644 --- a/docs/nodes/aws.md +++ b/docs/nodes/aws.md @@ -203,6 +203,9 @@ Node classes list of the aws provider. ElasticContainerServiceService **diagrams.aws.compute.ElasticContainerServiceService** +ElasticContainerServiceTask +**diagrams.aws.compute.ElasticContainerServiceTask** + ElasticContainerService **diagrams.aws.compute.ElasticContainerService**, **ECS** (alias) @@ -395,6 +398,9 @@ Node classes list of the aws provider. Cloud9 **diagrams.aws.devtools.Cloud9** +Cloudshell +**diagrams.aws.devtools.Cloudshell** + Codeartifact **diagrams.aws.devtools.Codeartifact** @@ -584,9 +590,24 @@ Node classes list of the aws provider. EventbridgeDefaultEventBusResource **diagrams.aws.integration.EventbridgeDefaultEventBusResource** +EventbridgeEvent +**diagrams.aws.integration.EventbridgeEvent** + +EventbridgePipes +**diagrams.aws.integration.EventbridgePipes** + +EventbridgeRule +**diagrams.aws.integration.EventbridgeRule** + EventbridgeSaasPartnerEventBusResource **diagrams.aws.integration.EventbridgeSaasPartnerEventBusResource** +EventbridgeScheduler +**diagrams.aws.integration.EventbridgeScheduler** + +EventbridgeSchema +**diagrams.aws.integration.EventbridgeSchema** + Eventbridge **diagrams.aws.integration.Eventbridge** @@ -980,6 +1001,9 @@ Node classes list of the aws provider. TrustedAdvisor **diagrams.aws.management.TrustedAdvisor** +UserNotifications +**diagrams.aws.management.UserNotifications** + WellArchitectedTool **diagrams.aws.management.WellArchitectedTool** @@ -1073,6 +1097,9 @@ Node classes list of the aws provider. AugmentedAi **diagrams.aws.ml.AugmentedAi** +Bedrock +**diagrams.aws.ml.Bedrock** + Comprehend **diagrams.aws.ml.Comprehend** @@ -1115,6 +1142,9 @@ Node classes list of the aws provider. Polly **diagrams.aws.ml.Polly** +Q +**diagrams.aws.ml.Q** + RekognitionImage **diagrams.aws.ml.RekognitionImage** diff --git a/docs/nodes/azure.md b/docs/nodes/azure.md index 5a91236f..570f537e 100644 --- a/docs/nodes/azure.md +++ b/docs/nodes/azure.md @@ -1571,8 +1571,8 @@ Node classes list of azure provider. AzureOpenAI **diagrams.azure.ml.AzureOpenAI** -AzureSpeedToText -**diagrams.azure.ml.AzureSpeedToText** +AzureSpeechService +**diagrams.azure.ml.AzureSpeechService** BatchAI **diagrams.azure.ml.BatchAI** diff --git a/docs/nodes/gis.md b/docs/nodes/gis.md new file mode 100644 index 00000000..4460c3b3 --- /dev/null +++ b/docs/nodes/gis.md @@ -0,0 +1,243 @@ +--- +id: gis +title: GIS +--- + +Node classes list of the gis provider. + +## gis.cli + + +Gdal +**diagrams.gis.cli.Gdal** + +Imposm +**diagrams.gis.cli.Imposm** + +Lastools +**diagrams.gis.cli.Lastools** + +Mapnik +**diagrams.gis.cli.Mapnik** + +Mdal +**diagrams.gis.cli.Mdal** + +Pdal +**diagrams.gis.cli.Pdal** + +## gis.data + + +BAN +**diagrams.gis.data.BAN** + +Here +**diagrams.gis.data.Here** + +IGN +**diagrams.gis.data.IGN** + +Openstreetmap +**diagrams.gis.data.Openstreetmap** + +Overturemaps +**diagrams.gis.data.Overturemaps** + +## gis.database + + +Postgis +**diagrams.gis.database.Postgis** + +## gis.desktop + + +Maptunik +**diagrams.gis.desktop.Maptunik** + +QGIS +**diagrams.gis.desktop.QGIS** + +## gis.format + + +Geopackage +**diagrams.gis.format.Geopackage** + +Geoparquet +**diagrams.gis.format.Geoparquet** + +## gis.geocoding + + +Addok +**diagrams.gis.geocoding.Addok** + +Gisgraphy +**diagrams.gis.geocoding.Gisgraphy** + +Nominatim +**diagrams.gis.geocoding.Nominatim** + +Pelias +**diagrams.gis.geocoding.Pelias** + +## gis.georchestra + + +## gis.java + + +Geotools +**diagrams.gis.java.Geotools** + +## gis.javascript + + +Cesium +**diagrams.gis.javascript.Cesium** + +Geostyler +**diagrams.gis.javascript.Geostyler** + +Keplerjs +**diagrams.gis.javascript.Keplerjs** + +Leaflet +**diagrams.gis.javascript.Leaflet** + +Maplibre +**diagrams.gis.javascript.Maplibre** + +OlExt +**diagrams.gis.javascript.OlExt** + +Openlayers +**diagrams.gis.javascript.Openlayers** + +Turfjs +**diagrams.gis.javascript.Turfjs** + +## gis.mobile + + +Mergin +**diagrams.gis.mobile.Mergin** + +Qfield +**diagrams.gis.mobile.Qfield** + +Smash +**diagrams.gis.mobile.Smash** + +## gis.ogc + + +OGC +**diagrams.gis.ogc.OGC** + +WFS +**diagrams.gis.ogc.WFS** + +WMS +**diagrams.gis.ogc.WMS** + +## gis.organization + + +Osgeo +**diagrams.gis.organization.Osgeo** + +## gis.python + + +Geopandas +**diagrams.gis.python.Geopandas** + +Pysal +**diagrams.gis.python.Pysal** + +## gis.routing + + +Graphhopper +**diagrams.gis.routing.Graphhopper** + +Osrm +**diagrams.gis.routing.Osrm** + +Pgrouting +**diagrams.gis.routing.Pgrouting** + +Valhalla +**diagrams.gis.routing.Valhalla** + +## gis.server + + +Actinia +**diagrams.gis.server.Actinia** + +Baremaps +**diagrams.gis.server.Baremaps** + +Deegree +**diagrams.gis.server.Deegree** + +G3WSuite +**diagrams.gis.server.G3WSuite** + +Geohealthcheck +**diagrams.gis.server.Geohealthcheck** + +Geomapfish +**diagrams.gis.server.Geomapfish** + +Geomesa +**diagrams.gis.server.Geomesa** + +Geonetwork +**diagrams.gis.server.Geonetwork** + +Geonode +**diagrams.gis.server.Geonode** + +Georchestra +**diagrams.gis.server.Georchestra** + +Geoserver +**diagrams.gis.server.Geoserver** + +Geowebcache +**diagrams.gis.server.Geowebcache** + +Kepler +**diagrams.gis.server.Kepler** + +Mapproxy +**diagrams.gis.server.Mapproxy** + +Mapserver +**diagrams.gis.server.Mapserver** + +Mapstore +**diagrams.gis.server.Mapstore** + +Mviewer +**diagrams.gis.server.Mviewer** + +Pg_Tileserv +**diagrams.gis.server.Pg_Tileserv** + +Pycsw +**diagrams.gis.server.Pycsw** + +Pygeoapi +**diagrams.gis.server.Pygeoapi** + +QGISServer +**diagrams.gis.server.QGISServer** + +Zooproject +**diagrams.gis.server.Zooproject** diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index 149ebf90..741c347f 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -203,6 +203,9 @@ Node classes list of the onprem provider. Druid **diagrams.onprem.database.Druid** +Duckdb +**diagrams.onprem.database.Duckdb** + Hbase **diagrams.onprem.database.Hbase**, **HBase** (alias) @@ -233,6 +236,9 @@ Node classes list of the onprem provider. Postgresql **diagrams.onprem.database.Postgresql**, **PostgreSQL** (alias) +Qdrant +**diagrams.onprem.database.Qdrant**, **Qdrant** (alias) + Scylla **diagrams.onprem.database.Scylla** @@ -281,6 +287,9 @@ Node classes list of the onprem provider. Awx **diagrams.onprem.iac.Awx** +Pulumi +**diagrams.onprem.iac.Pulumi** + Puppet **diagrams.onprem.iac.Puppet** @@ -401,6 +410,15 @@ Node classes list of the onprem provider. Caddy **diagrams.onprem.network.Caddy** +CiscoRouter +**diagrams.onprem.network.CiscoRouter** + +CiscoSwitchL2 +**diagrams.onprem.network.CiscoSwitchL2** + +CiscoSwitchL3 +**diagrams.onprem.network.CiscoSwitchL3** + Consul **diagrams.onprem.network.Consul** diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md index 54f236d3..8db61382 100644 --- a/docs/nodes/saas.md +++ b/docs/nodes/saas.md @@ -35,6 +35,12 @@ Node classes list of the saas provider. Stitch **diagrams.saas.analytics.Stitch** +## saas.automation + + +N8N +**diagrams.saas.automation.N8N** + ## saas.cdn @@ -47,6 +53,9 @@ Node classes list of the saas provider. Fastly **diagrams.saas.cdn.Fastly** +Imperva +**diagrams.saas.cdn.Imperva** + ## saas.chat diff --git a/poetry.lock b/poetry.lock index d6c4f138..e98e9fce 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "astroid" @@ -6,6 +6,7 @@ version = "3.3.8" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.9.0" +groups = ["dev"] files = [ {file = "astroid-3.3.8-py3-none-any.whl", hash = "sha256:187ccc0c248bfbba564826c26f070494f7bc964fd286b6d9fff4420e55de828c"}, {file = "astroid-3.3.8.tar.gz", hash = "sha256:a88c7994f914a4ea8572fac479459f4955eeccc877be3f2d959a33273b0cf40b"}, @@ -20,6 +21,7 @@ version = "24.10.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, @@ -66,6 +68,7 @@ version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -77,6 +80,7 @@ version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, @@ -91,6 +95,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "sys_platform == \"win32\" or platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -102,6 +108,7 @@ version = "0.3.9" description = "serialize all of Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, @@ -117,6 +124,7 @@ version = "0.3.9" description = "Distribution utilities" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, @@ -128,6 +136,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -142,6 +152,7 @@ version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, @@ -150,7 +161,7 @@ files = [ [package.extras] docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] [[package]] name = "graphviz" @@ -158,6 +169,7 @@ version = "0.20.3" description = "Simple Python interface for Graphviz" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5"}, {file = "graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d"}, @@ -174,6 +186,7 @@ version = "2.6.2" description = "File identification library for Python" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "identify-2.6.2-py2.py3-none-any.whl", hash = "sha256:c097384259f49e372f4ea00a19719d95ae27dd5ff0fd77ad630aa891306b82f3"}, {file = "identify-2.6.2.tar.gz", hash = "sha256:fab5c716c24d7a789775228823797296a2994b075fb6080ac83a102772a98cbd"}, @@ -188,6 +201,7 @@ version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -199,6 +213,7 @@ version = "5.13.2" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" +groups = ["dev"] files = [ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, @@ -213,6 +228,7 @@ version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, @@ -230,6 +246,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -300,6 +317,7 @@ version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -311,6 +329,7 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -322,6 +341,7 @@ version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -333,6 +353,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -344,6 +365,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -355,6 +377,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -371,6 +394,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -386,6 +410,7 @@ version = "4.0.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"}, {file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"}, @@ -398,12 +423,28 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" +[[package]] +name = "pygments" +version = "2.19.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + [[package]] name = "pylint" version = "3.3.3" description = "python code static checker" optional = false python-versions = ">=3.9.0" +groups = ["dev"] files = [ {file = "pylint-3.3.3-py3-none-any.whl", hash = "sha256:26e271a2bc8bce0fc23833805a9076dd9b4d5194e2a02164942cb3cdc37b4183"}, {file = "pylint-3.3.3.tar.gz", hash = "sha256:07c607523b17e6d16e2ae0d7ef59602e332caa762af64203c24b41c27139f36a"}, @@ -415,7 +456,7 @@ colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=0.3.6", markers = "python_version == \"3.11\""}, ] isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" @@ -430,25 +471,27 @@ testutils = ["gitpython (>3)"] [[package]] name = "pytest" -version = "8.3.4" +version = "8.4.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, - {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, + {file = "pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e"}, + {file = "pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} +iniconfig = ">=1" +packaging = ">=20" pluggy = ">=1.5,<2" +pygments = ">=2.7.2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "pytoolconfig" @@ -456,6 +499,7 @@ version = "1.3.1" description = "Python tool configuration" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pytoolconfig-1.3.1-py3-none-any.whl", hash = "sha256:5d8cea8ae1996938ec3eaf44567bbc5ef1bc900742190c439a44a704d6e1b62b"}, {file = "pytoolconfig-1.3.1.tar.gz", hash = "sha256:51e6bd1a6f108238ae6aab6a65e5eed5e75d456be1c2bf29b04e5c1e7d7adbae"}, @@ -478,6 +522,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -540,6 +585,7 @@ version = "1.13.0" description = "a python refactoring library..." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "rope-1.13.0-py3-none-any.whl", hash = "sha256:b435a0c0971244fdcd8741676a9fae697ae614c20cc36003678a7782f25c0d6c"}, {file = "rope-1.13.0.tar.gz", hash = "sha256:51437d2decc8806cd5e9dd1fd9c1306a6d9075ecaf78d191af85fc1dfface880"}, @@ -559,6 +605,8 @@ version = "2.1.0" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, @@ -570,6 +618,7 @@ version = "0.13.2" description = "Style preserving TOML library" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, @@ -581,6 +630,8 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -592,6 +643,7 @@ version = "20.27.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4"}, {file = "virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba"}, @@ -604,9 +656,9 @@ platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.9" -content-hash = "64d8272592088d0e7a3aee3d7318d26acd2de67d7875b5bd00f10a593aec84dc" +content-hash = "f774f01a9f7a5b2068566d1adf607e388e055eeb6c59245e4ac820660337a9dc" diff --git a/pyproject.toml b/pyproject.toml index bcb1e65e..6e1cb2d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "diagrams" -version = "0.24.1" +version = "0.24.4" description = "Diagram as Code" license = "MIT" authors = ["mingrammer "] @@ -17,14 +17,14 @@ python = "^3.9" graphviz = ">=0.13.2,<0.21.0" jinja2 = ">=2.10,<4.0" typed-ast = {version="^1.5.5", markers="python_version<'3.8'"} -pre-commit = "^4.0.1" [tool.poetry.dev-dependencies] -pytest = "^8.3" +pytest = "^8.4" pylint = "^3.3" rope = "^1.13" isort = "^5.13" black = "^24.4" +pre-commit = "^4.0.1" [tool.black] line-length=120 diff --git a/resources/aws/compute/elastic-container-service-task.png b/resources/aws/compute/elastic-container-service-task.png new file mode 100644 index 00000000..781c93ef Binary files /dev/null and b/resources/aws/compute/elastic-container-service-task.png differ diff --git a/resources/aws/devtools/cloudshell.png b/resources/aws/devtools/cloudshell.png new file mode 100644 index 00000000..fe36338d Binary files /dev/null and b/resources/aws/devtools/cloudshell.png differ diff --git a/resources/aws/integration/eventbridge-default-event-bus-resource.png b/resources/aws/integration/eventbridge-default-event-bus-resource.png index e59b3e5f..8ac11fc7 100644 Binary files a/resources/aws/integration/eventbridge-default-event-bus-resource.png and b/resources/aws/integration/eventbridge-default-event-bus-resource.png differ diff --git a/resources/aws/integration/eventbridge-event.png b/resources/aws/integration/eventbridge-event.png new file mode 100644 index 00000000..f9afe8d8 Binary files /dev/null and b/resources/aws/integration/eventbridge-event.png differ diff --git a/resources/aws/integration/eventbridge-pipes.png b/resources/aws/integration/eventbridge-pipes.png new file mode 100644 index 00000000..02e657df Binary files /dev/null and b/resources/aws/integration/eventbridge-pipes.png differ diff --git a/resources/aws/integration/eventbridge-rule.png b/resources/aws/integration/eventbridge-rule.png new file mode 100644 index 00000000..0fb288db Binary files /dev/null and b/resources/aws/integration/eventbridge-rule.png differ diff --git a/resources/aws/integration/eventbridge-scheduler.png b/resources/aws/integration/eventbridge-scheduler.png new file mode 100644 index 00000000..cf18011b Binary files /dev/null and b/resources/aws/integration/eventbridge-scheduler.png differ diff --git a/resources/aws/integration/eventbridge-schema.png b/resources/aws/integration/eventbridge-schema.png new file mode 100644 index 00000000..b2d685fd Binary files /dev/null and b/resources/aws/integration/eventbridge-schema.png differ diff --git a/resources/aws/management/user-notifications.png b/resources/aws/management/user-notifications.png new file mode 100644 index 00000000..fb4511f3 Binary files /dev/null and b/resources/aws/management/user-notifications.png differ diff --git a/resources/aws/ml/bedrock.png b/resources/aws/ml/bedrock.png new file mode 100644 index 00000000..0f184124 Binary files /dev/null and b/resources/aws/ml/bedrock.png differ diff --git a/resources/aws/ml/q.png b/resources/aws/ml/q.png new file mode 100644 index 00000000..2e381ca3 Binary files /dev/null and b/resources/aws/ml/q.png differ diff --git a/resources/azure/ml/azure-speech-service.png b/resources/azure/ml/azure-speech-service.png new file mode 100644 index 00000000..7716f11d Binary files /dev/null and b/resources/azure/ml/azure-speech-service.png differ diff --git a/resources/azure/ml/azure-speed-to-text.png b/resources/azure/ml/azure-speed-to-text.png deleted file mode 100644 index ca331f12..00000000 Binary files a/resources/azure/ml/azure-speed-to-text.png and /dev/null differ diff --git a/resources/gis/cli/gdal.png b/resources/gis/cli/gdal.png new file mode 100644 index 00000000..19c93bde Binary files /dev/null and b/resources/gis/cli/gdal.png differ diff --git a/resources/gis/cli/imposm.png b/resources/gis/cli/imposm.png new file mode 100644 index 00000000..6bbb013b Binary files /dev/null and b/resources/gis/cli/imposm.png differ diff --git a/resources/gis/cli/lastools.png b/resources/gis/cli/lastools.png new file mode 100644 index 00000000..7e5848ee Binary files /dev/null and b/resources/gis/cli/lastools.png differ diff --git a/resources/gis/cli/mapnik.png b/resources/gis/cli/mapnik.png new file mode 100644 index 00000000..622cacf4 Binary files /dev/null and b/resources/gis/cli/mapnik.png differ diff --git a/resources/gis/cli/mdal.png b/resources/gis/cli/mdal.png new file mode 100644 index 00000000..b1e1ed40 Binary files /dev/null and b/resources/gis/cli/mdal.png differ diff --git a/resources/gis/cli/pdal.png b/resources/gis/cli/pdal.png new file mode 100644 index 00000000..522949b6 Binary files /dev/null and b/resources/gis/cli/pdal.png differ diff --git a/resources/gis/data/ban.png b/resources/gis/data/ban.png new file mode 100644 index 00000000..af20419b Binary files /dev/null and b/resources/gis/data/ban.png differ diff --git a/resources/gis/data/here.png b/resources/gis/data/here.png new file mode 100644 index 00000000..62b4f304 Binary files /dev/null and b/resources/gis/data/here.png differ diff --git a/resources/gis/data/ign.png b/resources/gis/data/ign.png new file mode 100644 index 00000000..c9b0e8c8 Binary files /dev/null and b/resources/gis/data/ign.png differ diff --git a/resources/gis/data/openstreetmap.png b/resources/gis/data/openstreetmap.png new file mode 100644 index 00000000..385bd973 Binary files /dev/null and b/resources/gis/data/openstreetmap.png differ diff --git a/resources/gis/data/overturemaps.png b/resources/gis/data/overturemaps.png new file mode 100644 index 00000000..44f52acc Binary files /dev/null and b/resources/gis/data/overturemaps.png differ diff --git a/resources/gis/database/postgis.png b/resources/gis/database/postgis.png new file mode 100644 index 00000000..a6dc7b42 Binary files /dev/null and b/resources/gis/database/postgis.png differ diff --git a/resources/gis/desktop/maptunik.png b/resources/gis/desktop/maptunik.png new file mode 100644 index 00000000..4710e80f Binary files /dev/null and b/resources/gis/desktop/maptunik.png differ diff --git a/resources/gis/desktop/qgis.png b/resources/gis/desktop/qgis.png new file mode 100644 index 00000000..3dc4b1cd Binary files /dev/null and b/resources/gis/desktop/qgis.png differ diff --git a/resources/gis/format/geopackage.png b/resources/gis/format/geopackage.png new file mode 100644 index 00000000..0ff77fbf Binary files /dev/null and b/resources/gis/format/geopackage.png differ diff --git a/resources/gis/format/geoparquet.png b/resources/gis/format/geoparquet.png new file mode 100644 index 00000000..d5ea1fd0 Binary files /dev/null and b/resources/gis/format/geoparquet.png differ diff --git a/resources/gis/geocoding/addok.png b/resources/gis/geocoding/addok.png new file mode 100644 index 00000000..93282493 Binary files /dev/null and b/resources/gis/geocoding/addok.png differ diff --git a/resources/gis/geocoding/gisgraphy.png b/resources/gis/geocoding/gisgraphy.png new file mode 100644 index 00000000..2d23928f Binary files /dev/null and b/resources/gis/geocoding/gisgraphy.png differ diff --git a/resources/gis/geocoding/nominatim.png b/resources/gis/geocoding/nominatim.png new file mode 100644 index 00000000..385bd973 Binary files /dev/null and b/resources/gis/geocoding/nominatim.png differ diff --git a/resources/gis/geocoding/pelias.png b/resources/gis/geocoding/pelias.png new file mode 100644 index 00000000..6037fdec Binary files /dev/null and b/resources/gis/geocoding/pelias.png differ diff --git a/resources/gis/georchestra/analytics.svg b/resources/gis/georchestra/analytics.svg new file mode 100644 index 00000000..fcd4027d --- /dev/null +++ b/resources/gis/georchestra/analytics.svg @@ -0,0 +1,355 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/gis/georchestra/data_api.svg b/resources/gis/georchestra/data_api.svg new file mode 100644 index 00000000..004328e8 --- /dev/null +++ b/resources/gis/georchestra/data_api.svg @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/gis/georchestra/datafeeder.svg b/resources/gis/georchestra/datafeeder.svg new file mode 100644 index 00000000..c709fc46 --- /dev/null +++ b/resources/gis/georchestra/datafeeder.svg @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/gis/gis.png b/resources/gis/gis.png new file mode 100644 index 00000000..95e4a2ef Binary files /dev/null and b/resources/gis/gis.png differ diff --git a/resources/gis/java/geotools.png b/resources/gis/java/geotools.png new file mode 100644 index 00000000..624de5e1 Binary files /dev/null and b/resources/gis/java/geotools.png differ diff --git a/resources/gis/javascript/cesium.png b/resources/gis/javascript/cesium.png new file mode 100644 index 00000000..299a77d0 Binary files /dev/null and b/resources/gis/javascript/cesium.png differ diff --git a/resources/gis/javascript/geostyler.png b/resources/gis/javascript/geostyler.png new file mode 100644 index 00000000..ba4b1584 Binary files /dev/null and b/resources/gis/javascript/geostyler.png differ diff --git a/resources/gis/javascript/keplerjs.png b/resources/gis/javascript/keplerjs.png new file mode 100644 index 00000000..88363f02 Binary files /dev/null and b/resources/gis/javascript/keplerjs.png differ diff --git a/resources/gis/javascript/leaflet.png b/resources/gis/javascript/leaflet.png new file mode 100644 index 00000000..de9bc219 Binary files /dev/null and b/resources/gis/javascript/leaflet.png differ diff --git a/resources/gis/javascript/maplibre.png b/resources/gis/javascript/maplibre.png new file mode 100644 index 00000000..24502953 Binary files /dev/null and b/resources/gis/javascript/maplibre.png differ diff --git a/resources/gis/javascript/ol-ext.png b/resources/gis/javascript/ol-ext.png new file mode 100644 index 00000000..091fa606 Binary files /dev/null and b/resources/gis/javascript/ol-ext.png differ diff --git a/resources/gis/javascript/openlayers.png b/resources/gis/javascript/openlayers.png new file mode 100644 index 00000000..1ece99db Binary files /dev/null and b/resources/gis/javascript/openlayers.png differ diff --git a/resources/gis/javascript/turfjs.png b/resources/gis/javascript/turfjs.png new file mode 100644 index 00000000..fab4c46f Binary files /dev/null and b/resources/gis/javascript/turfjs.png differ diff --git a/resources/gis/mobile/mergin.png b/resources/gis/mobile/mergin.png new file mode 100644 index 00000000..00289fc3 Binary files /dev/null and b/resources/gis/mobile/mergin.png differ diff --git a/resources/gis/mobile/qfield.png b/resources/gis/mobile/qfield.png new file mode 100644 index 00000000..eb8f8c19 Binary files /dev/null and b/resources/gis/mobile/qfield.png differ diff --git a/resources/gis/mobile/smash.png b/resources/gis/mobile/smash.png new file mode 100644 index 00000000..38256c37 Binary files /dev/null and b/resources/gis/mobile/smash.png differ diff --git a/resources/gis/ogc/ogc.png b/resources/gis/ogc/ogc.png new file mode 100644 index 00000000..95b2f14f Binary files /dev/null and b/resources/gis/ogc/ogc.png differ diff --git a/resources/gis/ogc/wfs.png b/resources/gis/ogc/wfs.png new file mode 100644 index 00000000..248ad034 Binary files /dev/null and b/resources/gis/ogc/wfs.png differ diff --git a/resources/gis/ogc/wms.png b/resources/gis/ogc/wms.png new file mode 100644 index 00000000..2893bbab Binary files /dev/null and b/resources/gis/ogc/wms.png differ diff --git a/resources/gis/organization/osgeo.png b/resources/gis/organization/osgeo.png new file mode 100644 index 00000000..87095a95 Binary files /dev/null and b/resources/gis/organization/osgeo.png differ diff --git a/resources/gis/python/geopandas.png b/resources/gis/python/geopandas.png new file mode 100644 index 00000000..2bd72973 Binary files /dev/null and b/resources/gis/python/geopandas.png differ diff --git a/resources/gis/python/pysal.png b/resources/gis/python/pysal.png new file mode 100644 index 00000000..3e862666 Binary files /dev/null and b/resources/gis/python/pysal.png differ diff --git a/resources/gis/routing/graphhopper.png b/resources/gis/routing/graphhopper.png new file mode 100644 index 00000000..7d9bda14 Binary files /dev/null and b/resources/gis/routing/graphhopper.png differ diff --git a/resources/gis/routing/osrm.png b/resources/gis/routing/osrm.png new file mode 100644 index 00000000..b2a922ab Binary files /dev/null and b/resources/gis/routing/osrm.png differ diff --git a/resources/gis/routing/pgrouting.png b/resources/gis/routing/pgrouting.png new file mode 100644 index 00000000..65ca4f3e Binary files /dev/null and b/resources/gis/routing/pgrouting.png differ diff --git a/resources/gis/routing/valhalla.png b/resources/gis/routing/valhalla.png new file mode 100644 index 00000000..4756cf99 Binary files /dev/null and b/resources/gis/routing/valhalla.png differ diff --git a/resources/gis/server/actinia.png b/resources/gis/server/actinia.png new file mode 100644 index 00000000..f75392a2 Binary files /dev/null and b/resources/gis/server/actinia.png differ diff --git a/resources/gis/server/baremaps.png b/resources/gis/server/baremaps.png new file mode 100644 index 00000000..1614db7b Binary files /dev/null and b/resources/gis/server/baremaps.png differ diff --git a/resources/gis/server/deegree.png b/resources/gis/server/deegree.png new file mode 100644 index 00000000..7ca17425 Binary files /dev/null and b/resources/gis/server/deegree.png differ diff --git a/resources/gis/server/g3w-suite.png b/resources/gis/server/g3w-suite.png new file mode 100644 index 00000000..9deea206 Binary files /dev/null and b/resources/gis/server/g3w-suite.png differ diff --git a/resources/gis/server/geohealthcheck.png b/resources/gis/server/geohealthcheck.png new file mode 100644 index 00000000..85299553 Binary files /dev/null and b/resources/gis/server/geohealthcheck.png differ diff --git a/resources/gis/server/geomapfish.png b/resources/gis/server/geomapfish.png new file mode 100644 index 00000000..631e3857 Binary files /dev/null and b/resources/gis/server/geomapfish.png differ diff --git a/resources/gis/server/geomesa.png b/resources/gis/server/geomesa.png new file mode 100644 index 00000000..8fe1a64d Binary files /dev/null and b/resources/gis/server/geomesa.png differ diff --git a/resources/gis/server/geonetwork.png b/resources/gis/server/geonetwork.png new file mode 100644 index 00000000..8d117081 Binary files /dev/null and b/resources/gis/server/geonetwork.png differ diff --git a/resources/gis/server/geonode.png b/resources/gis/server/geonode.png new file mode 100644 index 00000000..b8de5c25 Binary files /dev/null and b/resources/gis/server/geonode.png differ diff --git a/resources/gis/server/georchestra.png b/resources/gis/server/georchestra.png new file mode 100644 index 00000000..3fe1b1c9 Binary files /dev/null and b/resources/gis/server/georchestra.png differ diff --git a/resources/gis/server/geoserver.png b/resources/gis/server/geoserver.png new file mode 100644 index 00000000..cea9265e Binary files /dev/null and b/resources/gis/server/geoserver.png differ diff --git a/resources/gis/server/geowebcache.png b/resources/gis/server/geowebcache.png new file mode 100644 index 00000000..ff5277dd Binary files /dev/null and b/resources/gis/server/geowebcache.png differ diff --git a/resources/gis/server/kepler.png b/resources/gis/server/kepler.png new file mode 100644 index 00000000..23e1428e Binary files /dev/null and b/resources/gis/server/kepler.png differ diff --git a/resources/gis/server/mapproxy.png b/resources/gis/server/mapproxy.png new file mode 100644 index 00000000..9b119df6 Binary files /dev/null and b/resources/gis/server/mapproxy.png differ diff --git a/resources/gis/server/mapserver.png b/resources/gis/server/mapserver.png new file mode 100644 index 00000000..f03354df Binary files /dev/null and b/resources/gis/server/mapserver.png differ diff --git a/resources/gis/server/mapstore.png b/resources/gis/server/mapstore.png new file mode 100644 index 00000000..c8bf5fdb Binary files /dev/null and b/resources/gis/server/mapstore.png differ diff --git a/resources/gis/server/mviewer.png b/resources/gis/server/mviewer.png new file mode 100644 index 00000000..0b4166cc Binary files /dev/null and b/resources/gis/server/mviewer.png differ diff --git a/resources/gis/server/pg_tileserv.png b/resources/gis/server/pg_tileserv.png new file mode 100644 index 00000000..be52c5f5 Binary files /dev/null and b/resources/gis/server/pg_tileserv.png differ diff --git a/resources/gis/server/pycsw.png b/resources/gis/server/pycsw.png new file mode 100644 index 00000000..acf6c054 Binary files /dev/null and b/resources/gis/server/pycsw.png differ diff --git a/resources/gis/server/pygeoapi.png b/resources/gis/server/pygeoapi.png new file mode 100644 index 00000000..8517f80e Binary files /dev/null and b/resources/gis/server/pygeoapi.png differ diff --git a/resources/gis/server/qgis-server.png b/resources/gis/server/qgis-server.png new file mode 100644 index 00000000..3dc4b1cd Binary files /dev/null and b/resources/gis/server/qgis-server.png differ diff --git a/resources/gis/server/zooproject.png b/resources/gis/server/zooproject.png new file mode 100644 index 00000000..53e71524 Binary files /dev/null and b/resources/gis/server/zooproject.png differ diff --git a/resources/onprem/database/duckdb.png b/resources/onprem/database/duckdb.png new file mode 100644 index 00000000..4c923a73 Binary files /dev/null and b/resources/onprem/database/duckdb.png differ diff --git a/resources/onprem/database/qdrant.png b/resources/onprem/database/qdrant.png new file mode 100644 index 00000000..5d489014 Binary files /dev/null and b/resources/onprem/database/qdrant.png differ diff --git a/resources/onprem/iac/pulumi.png b/resources/onprem/iac/pulumi.png new file mode 100644 index 00000000..3078d000 Binary files /dev/null and b/resources/onprem/iac/pulumi.png differ diff --git a/resources/onprem/network/cisco-router.png b/resources/onprem/network/cisco-router.png new file mode 100644 index 00000000..0d1bd810 Binary files /dev/null and b/resources/onprem/network/cisco-router.png differ diff --git a/resources/onprem/network/cisco-switch-l2.png b/resources/onprem/network/cisco-switch-l2.png new file mode 100644 index 00000000..6f0b6f8c Binary files /dev/null and b/resources/onprem/network/cisco-switch-l2.png differ diff --git a/resources/onprem/network/cisco-switch-l3.png b/resources/onprem/network/cisco-switch-l3.png new file mode 100644 index 00000000..65e9b165 Binary files /dev/null and b/resources/onprem/network/cisco-switch-l3.png differ diff --git a/resources/programming/framework/angular.png b/resources/programming/framework/angular.png index a3c90671..836a59be 100644 Binary files a/resources/programming/framework/angular.png and b/resources/programming/framework/angular.png differ diff --git a/resources/saas/automation/n8n.png b/resources/saas/automation/n8n.png new file mode 100644 index 00000000..c11098d5 Binary files /dev/null and b/resources/saas/automation/n8n.png differ diff --git a/resources/saas/cdn/imperva.png b/resources/saas/cdn/imperva.png new file mode 100644 index 00000000..ee7055c8 Binary files /dev/null and b/resources/saas/cdn/imperva.png differ diff --git a/scripts/resource.py b/scripts/resource.py index bc98a72c..e4c27e28 100644 --- a/scripts/resource.py +++ b/scripts/resource.py @@ -137,6 +137,10 @@ def cleaner_openstack(f): return f.lower() +def cleaner_gis(f): + return f.lower() + + cleaners = { "onprem": cleaner_onprem, "aws": cleaner_aws, @@ -154,6 +158,7 @@ cleaners = { "outscale": cleaner_outscale, "generic": cleaner_generic, "openstack": cleaner_openstack, + "gis": cleaner_gis, } diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 00000000..77759f59 --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,95 @@ +import os +import unittest +from io import StringIO +from unittest.mock import mock_open, patch + +from diagrams.cli import run + + +class CliTest(unittest.TestCase): + def setUp(self): + self.test_file = "test_diagram.py" + # dummy content for the test file + self.test_content_1 = """ +from diagrams import Diagram +with Diagram(name="Test", show=False): + pass +""" + # content from getting started examples with utf-8 + # only support the installed fonts defined in Dockerfile + self.test_content_2 = """ +from diagrams import Diagram +from diagrams.aws.compute import EC2 +from diagrams.aws.database import RDS +from diagrams.aws.network import ELB + +with Diagram("test_2", show=False, direction="TB"): + ELB("lb") >> [EC2("ワーカー1"), + EC2("작업자 2를"), + EC2("робітник 3"), + EC2("worker4"), + EC2("työntekijä 4")] >> RDS("events") +""" + + def tearDown(self): + try: + os.remove("test.png") + except FileNotFoundError: + pass + + def test_run_with_valid_file(self): + # write the test file + with open(self.test_file, "w") as f: + f.write(self.test_content_1) + with patch("sys.argv", ["diagrams", self.test_file]): + exit_code = run() + self.assertEqual(exit_code, 0) + try: + os.remove(self.test_file) + except FileNotFoundError: + pass + + def test_run_with_multiple_files(self): + + multiple_files = ["file1.py", "file2.py"] + + # write the code files + with open("file1.py", "w") as f: + f.write(self.test_content_1) + with open("file2.py", "w") as f: + f.write(self.test_content_2) + + with patch("sys.argv", ["diagrams"] + multiple_files): + exit_code = run() + self.assertEqual(exit_code, 0) + + # cleanup code file + for one_file in multiple_files: + try: + os.remove(one_file) + except FileNotFoundError: + pass + # cleanup generated image + try: + os.remove("test_2.png") + except FileNotFoundError: + pass + + def test_run_with_no_arguments(self): + with patch("sys.argv", ["diagrams"]): + with patch("sys.stderr", new=StringIO()) as fake_stderr: + with self.assertRaises(SystemExit): + run() + self.assertIn("the following arguments are required: path", fake_stderr.getvalue()) + + def test_run_with_nonexistent_file(self): + with patch("sys.argv", ["diagrams", "nonexistent.py"]): + with self.assertRaises(FileNotFoundError): + run() + + def test_run_with_invalid_python_code(self): + invalid_content = "this is not valid python code" + with patch("builtins.open", mock_open(read_data=invalid_content)): + with patch("sys.argv", ["diagrams", self.test_file]): + with self.assertRaises(SyntaxError): + run() diff --git a/website/i18n/en.json b/website/i18n/en.json index 7af9afd0..e411b343 100644 --- a/website/i18n/en.json +++ b/website/i18n/en.json @@ -53,6 +53,9 @@ "nodes/generic": { "title": "Generic" }, + "nodes/gis": { + "title": "GIS" + }, "nodes/ibm": { "title": "IBM" }, diff --git a/website/sidebars.json b/website/sidebars.json index 97086c08..e6b928fd 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -28,7 +28,8 @@ "nodes/programming", "nodes/saas", "nodes/c4", - "nodes/custom" + "nodes/custom", + "nodes/gis" ] } } diff --git a/website/static/img/advanced_web_service_with_on-premise_less_edges.png b/website/static/img/advanced_web_service_with_on-premise_less_edges.png new file mode 100644 index 00000000..c3eca10a Binary files /dev/null and b/website/static/img/advanced_web_service_with_on-premise_less_edges.png differ diff --git a/website/static/img/advanced_web_service_with_on-premise_merged_edges.png b/website/static/img/advanced_web_service_with_on-premise_merged_edges.png new file mode 100644 index 00000000..f04ab058 Binary files /dev/null and b/website/static/img/advanced_web_service_with_on-premise_merged_edges.png differ diff --git a/website/static/img/resources/aws/compute/elastic-container-service-task.png b/website/static/img/resources/aws/compute/elastic-container-service-task.png new file mode 100644 index 00000000..781c93ef Binary files /dev/null and b/website/static/img/resources/aws/compute/elastic-container-service-task.png differ diff --git a/website/static/img/resources/aws/devtools/cloudshell.png b/website/static/img/resources/aws/devtools/cloudshell.png new file mode 100644 index 00000000..fe36338d Binary files /dev/null and b/website/static/img/resources/aws/devtools/cloudshell.png differ diff --git a/website/static/img/resources/aws/integration/eventbridge-default-event-bus-resource.png b/website/static/img/resources/aws/integration/eventbridge-default-event-bus-resource.png index e59b3e5f..d62a871a 100644 Binary files a/website/static/img/resources/aws/integration/eventbridge-default-event-bus-resource.png and b/website/static/img/resources/aws/integration/eventbridge-default-event-bus-resource.png differ diff --git a/website/static/img/resources/aws/integration/eventbridge-event.png b/website/static/img/resources/aws/integration/eventbridge-event.png new file mode 100644 index 00000000..6d82886c Binary files /dev/null and b/website/static/img/resources/aws/integration/eventbridge-event.png differ diff --git a/website/static/img/resources/aws/integration/eventbridge-pipes.png b/website/static/img/resources/aws/integration/eventbridge-pipes.png new file mode 100644 index 00000000..785c8a68 Binary files /dev/null and b/website/static/img/resources/aws/integration/eventbridge-pipes.png differ diff --git a/website/static/img/resources/aws/integration/eventbridge-rule.png b/website/static/img/resources/aws/integration/eventbridge-rule.png new file mode 100644 index 00000000..1ac1952b Binary files /dev/null and b/website/static/img/resources/aws/integration/eventbridge-rule.png differ diff --git a/website/static/img/resources/aws/integration/eventbridge-scheduler.png b/website/static/img/resources/aws/integration/eventbridge-scheduler.png new file mode 100644 index 00000000..5a337b39 Binary files /dev/null and b/website/static/img/resources/aws/integration/eventbridge-scheduler.png differ diff --git a/website/static/img/resources/aws/integration/eventbridge-schema.png b/website/static/img/resources/aws/integration/eventbridge-schema.png new file mode 100644 index 00000000..418d8b39 Binary files /dev/null and b/website/static/img/resources/aws/integration/eventbridge-schema.png differ diff --git a/website/static/img/resources/aws/management/user-notifications.png b/website/static/img/resources/aws/management/user-notifications.png new file mode 100644 index 00000000..fb4511f3 Binary files /dev/null and b/website/static/img/resources/aws/management/user-notifications.png differ diff --git a/website/static/img/resources/aws/ml/bedrock.png b/website/static/img/resources/aws/ml/bedrock.png new file mode 100644 index 00000000..0f184124 Binary files /dev/null and b/website/static/img/resources/aws/ml/bedrock.png differ diff --git a/website/static/img/resources/aws/ml/q.png b/website/static/img/resources/aws/ml/q.png new file mode 100644 index 00000000..2e381ca3 Binary files /dev/null and b/website/static/img/resources/aws/ml/q.png differ diff --git a/website/static/img/resources/azure/ml/azure-speech-service.png b/website/static/img/resources/azure/ml/azure-speech-service.png new file mode 100644 index 00000000..7716f11d Binary files /dev/null and b/website/static/img/resources/azure/ml/azure-speech-service.png differ diff --git a/website/static/img/resources/azure/ml/azure-speed-to-text.png b/website/static/img/resources/azure/ml/azure-speed-to-text.png deleted file mode 100644 index ca331f12..00000000 Binary files a/website/static/img/resources/azure/ml/azure-speed-to-text.png and /dev/null differ diff --git a/website/static/img/resources/cas.png b/website/static/img/resources/cas.png new file mode 100644 index 00000000..1f69615f Binary files /dev/null and b/website/static/img/resources/cas.png differ diff --git a/website/static/img/resources/gis/cli/gdal.png b/website/static/img/resources/gis/cli/gdal.png new file mode 100644 index 00000000..19c93bde Binary files /dev/null and b/website/static/img/resources/gis/cli/gdal.png differ diff --git a/website/static/img/resources/gis/cli/imposm.png b/website/static/img/resources/gis/cli/imposm.png new file mode 100644 index 00000000..6bbb013b Binary files /dev/null and b/website/static/img/resources/gis/cli/imposm.png differ diff --git a/website/static/img/resources/gis/cli/lastools.png b/website/static/img/resources/gis/cli/lastools.png new file mode 100644 index 00000000..7e5848ee Binary files /dev/null and b/website/static/img/resources/gis/cli/lastools.png differ diff --git a/website/static/img/resources/gis/cli/mapnik.png b/website/static/img/resources/gis/cli/mapnik.png new file mode 100644 index 00000000..622cacf4 Binary files /dev/null and b/website/static/img/resources/gis/cli/mapnik.png differ diff --git a/website/static/img/resources/gis/cli/mdal.png b/website/static/img/resources/gis/cli/mdal.png new file mode 100644 index 00000000..b1e1ed40 Binary files /dev/null and b/website/static/img/resources/gis/cli/mdal.png differ diff --git a/website/static/img/resources/gis/cli/pdal.png b/website/static/img/resources/gis/cli/pdal.png new file mode 100644 index 00000000..522949b6 Binary files /dev/null and b/website/static/img/resources/gis/cli/pdal.png differ diff --git a/website/static/img/resources/gis/cplusplus/mapnik.png b/website/static/img/resources/gis/cplusplus/mapnik.png new file mode 100644 index 00000000..622cacf4 Binary files /dev/null and b/website/static/img/resources/gis/cplusplus/mapnik.png differ diff --git a/website/static/img/resources/gis/data/ban.png b/website/static/img/resources/gis/data/ban.png new file mode 100644 index 00000000..af20419b Binary files /dev/null and b/website/static/img/resources/gis/data/ban.png differ diff --git a/website/static/img/resources/gis/data/here.png b/website/static/img/resources/gis/data/here.png new file mode 100644 index 00000000..62b4f304 Binary files /dev/null and b/website/static/img/resources/gis/data/here.png differ diff --git a/website/static/img/resources/gis/data/ign.png b/website/static/img/resources/gis/data/ign.png new file mode 100644 index 00000000..c9b0e8c8 Binary files /dev/null and b/website/static/img/resources/gis/data/ign.png differ diff --git a/website/static/img/resources/gis/data/nev_logo.png b/website/static/img/resources/gis/data/nev_logo.png new file mode 100644 index 00000000..d56fe14e Binary files /dev/null and b/website/static/img/resources/gis/data/nev_logo.png differ diff --git a/website/static/img/resources/gis/data/openstreetmap.png b/website/static/img/resources/gis/data/openstreetmap.png new file mode 100644 index 00000000..385bd973 Binary files /dev/null and b/website/static/img/resources/gis/data/openstreetmap.png differ diff --git a/website/static/img/resources/gis/data/overturemaps.png b/website/static/img/resources/gis/data/overturemaps.png new file mode 100644 index 00000000..44f52acc Binary files /dev/null and b/website/static/img/resources/gis/data/overturemaps.png differ diff --git a/website/static/img/resources/gis/database/logo_square_postgis.png b/website/static/img/resources/gis/database/logo_square_postgis.png new file mode 100644 index 00000000..0368e76e Binary files /dev/null and b/website/static/img/resources/gis/database/logo_square_postgis.png differ diff --git a/website/static/img/resources/gis/database/postgis.png b/website/static/img/resources/gis/database/postgis.png new file mode 100644 index 00000000..a6dc7b42 Binary files /dev/null and b/website/static/img/resources/gis/database/postgis.png differ diff --git a/website/static/img/resources/gis/desktop/maptunik.png b/website/static/img/resources/gis/desktop/maptunik.png new file mode 100644 index 00000000..4710e80f Binary files /dev/null and b/website/static/img/resources/gis/desktop/maptunik.png differ diff --git a/website/static/img/resources/gis/desktop/qgis.png b/website/static/img/resources/gis/desktop/qgis.png new file mode 100644 index 00000000..3dc4b1cd Binary files /dev/null and b/website/static/img/resources/gis/desktop/qgis.png differ diff --git a/website/static/img/resources/gis/format/geopackage.png b/website/static/img/resources/gis/format/geopackage.png new file mode 100644 index 00000000..0ff77fbf Binary files /dev/null and b/website/static/img/resources/gis/format/geopackage.png differ diff --git a/website/static/img/resources/gis/format/geoparquet.png b/website/static/img/resources/gis/format/geoparquet.png new file mode 100644 index 00000000..d5ea1fd0 Binary files /dev/null and b/website/static/img/resources/gis/format/geoparquet.png differ diff --git a/website/static/img/resources/gis/geocoding/addok.png b/website/static/img/resources/gis/geocoding/addok.png new file mode 100644 index 00000000..93282493 Binary files /dev/null and b/website/static/img/resources/gis/geocoding/addok.png differ diff --git a/website/static/img/resources/gis/geocoding/gisgraphy.png b/website/static/img/resources/gis/geocoding/gisgraphy.png new file mode 100644 index 00000000..2d23928f Binary files /dev/null and b/website/static/img/resources/gis/geocoding/gisgraphy.png differ diff --git a/website/static/img/resources/gis/geocoding/nominatim.png b/website/static/img/resources/gis/geocoding/nominatim.png new file mode 100644 index 00000000..385bd973 Binary files /dev/null and b/website/static/img/resources/gis/geocoding/nominatim.png differ diff --git a/website/static/img/resources/gis/geocoding/pelias.png b/website/static/img/resources/gis/geocoding/pelias.png new file mode 100644 index 00000000..6037fdec Binary files /dev/null and b/website/static/img/resources/gis/geocoding/pelias.png differ diff --git a/website/static/img/resources/gis/georchestra/analytics.svg b/website/static/img/resources/gis/georchestra/analytics.svg new file mode 100644 index 00000000..fcd4027d --- /dev/null +++ b/website/static/img/resources/gis/georchestra/analytics.svg @@ -0,0 +1,355 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/resources/gis/georchestra/data_api.svg b/website/static/img/resources/gis/georchestra/data_api.svg new file mode 100644 index 00000000..004328e8 --- /dev/null +++ b/website/static/img/resources/gis/georchestra/data_api.svg @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/resources/gis/georchestra/datafeeder.svg b/website/static/img/resources/gis/georchestra/datafeeder.svg new file mode 100644 index 00000000..c709fc46 --- /dev/null +++ b/website/static/img/resources/gis/georchestra/datafeeder.svg @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/resources/gis/gis.png b/website/static/img/resources/gis/gis.png new file mode 100644 index 00000000..95e4a2ef Binary files /dev/null and b/website/static/img/resources/gis/gis.png differ diff --git a/website/static/img/resources/gis/java/geotools.png b/website/static/img/resources/gis/java/geotools.png new file mode 100644 index 00000000..624de5e1 Binary files /dev/null and b/website/static/img/resources/gis/java/geotools.png differ diff --git a/website/static/img/resources/gis/javascript/cesium.png b/website/static/img/resources/gis/javascript/cesium.png new file mode 100644 index 00000000..299a77d0 Binary files /dev/null and b/website/static/img/resources/gis/javascript/cesium.png differ diff --git a/website/static/img/resources/gis/javascript/favicon.ico b/website/static/img/resources/gis/javascript/favicon.ico new file mode 100644 index 00000000..bc4bafb6 Binary files /dev/null and b/website/static/img/resources/gis/javascript/favicon.ico differ diff --git a/website/static/img/resources/gis/javascript/geostyler.png b/website/static/img/resources/gis/javascript/geostyler.png new file mode 100644 index 00000000..ba4b1584 Binary files /dev/null and b/website/static/img/resources/gis/javascript/geostyler.png differ diff --git a/website/static/img/resources/gis/javascript/keplerjs.png b/website/static/img/resources/gis/javascript/keplerjs.png new file mode 100644 index 00000000..88363f02 Binary files /dev/null and b/website/static/img/resources/gis/javascript/keplerjs.png differ diff --git a/website/static/img/resources/gis/javascript/leaflet.png b/website/static/img/resources/gis/javascript/leaflet.png new file mode 100644 index 00000000..de9bc219 Binary files /dev/null and b/website/static/img/resources/gis/javascript/leaflet.png differ diff --git a/website/static/img/resources/gis/javascript/maplibre.png b/website/static/img/resources/gis/javascript/maplibre.png new file mode 100644 index 00000000..24502953 Binary files /dev/null and b/website/static/img/resources/gis/javascript/maplibre.png differ diff --git a/website/static/img/resources/gis/javascript/ol-ext.png b/website/static/img/resources/gis/javascript/ol-ext.png new file mode 100644 index 00000000..091fa606 Binary files /dev/null and b/website/static/img/resources/gis/javascript/ol-ext.png differ diff --git a/website/static/img/resources/gis/javascript/openlayers.png b/website/static/img/resources/gis/javascript/openlayers.png new file mode 100644 index 00000000..1ece99db Binary files /dev/null and b/website/static/img/resources/gis/javascript/openlayers.png differ diff --git a/website/static/img/resources/gis/javascript/png-transparent-leaflet-javascript-library-web-browser-plug-in-software-framework-others-leaf-rss-map.png b/website/static/img/resources/gis/javascript/png-transparent-leaflet-javascript-library-web-browser-plug-in-software-framework-others-leaf-rss-map.png new file mode 100644 index 00000000..85bfda1b Binary files /dev/null and b/website/static/img/resources/gis/javascript/png-transparent-leaflet-javascript-library-web-browser-plug-in-software-framework-others-leaf-rss-map.png differ diff --git a/website/static/img/resources/gis/javascript/turfjs.png b/website/static/img/resources/gis/javascript/turfjs.png new file mode 100644 index 00000000..fab4c46f Binary files /dev/null and b/website/static/img/resources/gis/javascript/turfjs.png differ diff --git a/website/static/img/resources/gis/mobile/88134486.png b/website/static/img/resources/gis/mobile/88134486.png new file mode 100644 index 00000000..87a80c14 Binary files /dev/null and b/website/static/img/resources/gis/mobile/88134486.png differ diff --git a/website/static/img/resources/gis/mobile/mergin.png b/website/static/img/resources/gis/mobile/mergin.png new file mode 100644 index 00000000..00289fc3 Binary files /dev/null and b/website/static/img/resources/gis/mobile/mergin.png differ diff --git a/website/static/img/resources/gis/mobile/qfield.png b/website/static/img/resources/gis/mobile/qfield.png new file mode 100644 index 00000000..eb8f8c19 Binary files /dev/null and b/website/static/img/resources/gis/mobile/qfield.png differ diff --git a/website/static/img/resources/gis/mobile/smash.png b/website/static/img/resources/gis/mobile/smash.png new file mode 100644 index 00000000..38256c37 Binary files /dev/null and b/website/static/img/resources/gis/mobile/smash.png differ diff --git a/website/static/img/resources/gis/ogc/ogc.png b/website/static/img/resources/gis/ogc/ogc.png new file mode 100644 index 00000000..95b2f14f Binary files /dev/null and b/website/static/img/resources/gis/ogc/ogc.png differ diff --git a/website/static/img/resources/gis/ogc/wfs.png b/website/static/img/resources/gis/ogc/wfs.png new file mode 100644 index 00000000..248ad034 Binary files /dev/null and b/website/static/img/resources/gis/ogc/wfs.png differ diff --git a/website/static/img/resources/gis/ogc/wms.png b/website/static/img/resources/gis/ogc/wms.png new file mode 100644 index 00000000..2893bbab Binary files /dev/null and b/website/static/img/resources/gis/ogc/wms.png differ diff --git a/website/static/img/resources/gis/organization/osgeo.png b/website/static/img/resources/gis/organization/osgeo.png new file mode 100644 index 00000000..87095a95 Binary files /dev/null and b/website/static/img/resources/gis/organization/osgeo.png differ diff --git a/website/static/img/resources/gis/python/geopandas.png b/website/static/img/resources/gis/python/geopandas.png new file mode 100644 index 00000000..2bd72973 Binary files /dev/null and b/website/static/img/resources/gis/python/geopandas.png differ diff --git a/website/static/img/resources/gis/python/pysal.png b/website/static/img/resources/gis/python/pysal.png new file mode 100644 index 00000000..3e862666 Binary files /dev/null and b/website/static/img/resources/gis/python/pysal.png differ diff --git a/website/static/img/resources/gis/routing/graphhopper.png b/website/static/img/resources/gis/routing/graphhopper.png new file mode 100644 index 00000000..7d9bda14 Binary files /dev/null and b/website/static/img/resources/gis/routing/graphhopper.png differ diff --git a/website/static/img/resources/gis/routing/osmr.png b/website/static/img/resources/gis/routing/osmr.png new file mode 100644 index 00000000..b2a922ab Binary files /dev/null and b/website/static/img/resources/gis/routing/osmr.png differ diff --git a/website/static/img/resources/gis/routing/osrm.png b/website/static/img/resources/gis/routing/osrm.png new file mode 100644 index 00000000..b2a922ab Binary files /dev/null and b/website/static/img/resources/gis/routing/osrm.png differ diff --git a/website/static/img/resources/gis/routing/pgrouting.png b/website/static/img/resources/gis/routing/pgrouting.png new file mode 100644 index 00000000..65ca4f3e Binary files /dev/null and b/website/static/img/resources/gis/routing/pgrouting.png differ diff --git a/website/static/img/resources/gis/routing/valhalla.png b/website/static/img/resources/gis/routing/valhalla.png new file mode 100644 index 00000000..4756cf99 Binary files /dev/null and b/website/static/img/resources/gis/routing/valhalla.png differ diff --git a/website/static/img/resources/gis/server/actinia.png b/website/static/img/resources/gis/server/actinia.png new file mode 100644 index 00000000..f75392a2 Binary files /dev/null and b/website/static/img/resources/gis/server/actinia.png differ diff --git a/website/static/img/resources/gis/server/baremaps.png b/website/static/img/resources/gis/server/baremaps.png new file mode 100644 index 00000000..1614db7b Binary files /dev/null and b/website/static/img/resources/gis/server/baremaps.png differ diff --git a/website/static/img/resources/gis/server/deegree.png b/website/static/img/resources/gis/server/deegree.png new file mode 100644 index 00000000..7ca17425 Binary files /dev/null and b/website/static/img/resources/gis/server/deegree.png differ diff --git a/website/static/img/resources/gis/server/g3w-suite.png b/website/static/img/resources/gis/server/g3w-suite.png new file mode 100644 index 00000000..9deea206 Binary files /dev/null and b/website/static/img/resources/gis/server/g3w-suite.png differ diff --git a/website/static/img/resources/gis/server/geohealthcheck.png b/website/static/img/resources/gis/server/geohealthcheck.png new file mode 100644 index 00000000..85299553 Binary files /dev/null and b/website/static/img/resources/gis/server/geohealthcheck.png differ diff --git a/website/static/img/resources/gis/server/geomapfish.jpg b/website/static/img/resources/gis/server/geomapfish.jpg new file mode 100644 index 00000000..a39c869a Binary files /dev/null and b/website/static/img/resources/gis/server/geomapfish.jpg differ diff --git a/website/static/img/resources/gis/server/geomapfish.png b/website/static/img/resources/gis/server/geomapfish.png new file mode 100644 index 00000000..631e3857 Binary files /dev/null and b/website/static/img/resources/gis/server/geomapfish.png differ diff --git a/website/static/img/resources/gis/server/geomesa.png b/website/static/img/resources/gis/server/geomesa.png new file mode 100644 index 00000000..8fe1a64d Binary files /dev/null and b/website/static/img/resources/gis/server/geomesa.png differ diff --git a/website/static/img/resources/gis/server/geonetwork.png b/website/static/img/resources/gis/server/geonetwork.png new file mode 100644 index 00000000..8d117081 Binary files /dev/null and b/website/static/img/resources/gis/server/geonetwork.png differ diff --git a/website/static/img/resources/gis/server/geonode.png b/website/static/img/resources/gis/server/geonode.png new file mode 100644 index 00000000..b8de5c25 Binary files /dev/null and b/website/static/img/resources/gis/server/geonode.png differ diff --git a/website/static/img/resources/gis/server/georchestra.png b/website/static/img/resources/gis/server/georchestra.png new file mode 100644 index 00000000..3fe1b1c9 Binary files /dev/null and b/website/static/img/resources/gis/server/georchestra.png differ diff --git a/website/static/img/resources/gis/server/geoserver.png b/website/static/img/resources/gis/server/geoserver.png new file mode 100644 index 00000000..cea9265e Binary files /dev/null and b/website/static/img/resources/gis/server/geoserver.png differ diff --git a/website/static/img/resources/gis/server/geowebcache.png b/website/static/img/resources/gis/server/geowebcache.png new file mode 100644 index 00000000..ff5277dd Binary files /dev/null and b/website/static/img/resources/gis/server/geowebcache.png differ diff --git a/website/static/img/resources/gis/server/kepler.png b/website/static/img/resources/gis/server/kepler.png new file mode 100644 index 00000000..23e1428e Binary files /dev/null and b/website/static/img/resources/gis/server/kepler.png differ diff --git a/website/static/img/resources/gis/server/logo-geonetwork10.png b/website/static/img/resources/gis/server/logo-geonetwork10.png new file mode 100644 index 00000000..ff2d4d52 Binary files /dev/null and b/website/static/img/resources/gis/server/logo-geonetwork10.png differ diff --git a/website/static/img/resources/gis/server/mapproxy.png b/website/static/img/resources/gis/server/mapproxy.png new file mode 100644 index 00000000..9b119df6 Binary files /dev/null and b/website/static/img/resources/gis/server/mapproxy.png differ diff --git a/website/static/img/resources/gis/server/mapserver.png b/website/static/img/resources/gis/server/mapserver.png new file mode 100644 index 00000000..f03354df Binary files /dev/null and b/website/static/img/resources/gis/server/mapserver.png differ diff --git a/website/static/img/resources/gis/server/mapstore.png b/website/static/img/resources/gis/server/mapstore.png new file mode 100644 index 00000000..c8bf5fdb Binary files /dev/null and b/website/static/img/resources/gis/server/mapstore.png differ diff --git a/website/static/img/resources/gis/server/mviewer.png b/website/static/img/resources/gis/server/mviewer.png new file mode 100644 index 00000000..0b4166cc Binary files /dev/null and b/website/static/img/resources/gis/server/mviewer.png differ diff --git a/website/static/img/resources/gis/server/nuCDhnVv_400x400.jpg b/website/static/img/resources/gis/server/nuCDhnVv_400x400.jpg new file mode 100644 index 00000000..cab4e8f7 Binary files /dev/null and b/website/static/img/resources/gis/server/nuCDhnVv_400x400.jpg differ diff --git a/website/static/img/resources/gis/server/pg_tileserv.png b/website/static/img/resources/gis/server/pg_tileserv.png new file mode 100644 index 00000000..be52c5f5 Binary files /dev/null and b/website/static/img/resources/gis/server/pg_tileserv.png differ diff --git a/website/static/img/resources/gis/server/pycsw.png b/website/static/img/resources/gis/server/pycsw.png new file mode 100644 index 00000000..acf6c054 Binary files /dev/null and b/website/static/img/resources/gis/server/pycsw.png differ diff --git a/website/static/img/resources/gis/server/pygeoapi.png b/website/static/img/resources/gis/server/pygeoapi.png new file mode 100644 index 00000000..8517f80e Binary files /dev/null and b/website/static/img/resources/gis/server/pygeoapi.png differ diff --git a/website/static/img/resources/gis/server/qgis-server.png b/website/static/img/resources/gis/server/qgis-server.png new file mode 100644 index 00000000..3dc4b1cd Binary files /dev/null and b/website/static/img/resources/gis/server/qgis-server.png differ diff --git a/website/static/img/resources/gis/server/zooproject.png b/website/static/img/resources/gis/server/zooproject.png new file mode 100644 index 00000000..53e71524 Binary files /dev/null and b/website/static/img/resources/gis/server/zooproject.png differ diff --git a/website/static/img/resources/gis/toolkit/mapnik.png b/website/static/img/resources/gis/toolkit/mapnik.png new file mode 100644 index 00000000..622cacf4 Binary files /dev/null and b/website/static/img/resources/gis/toolkit/mapnik.png differ diff --git a/website/static/img/resources/onprem/certificates/certbot.png b/website/static/img/resources/onprem/certificates/certbot.png new file mode 100644 index 00000000..9659a81b Binary files /dev/null and b/website/static/img/resources/onprem/certificates/certbot.png differ diff --git a/website/static/img/resources/onprem/database/duckdb.png b/website/static/img/resources/onprem/database/duckdb.png new file mode 100644 index 00000000..4c923a73 Binary files /dev/null and b/website/static/img/resources/onprem/database/duckdb.png differ diff --git a/website/static/img/resources/onprem/database/qdrant.png b/website/static/img/resources/onprem/database/qdrant.png new file mode 100644 index 00000000..5d489014 Binary files /dev/null and b/website/static/img/resources/onprem/database/qdrant.png differ diff --git a/website/static/img/resources/onprem/iac/pulumi.png b/website/static/img/resources/onprem/iac/pulumi.png new file mode 100644 index 00000000..3078d000 Binary files /dev/null and b/website/static/img/resources/onprem/iac/pulumi.png differ diff --git a/website/static/img/resources/onprem/network/cisco-router.png b/website/static/img/resources/onprem/network/cisco-router.png new file mode 100644 index 00000000..0d1bd810 Binary files /dev/null and b/website/static/img/resources/onprem/network/cisco-router.png differ diff --git a/website/static/img/resources/onprem/network/cisco-switch-l2.png b/website/static/img/resources/onprem/network/cisco-switch-l2.png new file mode 100644 index 00000000..6f0b6f8c Binary files /dev/null and b/website/static/img/resources/onprem/network/cisco-switch-l2.png differ diff --git a/website/static/img/resources/onprem/network/cisco-switch-l3.png b/website/static/img/resources/onprem/network/cisco-switch-l3.png new file mode 100644 index 00000000..65e9b165 Binary files /dev/null and b/website/static/img/resources/onprem/network/cisco-switch-l3.png differ diff --git a/website/static/img/resources/openldap.png b/website/static/img/resources/openldap.png new file mode 100644 index 00000000..c55718f8 Binary files /dev/null and b/website/static/img/resources/openldap.png differ diff --git a/website/static/img/resources/programming/framework/angular.png b/website/static/img/resources/programming/framework/angular.png index a3c90671..836a59be 100644 Binary files a/website/static/img/resources/programming/framework/angular.png and b/website/static/img/resources/programming/framework/angular.png differ diff --git a/website/static/img/resources/saas/automation/n8n.png b/website/static/img/resources/saas/automation/n8n.png new file mode 100644 index 00000000..c11098d5 Binary files /dev/null and b/website/static/img/resources/saas/automation/n8n.png differ diff --git a/website/static/img/resources/saas/cdn/imperva.png b/website/static/img/resources/saas/cdn/imperva.png new file mode 100644 index 00000000..ee7055c8 Binary files /dev/null and b/website/static/img/resources/saas/cdn/imperva.png differ