diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 00000000..2c39972c
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,29 @@
+# use latest python 3 alpine image.
+FROM python:3-alpine
+
+# install system dependencies.
+RUN apk update && apk add --no-cache \
+ gcc libc-dev g++ graphviz git bash go imagemagick inkscape ttf-opensans curl fontconfig xdg-utils \
+ nodejs npm
+
+# install go package.
+RUN go install github.com/mingrammer/round@latest
+
+# install fonts
+RUN curl -O https://noto-website.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 \
+&& fc-cache -fv
+
+# add go bin to path.
+ENV PATH "$PATH:/root/go/bin"
+
+# project directory.
+WORKDIR /usr/src/diagrams
+
+# Copy the rest of your app's source code from your host to your image filesystem.
+COPY . .
+
+# install python requirements.
+RUN pip install black graphviz jinja2
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index b4389183..4b8064a2 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -22,10 +22,17 @@
// Configure tool-specific properties.
"customizations": {
"vscode": {
- "extensions": ["ms-python.python"]
+ "extensions": [
+ "ms-python.python",
+ "ms-python.debugpy",
+ "mhutchie.git-graph",
+ "mutantdino.resourcemonitor",
+ "tehpeng.diagramspreviewer"
+ ]
}
}
-
+ "workspaceMount": "source=${localWorkspaceFolder},target=/usr/src/diagrams,type=bind",
+ "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/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
new file mode 100644
index 00000000..2b11178b
--- /dev/null
+++ b/.github/workflows/pre-commit.yml
@@ -0,0 +1,14 @@
+name: pre-commit
+
+on:
+ pull_request:
+ push:
+ branches: [main]
+
+jobs:
+ pre-commit:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v3
+ - uses: pre-commit/action@v3.0.1
diff --git a/.isort.cfg b/.isort.cfg
new file mode 100644
index 00000000..8112570b
--- /dev/null
+++ b/.isort.cfg
@@ -0,0 +1,5 @@
+[settings]
+line_length = 120
+multi_line_output = 3
+include_trailing_comma = True
+known_third_party = graphviz,jinja2
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 00000000..21cef885
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,23 @@
+repos:
+- repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v3.2.0
+ hooks:
+ - id: check-yaml
+ - id: end-of-file-fixer
+ - id: trailing-whitespace
+
+- repo: https://github.com/asottile/seed-isort-config
+ rev: v2.2.0
+ hooks:
+ - id: seed-isort-config
+
+- repo: https://github.com/pre-commit/mirrors-isort
+ rev: v5.10.1
+ hooks:
+ - id: isort
+
+- repo: https://github.com/hhatto/autopep8
+ rev: v2.3.1
+ hooks:
+ - id: autopep8
+ args: [--in-place, --aggressive, --aggressive, --max-line-length=120]
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe71dd9a..8a832169 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -407,4 +407,4 @@ The following import changes:
| Old import path | New import path |
| -------------------------------------------------------------------| --------------------------------------------------------------|
| `from diagrams.oci.connectivity import CustomerPremiseWhite` | `from diagrams.oci.connectivity import CustomerPremisesWhite` |
-| `from diagrams.oci.connectivity import CustomerPremises` | `from diagrams.oci.connectivity import CustomerPremises` |
\ No newline at end of file
+| `from diagrams.oci.connectivity import CustomerPremises` | `from diagrams.oci.connectivity import CustomerPremises` |
diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index 575806a4..0cd0e908 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -59,7 +59,8 @@ To be able to develop and run diagrams locally on you Mac device, you should hav
```shell
brew install imagemagick inkscape black
- go get github.com/mingrammer/round
+ go install github.com/mingrammer/round@latest
+ # ln -sf ~/go/bin/round ~/.local/bin/round
```
5. Run unit tests to confirm that it's working.
@@ -74,4 +75,4 @@ To be able to develop and run diagrams locally on you Mac device, you should hav
./autogen.sh
```
-7. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.
\ No newline at end of file
+7. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.
diff --git a/README.md b/README.md
index a24d11f0..500e4f88 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
[](/LICENSE)
[](https://badge.fury.io/py/diagrams)
-
+

[](https://www.tickgit.com/browse?repo=github.com/mingrammer/diagrams)

@@ -41,7 +41,7 @@ Diagrams lets you draw the cloud system architecture **in Python code**. It was
## Getting Started
-It requires **Python 3.7** or higher, check your Python version first.
+It requires **Python 3.9** or higher, check your Python version first.
It uses [Graphviz](https://www.graphviz.org/) to render the diagram, so you need to [install Graphviz](https://graphviz.gitlab.io/download/) to use **diagrams**. After installing graphviz (or already have it), install the **diagrams**.
diff --git a/config.py b/config.py
index 58c44755..86a58342 100644
--- a/config.py
+++ b/config.py
@@ -246,6 +246,9 @@ ALIASES = {
"ElbClassicLoadBalancer": "CLB",
"ElbNetworkLoadBalancer": "NLB",
"GlobalAccelerator": "GAX",
+ "InternetGateway": "IGW",
+ "TransitGateway": "TGW",
+ "TransitGatewayAttachment": "TGWAttach",
},
"security": {
"CertificateManager": "ACM",
diff --git a/diagrams/__init__.py b/diagrams/__init__.py
index 7b6d2461..8625cd5d 100644
--- a/diagrams/__init__.py
+++ b/diagrams/__init__.py
@@ -139,7 +139,8 @@ class Diagram:
if isinstance(outformat, list):
for one_format in outformat:
if not self._validate_outformat(one_format):
- raise ValueError(f'"{one_format}" is not a valid output format')
+ raise ValueError(
+ f'"{one_format}" is not a valid output format')
else:
if not self._validate_outformat(outformat):
raise ValueError(f'"{outformat}" is not a valid output format')
@@ -478,7 +479,8 @@ class Edge:
if label:
# Graphviz complaining about using label for edges, so replace it with xlabel.
- # Update: xlabel option causes the misaligned label position: https://github.com/mingrammer/diagrams/issues/83
+ # Update: xlabel option causes the misaligned label position:
+ # https://github.com/mingrammer/diagrams/issues/83
self._attrs["label"] = label
if color:
self._attrs["color"] = color
@@ -490,7 +492,8 @@ class Edge:
"""Implement Self - Node or Edge and Self - [Nodes]"""
return self.connect(other)
- def __rsub__(self, other: Union[List["Node"], List["Edge"]]) -> List["Edge"]:
+ def __rsub__(self, other: Union[List["Node"],
+ List["Edge"]]) -> List["Edge"]:
"""Called for [Nodes] or [Edges] - Self because list don't have __sub__ operators."""
return self.append(other)
@@ -504,15 +507,23 @@ class Edge:
self.reverse = True
return self.connect(other)
- def __rrshift__(self, other: Union[List["Node"], List["Edge"]]) -> List["Edge"]:
+ def __rrshift__(self,
+ other: Union[List["Node"],
+ List["Edge"]]) -> List["Edge"]:
"""Called for [Nodes] or [Edges] >> Self because list of Edges don't have __rshift__ operators."""
return self.append(other, forward=True)
- def __rlshift__(self, other: Union[List["Node"], List["Edge"]]) -> List["Edge"]:
+ def __rlshift__(self,
+ other: Union[List["Node"],
+ List["Edge"]]) -> List["Edge"]:
"""Called for [Nodes] or [Edges] << Self because list of Edges don't have __lshift__ operators."""
return self.append(other, reverse=True)
- def append(self, other: Union[List["Node"], List["Edge"]], forward=None, reverse=None) -> List["Edge"]:
+ def append(self,
+ other: Union[List["Node"],
+ List["Edge"]],
+ forward=None,
+ reverse=None) -> List["Edge"]:
result = []
for o in other:
if isinstance(o, Edge):
@@ -521,7 +532,12 @@ class Edge:
self._attrs = o.attrs.copy()
result.append(o)
else:
- result.append(Edge(o, forward=forward, reverse=reverse, **self._attrs))
+ result.append(
+ Edge(
+ o,
+ forward=forward,
+ reverse=reverse,
+ **self._attrs))
return result
def connect(self, other: Union["Node", "Edge", List["Node"]]):
diff --git a/diagrams/alibabacloud/__init__.py b/diagrams/alibabacloud/__init__.py
index a64c2002..7d4fa2b5 100644
--- a/diagrams/alibabacloud/__init__.py
+++ b/diagrams/alibabacloud/__init__.py
@@ -10,3 +10,7 @@ class _AlibabaCloud(Node):
_icon_dir = "resources/alibabacloud"
fontcolor = "#ffffff"
+
+
+class AlibabaCloud(_AlibabaCloud):
+ _icon = "alibabacloud.png"
diff --git a/diagrams/aws/__init__.py b/diagrams/aws/__init__.py
index 1550a0df..cdf31c3c 100644
--- a/diagrams/aws/__init__.py
+++ b/diagrams/aws/__init__.py
@@ -10,3 +10,7 @@ class _AWS(Node):
_icon_dir = "resources/aws"
fontcolor = "#ffffff"
+
+
+class AWS(_AWS):
+ _icon = "aws.png"
diff --git a/diagrams/aws/database.py b/diagrams/aws/database.py
index 38c84f11..cbdb34d9 100644
--- a/diagrams/aws/database.py
+++ b/diagrams/aws/database.py
@@ -56,6 +56,10 @@ class DynamodbItems(_Database):
_icon = "dynamodb-items.png"
+class DynamodbStreams(_Database):
+ _icon = "dynamodb-streams.png"
+
+
class DynamodbTable(_Database):
_icon = "dynamodb-table.png"
diff --git a/diagrams/aws/management.py b/diagrams/aws/management.py
index 730a68cd..f6710686 100644
--- a/diagrams/aws/management.py
+++ b/diagrams/aws/management.py
@@ -64,6 +64,10 @@ class CloudwatchEventTimeBased(_Management):
_icon = "cloudwatch-event-time-based.png"
+class CloudwatchLogs(_Management):
+ _icon = "cloudwatch-logs.png"
+
+
class CloudwatchRule(_Management):
_icon = "cloudwatch-rule.png"
diff --git a/diagrams/aws/network.py b/diagrams/aws/network.py
index e9291a5e..4f072756 100644
--- a/diagrams/aws/network.py
+++ b/diagrams/aws/network.py
@@ -120,6 +120,10 @@ class SiteToSiteVpn(_Network):
_icon = "site-to-site-vpn.png"
+class TransitGatewayAttachment(_Network):
+ _icon = "transit-gateway-attachment.png"
+
+
class TransitGateway(_Network):
_icon = "transit-gateway.png"
@@ -172,3 +176,6 @@ ALB = ElbApplicationLoadBalancer
CLB = ElbClassicLoadBalancer
NLB = ElbNetworkLoadBalancer
GAX = GlobalAccelerator
+IGW = InternetGateway
+TGW = TransitGateway
+TGWAttach = TransitGatewayAttachment
diff --git a/diagrams/aws/storage.py b/diagrams/aws/storage.py
index 564c07ab..a573d1e2 100644
--- a/diagrams/aws/storage.py
+++ b/diagrams/aws/storage.py
@@ -60,6 +60,10 @@ class MultipleVolumesResource(_Storage):
_icon = "multiple-volumes-resource.png"
+class S3AccessPoints(_Storage):
+ _icon = "s3-access-points.png"
+
+
class S3GlacierArchive(_Storage):
_icon = "s3-glacier-archive.png"
@@ -72,6 +76,10 @@ class S3Glacier(_Storage):
_icon = "s3-glacier.png"
+class S3ObjectLambdaAccessPoints(_Storage):
+ _icon = "s3-object-lambda-access-points.png"
+
+
class SimpleStorageServiceS3BucketWithObjects(_Storage):
_icon = "simple-storage-service-s3-bucket-with-objects.png"
diff --git a/diagrams/azure/__init__.py b/diagrams/azure/__init__.py
index 0b80ace0..5f7c2b29 100644
--- a/diagrams/azure/__init__.py
+++ b/diagrams/azure/__init__.py
@@ -10,3 +10,7 @@ class _Azure(Node):
_icon_dir = "resources/azure"
fontcolor = "#ffffff"
+
+
+class Azure(_Azure):
+ _icon = "azure.png"
diff --git a/diagrams/azure/ml.py b/diagrams/azure/ml.py
index 295a261e..eb0c474e 100644
--- a/diagrams/azure/ml.py
+++ b/diagrams/azure/ml.py
@@ -8,6 +8,14 @@ class _Ml(_Azure):
_icon_dir = "resources/azure/ml"
+class AzureOpenAI(_Ml):
+ _icon = "azure-open-ai.png"
+
+
+class AzureSpeedToText(_Ml):
+ _icon = "azure-speed-to-text.png"
+
+
class BatchAI(_Ml):
_icon = "batch-ai.png"
diff --git a/diagrams/c4/__init__.py b/diagrams/c4/__init__.py
index f53a65bc..9bc2bf98 100644
--- a/diagrams/c4/__init__.py
+++ b/diagrams/c4/__init__.py
@@ -4,7 +4,8 @@ A set of nodes and edges to visualize software architecture using the C4 model.
import html
import textwrap
-from diagrams import Cluster, Node, Edge
+
+from diagrams import Cluster, Edge, Node
def _format_node_label(name, key, description):
@@ -26,7 +27,8 @@ def _format_description(description):
"""
wrapper = textwrap.TextWrapper(width=40, max_lines=3)
lines = [html.escape(line) for line in wrapper.wrap(description)]
- lines += [""] * (3 - len(lines)) # fill up with empty lines so it is always three
+ # fill up with empty lines so it is always three
+ lines += [""] * (3 - len(lines))
return "
".join(lines)
diff --git a/diagrams/digitalocean/__init__.py b/diagrams/digitalocean/__init__.py
index 29daae0b..e9557d1b 100644
--- a/diagrams/digitalocean/__init__.py
+++ b/diagrams/digitalocean/__init__.py
@@ -10,3 +10,7 @@ class _DigitalOcean(Node):
_icon_dir = "resources/digitalocean"
fontcolor = "#ffffff"
+
+
+class DigitalOcean(_DigitalOcean):
+ _icon = "digitalocean.png"
diff --git a/diagrams/elastic/__init__.py b/diagrams/elastic/__init__.py
index 786fa60e..17b86961 100644
--- a/diagrams/elastic/__init__.py
+++ b/diagrams/elastic/__init__.py
@@ -10,3 +10,7 @@ class _Elastic(Node):
_icon_dir = "resources/elastic"
fontcolor = "#ffffff"
+
+
+class Elastic(_Elastic):
+ _icon = "elastic.png"
diff --git a/diagrams/firebase/__init__.py b/diagrams/firebase/__init__.py
index 5cd693ec..11c65802 100644
--- a/diagrams/firebase/__init__.py
+++ b/diagrams/firebase/__init__.py
@@ -10,3 +10,7 @@ class _Firebase(Node):
_icon_dir = "resources/firebase"
fontcolor = "#ffffff"
+
+
+class Firebase(_Firebase):
+ _icon = "firebase.png"
diff --git a/diagrams/gcp/__init__.py b/diagrams/gcp/__init__.py
index 1188a8d0..2ca41aed 100644
--- a/diagrams/gcp/__init__.py
+++ b/diagrams/gcp/__init__.py
@@ -10,3 +10,7 @@ class _GCP(Node):
_icon_dir = "resources/gcp"
fontcolor = "#2d3436"
+
+
+class GCP(_GCP):
+ _icon = "gcp.png"
diff --git a/diagrams/generic/__init__.py b/diagrams/generic/__init__.py
index 70db6868..de86d4f5 100644
--- a/diagrams/generic/__init__.py
+++ b/diagrams/generic/__init__.py
@@ -10,3 +10,7 @@ class _Generic(Node):
_icon_dir = "resources/generic"
fontcolor = "#ffffff"
+
+
+class Generic(_Generic):
+ _icon = "generic.png"
diff --git a/diagrams/ibm/__init__.py b/diagrams/ibm/__init__.py
index 450fa366..31896d6e 100644
--- a/diagrams/ibm/__init__.py
+++ b/diagrams/ibm/__init__.py
@@ -10,3 +10,7 @@ class _IBM(Node):
_icon_dir = "resources/ibm"
fontcolor = "#ffffff"
+
+
+class IBM(_IBM):
+ _icon = "ibm.png"
diff --git a/diagrams/k8s/__init__.py b/diagrams/k8s/__init__.py
index 6a137b4b..871bd2d3 100644
--- a/diagrams/k8s/__init__.py
+++ b/diagrams/k8s/__init__.py
@@ -10,3 +10,7 @@ class _K8S(Node):
_icon_dir = "resources/k8s"
fontcolor = "#2d3436"
+
+
+class K8S(_K8S):
+ _icon = "k8s.png"
diff --git a/diagrams/oci/__init__.py b/diagrams/oci/__init__.py
index 7613b884..8dacc920 100644
--- a/diagrams/oci/__init__.py
+++ b/diagrams/oci/__init__.py
@@ -10,3 +10,7 @@ class _OCI(Node):
_icon_dir = "resources/oci"
fontcolor = "#312D2A"
+
+
+class OCI(_OCI):
+ _icon = "oci.png"
diff --git a/diagrams/onprem/__init__.py b/diagrams/onprem/__init__.py
index 73d3e1fb..232c0630 100644
--- a/diagrams/onprem/__init__.py
+++ b/diagrams/onprem/__init__.py
@@ -10,3 +10,7 @@ class _OnPrem(Node):
_icon_dir = "resources/onprem"
fontcolor = "#ffffff"
+
+
+class OnPrem(_OnPrem):
+ _icon = "onprem.png"
diff --git a/diagrams/onprem/network.py b/diagrams/onprem/network.py
index 15d81b24..7ef068b5 100644
--- a/diagrams/onprem/network.py
+++ b/diagrams/onprem/network.py
@@ -72,6 +72,10 @@ class Linkerd(_Network):
_icon = "linkerd.png"
+class Mikrotik(_Network):
+ _icon = "mikrotik.png"
+
+
class Nginx(_Network):
_icon = "nginx.png"
diff --git a/diagrams/openstack/__init__.py b/diagrams/openstack/__init__.py
index 7b36e1bb..46541103 100644
--- a/diagrams/openstack/__init__.py
+++ b/diagrams/openstack/__init__.py
@@ -10,3 +10,7 @@ class _OpenStack(Node):
_icon_dir = "resources/openstack"
fontcolor = "#ffffff"
+
+
+class OpenStack(_OpenStack):
+ _icon = "openstack.png"
diff --git a/diagrams/outscale/__init__.py b/diagrams/outscale/__init__.py
index 917b4bfe..391ac4dd 100644
--- a/diagrams/outscale/__init__.py
+++ b/diagrams/outscale/__init__.py
@@ -6,3 +6,7 @@ class _Outscale(Node):
_icon_dir = "resources/outscale"
fontcolor = "#ffffff"
+
+
+class Outscale(_Outscale):
+ _icon = "outscale.png"
diff --git a/diagrams/programming/__init__.py b/diagrams/programming/__init__.py
index 7a846e12..504cea66 100644
--- a/diagrams/programming/__init__.py
+++ b/diagrams/programming/__init__.py
@@ -10,3 +10,7 @@ class _Programming(Node):
_icon_dir = "resources/programming"
fontcolor = "#ffffff"
+
+
+class Programming(_Programming):
+ _icon = "programming.png"
diff --git a/diagrams/programming/framework.py b/diagrams/programming/framework.py
index 10b184b9..5b2cc3ea 100644
--- a/diagrams/programming/framework.py
+++ b/diagrams/programming/framework.py
@@ -53,7 +53,7 @@ class Hibernate(_Framework):
class Jhipster(_Framework):
- _icon = "jhipster.png"
+ _icon = "jhipster.png"
class Laravel(_Framework):
@@ -68,6 +68,10 @@ class Nextjs(_Framework):
_icon = "nextjs.png"
+class Phoenix(_Framework):
+ _icon = "phoenix.png"
+
+
class Quarkus(_Framework):
_icon = "quarkus.png"
@@ -84,6 +88,10 @@ class Spring(_Framework):
_icon = "spring.png"
+class Sqlpage(_Framework):
+ _icon = "sqlpage.png"
+
+
class Starlette(_Framework):
_icon = "starlette.png"
@@ -106,4 +114,3 @@ FastAPI = Fastapi
GraphQL = Graphql
DotNet = Dotnet
NextJs = Nextjs
-JHipster = Jhipster
diff --git a/diagrams/programming/language.py b/diagrams/programming/language.py
index 5503c7b6..a747dbfc 100644
--- a/diagrams/programming/language.py
+++ b/diagrams/programming/language.py
@@ -88,6 +88,10 @@ class Scala(_Language):
_icon = "scala.png"
+class Sql(_Language):
+ _icon = "sql.png"
+
+
class Swift(_Language):
_icon = "swift.png"
diff --git a/diagrams/saas/__init__.py b/diagrams/saas/__init__.py
index ecae1d80..e0acaccd 100644
--- a/diagrams/saas/__init__.py
+++ b/diagrams/saas/__init__.py
@@ -10,3 +10,7 @@ class _Saas(Node):
_icon_dir = "resources/saas"
fontcolor = "#ffffff"
+
+
+class Saas(_Saas):
+ _icon = "saas.png"
diff --git a/diagrams/saas/crm.py b/diagrams/saas/crm.py
new file mode 100644
index 00000000..56b1bef2
--- /dev/null
+++ b/diagrams/saas/crm.py
@@ -0,0 +1,19 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Saas
+
+
+class _Crm(_Saas):
+ _type = "crm"
+ _icon_dir = "resources/saas/crm"
+
+
+class Intercom(_Crm):
+ _icon = "intercom.png"
+
+
+class Zendesk(_Crm):
+ _icon = "zendesk.png"
+
+
+# Aliases
diff --git a/diagrams/saas/security.py b/diagrams/saas/security.py
index 4fc316ed..ff844f84 100644
--- a/diagrams/saas/security.py
+++ b/diagrams/saas/security.py
@@ -4,10 +4,14 @@ from . import _Saas
class _Security(_Saas):
- _type = "alerting"
+ _type = "security"
_icon_dir = "resources/saas/security"
+class Crowdstrike(_Security):
+ _icon = "crowdstrike.png"
+
+
class Sonarqube(_Security):
_icon = "sonarqube.png"
diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile
index 8ec78b36..bc6e76ae 100644
--- a/docker/dev/Dockerfile
+++ b/docker/dev/Dockerfile
@@ -1,5 +1,5 @@
-# use latest python 3 alpine image.
-FROM python:3-alpine
+# use latest python alpine image.
+FROM python:3.13.1-alpine3.20
# install system dependencies.
RUN apk update && apk add --no-cache \
@@ -9,14 +9,14 @@ 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 \
&& fc-cache -fv
# add go bin to path.
-ENV PATH "$PATH:/root/go/bin"
+ENV PATH="$PATH:/root/go/bin"
# project directory.
WORKDIR /usr/src/diagrams
diff --git a/docs/nodes/aws.md b/docs/nodes/aws.md
index cf9e2cf6..7abb578a 100644
--- a/docs/nodes/aws.md
+++ b/docs/nodes/aws.md
@@ -317,6 +317,9 @@ Node classes list of the aws provider.
**diagrams.aws.database.DynamodbItems**
+
+**diagrams.aws.database.DynamodbStreams**
+
**diagrams.aws.database.DynamodbTable**
@@ -848,6 +851,9 @@ Node classes list of the aws provider.
**diagrams.aws.management.CloudwatchEventTimeBased**
+
+**diagrams.aws.management.CloudwatchLogs**
+
**diagrams.aws.management.CloudwatchRule**
@@ -1221,7 +1227,7 @@ Node classes list of the aws provider.
**diagrams.aws.network.GlobalAccelerator**, **GAX** (alias)
-**diagrams.aws.network.InternetGateway**
+**diagrams.aws.network.InternetGateway**, **IGW** (alias)
**diagrams.aws.network.Nacl**
@@ -1256,8 +1262,11 @@ Node classes list of the aws provider.
**diagrams.aws.network.SiteToSiteVpn**
+
+**diagrams.aws.network.TransitGatewayAttachment**, **TGWAttach** (alias)
+
-**diagrams.aws.network.TransitGateway**
+**diagrams.aws.network.TransitGateway**, **TGW** (alias)
**diagrams.aws.network.VPCCustomerGateway**
@@ -1490,6 +1499,9 @@ Node classes list of the aws provider.
**diagrams.aws.storage.MultipleVolumesResource**
+
+**diagrams.aws.storage.S3AccessPoints**
+
**diagrams.aws.storage.S3GlacierArchive**
@@ -1499,6 +1511,9 @@ Node classes list of the aws provider.
**diagrams.aws.storage.S3Glacier**
+
+**diagrams.aws.storage.S3ObjectLambdaAccessPoints**
+
**diagrams.aws.storage.SimpleStorageServiceS3BucketWithObjects**
diff --git a/docs/nodes/azure.md b/docs/nodes/azure.md
index dbb62a14..5a91236f 100644
--- a/docs/nodes/azure.md
+++ b/docs/nodes/azure.md
@@ -1568,6 +1568,12 @@ Node classes list of azure provider.
## azure.ml
+
+**diagrams.azure.ml.AzureOpenAI**
+
+
+**diagrams.azure.ml.AzureSpeedToText**
+
**diagrams.azure.ml.BatchAI**
diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md
index d382f0ad..149ebf90 100644
--- a/docs/nodes/onprem.md
+++ b/docs/nodes/onprem.md
@@ -437,6 +437,9 @@ Node classes list of the onprem provider.
**diagrams.onprem.network.Linkerd**
+
+**diagrams.onprem.network.Mikrotik**
+
**diagrams.onprem.network.Nginx**
diff --git a/docs/nodes/programming.md b/docs/nodes/programming.md
index 44843c71..3816f203 100644
--- a/docs/nodes/programming.md
+++ b/docs/nodes/programming.md
@@ -117,7 +117,7 @@ Node classes list of the programming provider.
**diagrams.programming.framework.Hibernate**
-**diagrams.programming.framework.Jhipster**, **JHipster** (alias)
+**diagrams.programming.framework.Jhipster**
**diagrams.programming.framework.Laravel**
@@ -128,6 +128,9 @@ Node classes list of the programming provider.
**diagrams.programming.framework.Nextjs**, **NextJs** (alias)
+
+**diagrams.programming.framework.Phoenix**
+
**diagrams.programming.framework.Quarkus**
@@ -140,6 +143,9 @@ Node classes list of the programming provider.
**diagrams.programming.framework.Spring**
+
+**diagrams.programming.framework.Sqlpage**
+
**diagrams.programming.framework.Starlette**
@@ -215,6 +221,9 @@ Node classes list of the programming provider.
**diagrams.programming.language.Scala**
+
+**diagrams.programming.language.Sql**
+
**diagrams.programming.language.Swift**
diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md
index a44702c7..54f236d3 100644
--- a/docs/nodes/saas.md
+++ b/docs/nodes/saas.md
@@ -80,6 +80,15 @@ Node classes list of the saas provider.
**diagrams.saas.communication.Twilio**
+## saas.crm
+
+
+
+**diagrams.saas.crm.Intercom**
+
+
+**diagrams.saas.crm.Zendesk**
+
## saas.filesharing
@@ -119,6 +128,15 @@ Node classes list of the saas provider.
**diagrams.saas.recommendation.Recombee**
+## saas.security
+
+
+
+**diagrams.saas.security.Crowdstrike**
+
+
+**diagrams.saas.security.Sonarqube**
+
## saas.social
diff --git a/poetry.lock b/poetry.lock
index 02f04d8d..d6c4f138 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,14 +1,14 @@
-# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
[[package]]
name = "astroid"
-version = "3.2.4"
+version = "3.3.8"
description = "An abstract syntax tree for Python with inference support."
optional = false
-python-versions = ">=3.8.0"
+python-versions = ">=3.9.0"
files = [
- {file = "astroid-3.2.4-py3-none-any.whl", hash = "sha256:413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25"},
- {file = "astroid-3.2.4.tar.gz", hash = "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a"},
+ {file = "astroid-3.3.8-py3-none-any.whl", hash = "sha256:187ccc0c248bfbba564826c26f070494f7bc964fd286b6d9fff4420e55de828c"},
+ {file = "astroid-3.3.8.tar.gz", hash = "sha256:a88c7994f914a4ea8572fac479459f4955eeccc877be3f2d959a33273b0cf40b"},
]
[package.dependencies]
@@ -16,33 +16,33 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
[[package]]
name = "black"
-version = "24.8.0"
+version = "24.10.0"
description = "The uncompromising code formatter."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"},
- {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"},
- {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"},
- {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"},
- {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"},
- {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"},
- {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"},
- {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"},
- {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"},
- {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"},
- {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"},
- {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"},
- {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"},
- {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"},
- {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"},
- {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"},
- {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"},
- {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"},
- {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"},
- {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"},
- {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"},
- {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"},
+ {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"},
+ {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"},
+ {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"},
+ {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"},
+ {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"},
+ {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"},
+ {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"},
+ {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"},
+ {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"},
+ {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"},
+ {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"},
+ {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"},
+ {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"},
+ {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"},
+ {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"},
+ {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"},
+ {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"},
+ {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"},
+ {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"},
+ {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"},
+ {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"},
]
[package.dependencies]
@@ -56,10 +56,21 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
-d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"]
+d = ["aiohttp (>=3.10)"]
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
uvloop = ["uvloop (>=0.15.2)"]
+[[package]]
+name = "cfgv"
+version = "3.4.0"
+description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
+]
+
[[package]]
name = "click"
version = "8.1.7"
@@ -100,6 +111,17 @@ files = [
graph = ["objgraph (>=1.7.2)"]
profile = ["gprof2dot (>=2022.7.29)"]
+[[package]]
+name = "distlib"
+version = "0.3.9"
+description = "Distribution utilities"
+optional = false
+python-versions = "*"
+files = [
+ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"},
+ {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"},
+]
+
[[package]]
name = "exceptiongroup"
version = "1.2.2"
@@ -114,6 +136,22 @@ files = [
[package.extras]
test = ["pytest (>=6)"]
+[[package]]
+name = "filelock"
+version = "3.16.1"
+description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"},
+ {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"},
+]
+
+[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)"]
+
[[package]]
name = "graphviz"
version = "0.20.3"
@@ -130,6 +168,20 @@ dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"]
docs = ["sphinx (>=5,<7)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"]
test = ["coverage", "pytest (>=7,<8.1)", "pytest-cov", "pytest-mock (>=3)"]
+[[package]]
+name = "identify"
+version = "2.6.2"
+description = "File identification library for Python"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "identify-2.6.2-py2.py3-none-any.whl", hash = "sha256:c097384259f49e372f4ea00a19719d95ae27dd5ff0fd77ad630aa891306b82f3"},
+ {file = "identify-2.6.2.tar.gz", hash = "sha256:fab5c716c24d7a789775228823797296a2994b075fb6080ac83a102772a98cbd"},
+]
+
+[package.extras]
+license = ["ukkonen"]
+
[[package]]
name = "iniconfig"
version = "2.0.0"
@@ -174,71 +226,72 @@ i18n = ["Babel (>=2.7)"]
[[package]]
name = "markupsafe"
-version = "2.1.5"
+version = "3.0.2"
description = "Safely add untrusted strings to HTML/XML markup."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.9"
files = [
- {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
- {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+ {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"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"},
+ {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"},
]
[[package]]
@@ -263,15 +316,26 @@ files = [
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
]
+[[package]]
+name = "nodeenv"
+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"
+files = [
+ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"},
+ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"},
+]
+
[[package]]
name = "packaging"
-version = "24.1"
+version = "24.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
- {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
]
[[package]]
@@ -316,19 +380,37 @@ files = [
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
+[[package]]
+name = "pre-commit"
+version = "4.0.1"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.9"
+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"},
+]
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+virtualenv = ">=20.10.0"
+
[[package]]
name = "pylint"
-version = "3.2.7"
+version = "3.3.3"
description = "python code static checker"
optional = false
-python-versions = ">=3.8.0"
+python-versions = ">=3.9.0"
files = [
- {file = "pylint-3.2.7-py3-none-any.whl", hash = "sha256:02f4aedeac91be69fb3b4bea997ce580a4ac68ce58b89eaefeaf06749df73f4b"},
- {file = "pylint-3.2.7.tar.gz", hash = "sha256:1b7a721b575eaeaa7d39db076b6e7743c993ea44f57979127c517c6c572c803e"},
+ {file = "pylint-3.3.3-py3-none-any.whl", hash = "sha256:26e271a2bc8bce0fc23833805a9076dd9b4d5194e2a02164942cb3cdc37b4183"},
+ {file = "pylint-3.3.3.tar.gz", hash = "sha256:07c607523b17e6d16e2ae0d7ef59602e332caa762af64203c24b41c27139f36a"},
]
[package.dependencies]
-astroid = ">=3.2.4,<=3.3.0-dev0"
+astroid = ">=3.3.8,<=3.4.0-dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = [
{version = ">=0.2", markers = "python_version < \"3.11\""},
@@ -348,13 +430,13 @@ testutils = ["gitpython (>3)"]
[[package]]
name = "pytest"
-version = "8.3.3"
+version = "8.3.4"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"},
- {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"},
+ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"},
+ {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"},
]
[package.dependencies]
@@ -390,6 +472,68 @@ gendocs = ["pytoolconfig[doc]", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>
global = ["platformdirs (>=3.11.0)"]
validation = ["pydantic (>=2.5.3)"]
+[[package]]
+name = "pyyaml"
+version = "6.0.2"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.8"
+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"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"},
+ {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"},
+ {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"},
+ {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"},
+ {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"},
+ {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"},
+ {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"},
+ {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"},
+ {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"},
+ {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"},
+ {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"},
+ {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"},
+ {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"},
+ {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"},
+ {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"},
+ {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"},
+ {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"},
+ {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"},
+ {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"},
+ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"},
+ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"},
+ {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"},
+ {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"},
+ {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"},
+ {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"},
+ {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"},
+ {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"},
+ {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"},
+ {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"},
+ {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"},
+ {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"},
+ {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"},
+ {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"},
+ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"},
+]
+
[[package]]
name = "rope"
version = "1.13.0"
@@ -411,13 +555,13 @@ release = ["pip-tools (>=6.12.1)", "toml (>=0.10.2)", "twine (>=4.0.2)"]
[[package]]
name = "tomli"
-version = "2.0.2"
+version = "2.1.0"
description = "A lil' TOML parser"
optional = false
python-versions = ">=3.8"
files = [
- {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"},
- {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"},
+ {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"},
+ {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"},
]
[[package]]
@@ -442,7 +586,27 @@ files = [
{file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
]
+[[package]]
+name = "virtualenv"
+version = "20.27.1"
+description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4"},
+ {file = "virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba"},
+]
+
+[package.dependencies]
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+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)"]
+
[metadata]
lock-version = "2.0"
-python-versions = "^3.8"
-content-hash = "03a0a3902229c2c740ab7cea26e79fa78d81d5faa90d35973ff5174b95be3abc"
+python-versions = "^3.9"
+content-hash = "64d8272592088d0e7a3aee3d7318d26acd2de67d7875b5bd00f10a593aec84dc"
diff --git a/pyproject.toml b/pyproject.toml
index 46957ee1..bcb1e65e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -13,17 +13,18 @@ include = ["resources/**/*"]
diagrams="diagrams.cli:main"
[tool.poetry.dependencies]
-python = "^3.8"
+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.2"
-pylint = "^3.2"
+pytest = "^8.3"
+pylint = "^3.3"
rope = "^1.13"
isort = "^5.13"
black = "^24.4"
[tool.black]
-line-length=120
\ No newline at end of file
+line-length=120
diff --git a/resources/alibabacloud/alibabacloud.png b/resources/alibabacloud/alibabacloud.png
new file mode 100644
index 00000000..39a59598
Binary files /dev/null and b/resources/alibabacloud/alibabacloud.png differ
diff --git a/resources/aws/aws.png b/resources/aws/aws.png
new file mode 100644
index 00000000..c1dd36fc
Binary files /dev/null and b/resources/aws/aws.png differ
diff --git a/resources/aws/database/dynamodb-streams.png b/resources/aws/database/dynamodb-streams.png
new file mode 100644
index 00000000..4e3a0251
Binary files /dev/null and b/resources/aws/database/dynamodb-streams.png differ
diff --git a/resources/aws/management/cloudwatch-logs.png b/resources/aws/management/cloudwatch-logs.png
new file mode 100644
index 00000000..7368a95d
Binary files /dev/null and b/resources/aws/management/cloudwatch-logs.png differ
diff --git a/resources/aws/network/transit-gateway-attachment.png b/resources/aws/network/transit-gateway-attachment.png
new file mode 100644
index 00000000..1e3fdaed
Binary files /dev/null and b/resources/aws/network/transit-gateway-attachment.png differ
diff --git a/resources/aws/storage/s3-access-points.png b/resources/aws/storage/s3-access-points.png
new file mode 100644
index 00000000..3c62c617
Binary files /dev/null and b/resources/aws/storage/s3-access-points.png differ
diff --git a/resources/aws/storage/s3-object-lambda-access-points.png b/resources/aws/storage/s3-object-lambda-access-points.png
new file mode 100644
index 00000000..138fc50f
Binary files /dev/null and b/resources/aws/storage/s3-object-lambda-access-points.png differ
diff --git a/resources/azure/azure.png b/resources/azure/azure.png
new file mode 100644
index 00000000..e4c60a50
Binary files /dev/null and b/resources/azure/azure.png differ
diff --git a/resources/azure/ml/azure-open-ai.png b/resources/azure/ml/azure-open-ai.png
new file mode 100644
index 00000000..f617791d
Binary files /dev/null and b/resources/azure/ml/azure-open-ai.png differ
diff --git a/resources/azure/ml/azure-speed-to-text.png b/resources/azure/ml/azure-speed-to-text.png
new file mode 100644
index 00000000..ca331f12
Binary files /dev/null and b/resources/azure/ml/azure-speed-to-text.png differ
diff --git a/resources/digitalocean/digitalocean.png b/resources/digitalocean/digitalocean.png
new file mode 100644
index 00000000..a6638dbd
Binary files /dev/null and b/resources/digitalocean/digitalocean.png differ
diff --git a/resources/elastic/elastic.png b/resources/elastic/elastic.png
new file mode 100644
index 00000000..d311d639
Binary files /dev/null and b/resources/elastic/elastic.png differ
diff --git a/resources/firebase/firebase.png b/resources/firebase/firebase.png
new file mode 100644
index 00000000..2cfd1dfe
Binary files /dev/null and b/resources/firebase/firebase.png differ
diff --git a/resources/gcp/gcp.png b/resources/gcp/gcp.png
new file mode 100644
index 00000000..ca3d5fa0
Binary files /dev/null and b/resources/gcp/gcp.png differ
diff --git a/resources/generic/generic.png b/resources/generic/generic.png
new file mode 100644
index 00000000..351705eb
Binary files /dev/null and b/resources/generic/generic.png differ
diff --git a/resources/ibm/ibm.png b/resources/ibm/ibm.png
new file mode 100644
index 00000000..26db1bc1
Binary files /dev/null and b/resources/ibm/ibm.png differ
diff --git a/resources/k8s/k8s.png b/resources/k8s/k8s.png
new file mode 100644
index 00000000..66bd45fa
Binary files /dev/null and b/resources/k8s/k8s.png differ
diff --git a/resources/oci/compute/autoscale-white.png b/resources/oci/compute/autoscale-white.png
index dc64d11b..6dd68b2a 100644
Binary files a/resources/oci/compute/autoscale-white.png and b/resources/oci/compute/autoscale-white.png differ
diff --git a/resources/oci/compute/autoscale.png b/resources/oci/compute/autoscale.png
index f5374d3a..819ac5ac 100644
Binary files a/resources/oci/compute/autoscale.png and b/resources/oci/compute/autoscale.png differ
diff --git a/resources/oci/compute/bm-white.png b/resources/oci/compute/bm-white.png
index c33833d7..3d135036 100644
Binary files a/resources/oci/compute/bm-white.png and b/resources/oci/compute/bm-white.png differ
diff --git a/resources/oci/compute/bm.png b/resources/oci/compute/bm.png
index e9d50b0a..1480c07a 100644
Binary files a/resources/oci/compute/bm.png and b/resources/oci/compute/bm.png differ
diff --git a/resources/oci/compute/container-white.png b/resources/oci/compute/container-white.png
index ba6b09a0..f0049b86 100644
Binary files a/resources/oci/compute/container-white.png and b/resources/oci/compute/container-white.png differ
diff --git a/resources/oci/compute/container.png b/resources/oci/compute/container.png
index 949b46bd..53b61e19 100644
Binary files a/resources/oci/compute/container.png and b/resources/oci/compute/container.png differ
diff --git a/resources/oci/compute/functions-white.png b/resources/oci/compute/functions-white.png
index 6296e39b..d509c17e 100644
Binary files a/resources/oci/compute/functions-white.png and b/resources/oci/compute/functions-white.png differ
diff --git a/resources/oci/compute/functions.png b/resources/oci/compute/functions.png
index ec13a2dc..3961aa5f 100644
Binary files a/resources/oci/compute/functions.png and b/resources/oci/compute/functions.png differ
diff --git a/resources/oci/compute/instance-pools-white.png b/resources/oci/compute/instance-pools-white.png
index 397bc276..fbcc1036 100644
Binary files a/resources/oci/compute/instance-pools-white.png and b/resources/oci/compute/instance-pools-white.png differ
diff --git a/resources/oci/compute/instance-pools.png b/resources/oci/compute/instance-pools.png
index d1eacf12..18a4729d 100644
Binary files a/resources/oci/compute/instance-pools.png and b/resources/oci/compute/instance-pools.png differ
diff --git a/resources/oci/compute/ocir-white.png b/resources/oci/compute/ocir-white.png
index 55105058..4199ea67 100644
Binary files a/resources/oci/compute/ocir-white.png and b/resources/oci/compute/ocir-white.png differ
diff --git a/resources/oci/compute/ocir.png b/resources/oci/compute/ocir.png
index 4f6d9ee2..c8d1fd8b 100644
Binary files a/resources/oci/compute/ocir.png and b/resources/oci/compute/ocir.png differ
diff --git a/resources/oci/compute/oke-white.png b/resources/oci/compute/oke-white.png
index 64517535..28778d9f 100644
Binary files a/resources/oci/compute/oke-white.png and b/resources/oci/compute/oke-white.png differ
diff --git a/resources/oci/compute/oke.png b/resources/oci/compute/oke.png
index 61dcd839..3e7c9f10 100644
Binary files a/resources/oci/compute/oke.png and b/resources/oci/compute/oke.png differ
diff --git a/resources/oci/compute/vm-white.png b/resources/oci/compute/vm-white.png
index 1af7e0e7..4bbe5f1a 100644
Binary files a/resources/oci/compute/vm-white.png and b/resources/oci/compute/vm-white.png differ
diff --git a/resources/oci/compute/vm.png b/resources/oci/compute/vm.png
index 1b680b63..15fcaaab 100644
Binary files a/resources/oci/compute/vm.png and b/resources/oci/compute/vm.png differ
diff --git a/resources/oci/connectivity/backbone-white.png b/resources/oci/connectivity/backbone-white.png
index bfe31e80..8d8a4c0f 100644
Binary files a/resources/oci/connectivity/backbone-white.png and b/resources/oci/connectivity/backbone-white.png differ
diff --git a/resources/oci/connectivity/backbone.png b/resources/oci/connectivity/backbone.png
index 106b1594..5fe3389d 100644
Binary files a/resources/oci/connectivity/backbone.png and b/resources/oci/connectivity/backbone.png differ
diff --git a/resources/oci/connectivity/cdn-white.png b/resources/oci/connectivity/cdn-white.png
index 605b695c..7f5d26d3 100644
Binary files a/resources/oci/connectivity/cdn-white.png and b/resources/oci/connectivity/cdn-white.png differ
diff --git a/resources/oci/connectivity/cdn.png b/resources/oci/connectivity/cdn.png
index 839012b7..e1f41147 100644
Binary files a/resources/oci/connectivity/cdn.png and b/resources/oci/connectivity/cdn.png differ
diff --git a/resources/oci/connectivity/customer-datacenter.png b/resources/oci/connectivity/customer-datacenter.png
index 8937f7d4..a3dcb1c8 100644
Binary files a/resources/oci/connectivity/customer-datacenter.png and b/resources/oci/connectivity/customer-datacenter.png differ
diff --git a/resources/oci/connectivity/customer-datacntr-white.png b/resources/oci/connectivity/customer-datacntr-white.png
index 70b7c8d5..a51c557e 100644
Binary files a/resources/oci/connectivity/customer-datacntr-white.png and b/resources/oci/connectivity/customer-datacntr-white.png differ
diff --git a/resources/oci/connectivity/customer-premises-white.png b/resources/oci/connectivity/customer-premises-white.png
index d557206c..95a197f8 100644
Binary files a/resources/oci/connectivity/customer-premises-white.png and b/resources/oci/connectivity/customer-premises-white.png differ
diff --git a/resources/oci/connectivity/customer-premises.png b/resources/oci/connectivity/customer-premises.png
index 59dbaf93..9ec4bc09 100644
Binary files a/resources/oci/connectivity/customer-premises.png and b/resources/oci/connectivity/customer-premises.png differ
diff --git a/resources/oci/connectivity/disconnected-regions-white.png b/resources/oci/connectivity/disconnected-regions-white.png
index 329d2956..abead332 100644
Binary files a/resources/oci/connectivity/disconnected-regions-white.png and b/resources/oci/connectivity/disconnected-regions-white.png differ
diff --git a/resources/oci/connectivity/disconnected-regions.png b/resources/oci/connectivity/disconnected-regions.png
index 59f6df90..c7602ea4 100644
Binary files a/resources/oci/connectivity/disconnected-regions.png and b/resources/oci/connectivity/disconnected-regions.png differ
diff --git a/resources/oci/connectivity/dns-white.png b/resources/oci/connectivity/dns-white.png
index 831f6628..334d56b0 100644
Binary files a/resources/oci/connectivity/dns-white.png and b/resources/oci/connectivity/dns-white.png differ
diff --git a/resources/oci/connectivity/dns.png b/resources/oci/connectivity/dns.png
index 374c1bb5..961b13d2 100644
Binary files a/resources/oci/connectivity/dns.png and b/resources/oci/connectivity/dns.png differ
diff --git a/resources/oci/connectivity/fast-connect-white.png b/resources/oci/connectivity/fast-connect-white.png
index 57827bb9..12538457 100644
Binary files a/resources/oci/connectivity/fast-connect-white.png and b/resources/oci/connectivity/fast-connect-white.png differ
diff --git a/resources/oci/connectivity/fast-connect.png b/resources/oci/connectivity/fast-connect.png
index 9fb1a532..cdce6f04 100644
Binary files a/resources/oci/connectivity/fast-connect.png and b/resources/oci/connectivity/fast-connect.png differ
diff --git a/resources/oci/connectivity/nat-gateway-white.png b/resources/oci/connectivity/nat-gateway-white.png
index 2c4d84ba..75e698e6 100644
Binary files a/resources/oci/connectivity/nat-gateway-white.png and b/resources/oci/connectivity/nat-gateway-white.png differ
diff --git a/resources/oci/connectivity/nat-gateway.png b/resources/oci/connectivity/nat-gateway.png
index b472878c..831f0e71 100644
Binary files a/resources/oci/connectivity/nat-gateway.png and b/resources/oci/connectivity/nat-gateway.png differ
diff --git a/resources/oci/connectivity/vpn-white.png b/resources/oci/connectivity/vpn-white.png
index be80a991..2dc116a9 100644
Binary files a/resources/oci/connectivity/vpn-white.png and b/resources/oci/connectivity/vpn-white.png differ
diff --git a/resources/oci/connectivity/vpn.png b/resources/oci/connectivity/vpn.png
index 03374859..3b90d7db 100644
Binary files a/resources/oci/connectivity/vpn.png and b/resources/oci/connectivity/vpn.png differ
diff --git a/resources/oci/database/autonomous-white.png b/resources/oci/database/autonomous-white.png
index 69395109..846f945e 100644
Binary files a/resources/oci/database/autonomous-white.png and b/resources/oci/database/autonomous-white.png differ
diff --git a/resources/oci/database/autonomous.png b/resources/oci/database/autonomous.png
index e9859e2d..2636bd26 100644
Binary files a/resources/oci/database/autonomous.png and b/resources/oci/database/autonomous.png differ
diff --git a/resources/oci/database/bigdata-service-white.png b/resources/oci/database/bigdata-service-white.png
index 76b26db4..cb560928 100644
Binary files a/resources/oci/database/bigdata-service-white.png and b/resources/oci/database/bigdata-service-white.png differ
diff --git a/resources/oci/database/bigdata-service.png b/resources/oci/database/bigdata-service.png
index ebb395da..36dbc5e4 100644
Binary files a/resources/oci/database/bigdata-service.png and b/resources/oci/database/bigdata-service.png differ
diff --git a/resources/oci/database/database-service-white.png b/resources/oci/database/database-service-white.png
index 552c56c7..d6b0aa00 100644
Binary files a/resources/oci/database/database-service-white.png and b/resources/oci/database/database-service-white.png differ
diff --git a/resources/oci/database/database-service.png b/resources/oci/database/database-service.png
index 5442cecd..82f04b41 100644
Binary files a/resources/oci/database/database-service.png and b/resources/oci/database/database-service.png differ
diff --git a/resources/oci/database/dataflow-apache-white.png b/resources/oci/database/dataflow-apache-white.png
index cf69c3b5..85855118 100644
Binary files a/resources/oci/database/dataflow-apache-white.png and b/resources/oci/database/dataflow-apache-white.png differ
diff --git a/resources/oci/database/dataflow-apache.png b/resources/oci/database/dataflow-apache.png
index c04b65ba..42c29f05 100644
Binary files a/resources/oci/database/dataflow-apache.png and b/resources/oci/database/dataflow-apache.png differ
diff --git a/resources/oci/database/dcat-white.png b/resources/oci/database/dcat-white.png
index dbff953e..4e34eaf9 100644
Binary files a/resources/oci/database/dcat-white.png and b/resources/oci/database/dcat-white.png differ
diff --git a/resources/oci/database/dcat.png b/resources/oci/database/dcat.png
index c1bc05b1..301234bc 100644
Binary files a/resources/oci/database/dcat.png and b/resources/oci/database/dcat.png differ
diff --git a/resources/oci/database/dis-white.png b/resources/oci/database/dis-white.png
index 63ab6638..4c4a7619 100644
Binary files a/resources/oci/database/dis-white.png and b/resources/oci/database/dis-white.png differ
diff --git a/resources/oci/database/dis.png b/resources/oci/database/dis.png
index 1e0dcfe4..36f34a2d 100644
Binary files a/resources/oci/database/dis.png and b/resources/oci/database/dis.png differ
diff --git a/resources/oci/database/dms-white.png b/resources/oci/database/dms-white.png
index 4fcf1fe7..43a8f648 100644
Binary files a/resources/oci/database/dms-white.png and b/resources/oci/database/dms-white.png differ
diff --git a/resources/oci/database/dms.png b/resources/oci/database/dms.png
index dd76cb20..a640305a 100644
Binary files a/resources/oci/database/dms.png and b/resources/oci/database/dms.png differ
diff --git a/resources/oci/database/science-white.png b/resources/oci/database/science-white.png
index 99d8d203..6acb82a5 100644
Binary files a/resources/oci/database/science-white.png and b/resources/oci/database/science-white.png differ
diff --git a/resources/oci/database/science.png b/resources/oci/database/science.png
index c720667c..f0d581a8 100644
Binary files a/resources/oci/database/science.png and b/resources/oci/database/science.png differ
diff --git a/resources/oci/database/stream-white.png b/resources/oci/database/stream-white.png
index 1406b306..ed1062d7 100644
Binary files a/resources/oci/database/stream-white.png and b/resources/oci/database/stream-white.png differ
diff --git a/resources/oci/database/stream.png b/resources/oci/database/stream.png
index 5624c168..cd5feb98 100644
Binary files a/resources/oci/database/stream.png and b/resources/oci/database/stream.png differ
diff --git a/resources/oci/devops/api-gateway-white.png b/resources/oci/devops/api-gateway-white.png
index 767a98ff..44a2c156 100644
Binary files a/resources/oci/devops/api-gateway-white.png and b/resources/oci/devops/api-gateway-white.png differ
diff --git a/resources/oci/devops/api-gateway.png b/resources/oci/devops/api-gateway.png
index d244cabf..63176a0d 100644
Binary files a/resources/oci/devops/api-gateway.png and b/resources/oci/devops/api-gateway.png differ
diff --git a/resources/oci/devops/api-service-white.png b/resources/oci/devops/api-service-white.png
index ab50a5d6..1b2d0c83 100644
Binary files a/resources/oci/devops/api-service-white.png and b/resources/oci/devops/api-service-white.png differ
diff --git a/resources/oci/devops/api-service.png b/resources/oci/devops/api-service.png
index 208047b9..7ff4363d 100644
Binary files a/resources/oci/devops/api-service.png and b/resources/oci/devops/api-service.png differ
diff --git a/resources/oci/devops/resource-mgmt-white.png b/resources/oci/devops/resource-mgmt-white.png
index ccf19009..fd63eb40 100644
Binary files a/resources/oci/devops/resource-mgmt-white.png and b/resources/oci/devops/resource-mgmt-white.png differ
diff --git a/resources/oci/devops/resource-mgmt.png b/resources/oci/devops/resource-mgmt.png
index 97cc3975..6cf36622 100644
Binary files a/resources/oci/devops/resource-mgmt.png and b/resources/oci/devops/resource-mgmt.png differ
diff --git a/resources/oci/governance/audit-white.png b/resources/oci/governance/audit-white.png
index dc861eb5..37a4a0de 100644
Binary files a/resources/oci/governance/audit-white.png and b/resources/oci/governance/audit-white.png differ
diff --git a/resources/oci/governance/audit.png b/resources/oci/governance/audit.png
index d5d7b617..492ad440 100644
Binary files a/resources/oci/governance/audit.png and b/resources/oci/governance/audit.png differ
diff --git a/resources/oci/governance/compartments-white.png b/resources/oci/governance/compartments-white.png
index c4271c34..47e540a6 100644
Binary files a/resources/oci/governance/compartments-white.png and b/resources/oci/governance/compartments-white.png differ
diff --git a/resources/oci/governance/compartments.png b/resources/oci/governance/compartments.png
index 8b9a9de6..1af5181a 100644
Binary files a/resources/oci/governance/compartments.png and b/resources/oci/governance/compartments.png differ
diff --git a/resources/oci/governance/groups-white.png b/resources/oci/governance/groups-white.png
index 3052cef6..d25027eb 100644
Binary files a/resources/oci/governance/groups-white.png and b/resources/oci/governance/groups-white.png differ
diff --git a/resources/oci/governance/groups.png b/resources/oci/governance/groups.png
index 34f1064b..e313e3e9 100644
Binary files a/resources/oci/governance/groups.png and b/resources/oci/governance/groups.png differ
diff --git a/resources/oci/governance/logging-white.png b/resources/oci/governance/logging-white.png
index 99b5db2d..178cc968 100644
Binary files a/resources/oci/governance/logging-white.png and b/resources/oci/governance/logging-white.png differ
diff --git a/resources/oci/governance/logging.png b/resources/oci/governance/logging.png
index 50e6836a..99dd25d3 100644
Binary files a/resources/oci/governance/logging.png and b/resources/oci/governance/logging.png differ
diff --git a/resources/oci/governance/ocid-white.png b/resources/oci/governance/ocid-white.png
index a69576ae..97ee4bf3 100644
Binary files a/resources/oci/governance/ocid-white.png and b/resources/oci/governance/ocid-white.png differ
diff --git a/resources/oci/governance/ocid.png b/resources/oci/governance/ocid.png
index c5200b34..8dfc4c39 100644
Binary files a/resources/oci/governance/ocid.png and b/resources/oci/governance/ocid.png differ
diff --git a/resources/oci/governance/policies-white.png b/resources/oci/governance/policies-white.png
index 936271cb..48501e36 100644
Binary files a/resources/oci/governance/policies-white.png and b/resources/oci/governance/policies-white.png differ
diff --git a/resources/oci/governance/policies.png b/resources/oci/governance/policies.png
index 988efa23..b8c5a0c3 100644
Binary files a/resources/oci/governance/policies.png and b/resources/oci/governance/policies.png differ
diff --git a/resources/oci/governance/tagging-white.png b/resources/oci/governance/tagging-white.png
index 1d27cc47..c7e51907 100644
Binary files a/resources/oci/governance/tagging-white.png and b/resources/oci/governance/tagging-white.png differ
diff --git a/resources/oci/governance/tagging.png b/resources/oci/governance/tagging.png
index d8bfb7eb..bf02b018 100644
Binary files a/resources/oci/governance/tagging.png and b/resources/oci/governance/tagging.png differ
diff --git a/resources/oci/monitoring/alarm-white.png b/resources/oci/monitoring/alarm-white.png
index e91831b2..27e01b4c 100644
Binary files a/resources/oci/monitoring/alarm-white.png and b/resources/oci/monitoring/alarm-white.png differ
diff --git a/resources/oci/monitoring/alarm.png b/resources/oci/monitoring/alarm.png
index 372e3590..85a37300 100644
Binary files a/resources/oci/monitoring/alarm.png and b/resources/oci/monitoring/alarm.png differ
diff --git a/resources/oci/monitoring/email-white.png b/resources/oci/monitoring/email-white.png
index a9201a7a..0b0420fb 100644
Binary files a/resources/oci/monitoring/email-white.png and b/resources/oci/monitoring/email-white.png differ
diff --git a/resources/oci/monitoring/email.png b/resources/oci/monitoring/email.png
index f8d843c8..241e4222 100644
Binary files a/resources/oci/monitoring/email.png and b/resources/oci/monitoring/email.png differ
diff --git a/resources/oci/monitoring/events-white.png b/resources/oci/monitoring/events-white.png
index 6445a224..3a9f5ea0 100644
Binary files a/resources/oci/monitoring/events-white.png and b/resources/oci/monitoring/events-white.png differ
diff --git a/resources/oci/monitoring/events.png b/resources/oci/monitoring/events.png
index 465be4b6..1e96e731 100644
Binary files a/resources/oci/monitoring/events.png and b/resources/oci/monitoring/events.png differ
diff --git a/resources/oci/monitoring/health-check-white.png b/resources/oci/monitoring/health-check-white.png
index 4b1dea4e..39fad826 100644
Binary files a/resources/oci/monitoring/health-check-white.png and b/resources/oci/monitoring/health-check-white.png differ
diff --git a/resources/oci/monitoring/health-check.png b/resources/oci/monitoring/health-check.png
index 96794e87..4882b22e 100644
Binary files a/resources/oci/monitoring/health-check.png and b/resources/oci/monitoring/health-check.png differ
diff --git a/resources/oci/monitoring/notifications-white.png b/resources/oci/monitoring/notifications-white.png
index bf74ef70..6a2cedcb 100644
Binary files a/resources/oci/monitoring/notifications-white.png and b/resources/oci/monitoring/notifications-white.png differ
diff --git a/resources/oci/monitoring/notifications.png b/resources/oci/monitoring/notifications.png
index 059ca8f5..878aa1fb 100644
Binary files a/resources/oci/monitoring/notifications.png and b/resources/oci/monitoring/notifications.png differ
diff --git a/resources/oci/monitoring/queue-white.png b/resources/oci/monitoring/queue-white.png
index 9f8751dd..23f6ff0b 100644
Binary files a/resources/oci/monitoring/queue-white.png and b/resources/oci/monitoring/queue-white.png differ
diff --git a/resources/oci/monitoring/queue.png b/resources/oci/monitoring/queue.png
index 38da334b..9b96cc09 100644
Binary files a/resources/oci/monitoring/queue.png and b/resources/oci/monitoring/queue.png differ
diff --git a/resources/oci/monitoring/search-white.png b/resources/oci/monitoring/search-white.png
index 44f6f7cc..f2b04934 100644
Binary files a/resources/oci/monitoring/search-white.png and b/resources/oci/monitoring/search-white.png differ
diff --git a/resources/oci/monitoring/search.png b/resources/oci/monitoring/search.png
index af5f951d..eadc2375 100644
Binary files a/resources/oci/monitoring/search.png and b/resources/oci/monitoring/search.png differ
diff --git a/resources/oci/monitoring/telemetry-white.png b/resources/oci/monitoring/telemetry-white.png
index 9421c90b..0eaf64ff 100644
Binary files a/resources/oci/monitoring/telemetry-white.png and b/resources/oci/monitoring/telemetry-white.png differ
diff --git a/resources/oci/monitoring/telemetry.png b/resources/oci/monitoring/telemetry.png
index a5d4931a..34f6dc2f 100644
Binary files a/resources/oci/monitoring/telemetry.png and b/resources/oci/monitoring/telemetry.png differ
diff --git a/resources/oci/monitoring/workflow-white.png b/resources/oci/monitoring/workflow-white.png
index 0971ed5e..c5548f45 100644
Binary files a/resources/oci/monitoring/workflow-white.png and b/resources/oci/monitoring/workflow-white.png differ
diff --git a/resources/oci/monitoring/workflow.png b/resources/oci/monitoring/workflow.png
index 9ce2300e..d5719f99 100644
Binary files a/resources/oci/monitoring/workflow.png and b/resources/oci/monitoring/workflow.png differ
diff --git a/resources/oci/network/drg-white.png b/resources/oci/network/drg-white.png
index 34848977..8fb70e47 100644
Binary files a/resources/oci/network/drg-white.png and b/resources/oci/network/drg-white.png differ
diff --git a/resources/oci/network/drg.png b/resources/oci/network/drg.png
index b1aaba9b..82752e2d 100644
Binary files a/resources/oci/network/drg.png and b/resources/oci/network/drg.png differ
diff --git a/resources/oci/network/firewall-white.png b/resources/oci/network/firewall-white.png
index 40f6631e..deca4530 100644
Binary files a/resources/oci/network/firewall-white.png and b/resources/oci/network/firewall-white.png differ
diff --git a/resources/oci/network/firewall.png b/resources/oci/network/firewall.png
index 6c572b43..c2aa56ac 100644
Binary files a/resources/oci/network/firewall.png and b/resources/oci/network/firewall.png differ
diff --git a/resources/oci/network/internet-gateway-white.png b/resources/oci/network/internet-gateway-white.png
index b7a8a01e..7cc5921d 100644
Binary files a/resources/oci/network/internet-gateway-white.png and b/resources/oci/network/internet-gateway-white.png differ
diff --git a/resources/oci/network/internet-gateway.png b/resources/oci/network/internet-gateway.png
index 1762239a..5f3194c0 100644
Binary files a/resources/oci/network/internet-gateway.png and b/resources/oci/network/internet-gateway.png differ
diff --git a/resources/oci/network/load-balancer-white.png b/resources/oci/network/load-balancer-white.png
index 12a3d33c..264b0372 100644
Binary files a/resources/oci/network/load-balancer-white.png and b/resources/oci/network/load-balancer-white.png differ
diff --git a/resources/oci/network/load-balancer.png b/resources/oci/network/load-balancer.png
index 504a5acd..a50d90d6 100644
Binary files a/resources/oci/network/load-balancer.png and b/resources/oci/network/load-balancer.png differ
diff --git a/resources/oci/network/route-table-white.png b/resources/oci/network/route-table-white.png
index 0826ba4d..44df2146 100644
Binary files a/resources/oci/network/route-table-white.png and b/resources/oci/network/route-table-white.png differ
diff --git a/resources/oci/network/route-table.png b/resources/oci/network/route-table.png
index 3733e06b..57a4be57 100644
Binary files a/resources/oci/network/route-table.png and b/resources/oci/network/route-table.png differ
diff --git a/resources/oci/network/security-lists-white.png b/resources/oci/network/security-lists-white.png
index 6151b8b2..1ec7bdd8 100644
Binary files a/resources/oci/network/security-lists-white.png and b/resources/oci/network/security-lists-white.png differ
diff --git a/resources/oci/network/security-lists.png b/resources/oci/network/security-lists.png
index 8bcc72fe..8c91b76d 100644
Binary files a/resources/oci/network/security-lists.png and b/resources/oci/network/security-lists.png differ
diff --git a/resources/oci/network/service-gateway-white.png b/resources/oci/network/service-gateway-white.png
index b0d820d3..a2321bbe 100644
Binary files a/resources/oci/network/service-gateway-white.png and b/resources/oci/network/service-gateway-white.png differ
diff --git a/resources/oci/network/service-gateway.png b/resources/oci/network/service-gateway.png
index 548c87af..8b099f40 100644
Binary files a/resources/oci/network/service-gateway.png and b/resources/oci/network/service-gateway.png differ
diff --git a/resources/oci/network/vcn-white.png b/resources/oci/network/vcn-white.png
index e217effe..93359319 100644
Binary files a/resources/oci/network/vcn-white.png and b/resources/oci/network/vcn-white.png differ
diff --git a/resources/oci/network/vcn.png b/resources/oci/network/vcn.png
index aefa7004..169da0e3 100644
Binary files a/resources/oci/network/vcn.png and b/resources/oci/network/vcn.png differ
diff --git a/resources/oci/oci.png b/resources/oci/oci.png
new file mode 100644
index 00000000..97e0109b
Binary files /dev/null and b/resources/oci/oci.png differ
diff --git a/resources/oci/security/cloud-guard-white.png b/resources/oci/security/cloud-guard-white.png
index db4a78d1..4e1b11be 100644
Binary files a/resources/oci/security/cloud-guard-white.png and b/resources/oci/security/cloud-guard-white.png differ
diff --git a/resources/oci/security/cloud-guard.png b/resources/oci/security/cloud-guard.png
index 8c7c8a5e..ee4f22db 100644
Binary files a/resources/oci/security/cloud-guard.png and b/resources/oci/security/cloud-guard.png differ
diff --git a/resources/oci/security/ddos-white.png b/resources/oci/security/ddos-white.png
index 6657c0b9..cec9df53 100644
Binary files a/resources/oci/security/ddos-white.png and b/resources/oci/security/ddos-white.png differ
diff --git a/resources/oci/security/ddos.png b/resources/oci/security/ddos.png
index e2fafae4..e01ac36c 100644
Binary files a/resources/oci/security/ddos.png and b/resources/oci/security/ddos.png differ
diff --git a/resources/oci/security/encryption-white.png b/resources/oci/security/encryption-white.png
index f85f3577..83c7bd81 100644
Binary files a/resources/oci/security/encryption-white.png and b/resources/oci/security/encryption-white.png differ
diff --git a/resources/oci/security/encryption.png b/resources/oci/security/encryption.png
index 16c1b125..2f7e750b 100644
Binary files a/resources/oci/security/encryption.png and b/resources/oci/security/encryption.png differ
diff --git a/resources/oci/security/id-access-white.png b/resources/oci/security/id-access-white.png
index 597db448..308c626a 100644
Binary files a/resources/oci/security/id-access-white.png and b/resources/oci/security/id-access-white.png differ
diff --git a/resources/oci/security/id-access.png b/resources/oci/security/id-access.png
index 0beebb1b..38e67863 100644
Binary files a/resources/oci/security/id-access.png and b/resources/oci/security/id-access.png differ
diff --git a/resources/oci/security/key-management-white.png b/resources/oci/security/key-management-white.png
index 26cdeeae..8137cb02 100644
Binary files a/resources/oci/security/key-management-white.png and b/resources/oci/security/key-management-white.png differ
diff --git a/resources/oci/security/key-management.png b/resources/oci/security/key-management.png
index 83e43330..e19adef7 100644
Binary files a/resources/oci/security/key-management.png and b/resources/oci/security/key-management.png differ
diff --git a/resources/oci/security/max-security-zone-white.png b/resources/oci/security/max-security-zone-white.png
index 27da254a..bcac3562 100644
Binary files a/resources/oci/security/max-security-zone-white.png and b/resources/oci/security/max-security-zone-white.png differ
diff --git a/resources/oci/security/max-security-zone.png b/resources/oci/security/max-security-zone.png
index 71f98d52..a15a9949 100644
Binary files a/resources/oci/security/max-security-zone.png and b/resources/oci/security/max-security-zone.png differ
diff --git a/resources/oci/security/vault-white.png b/resources/oci/security/vault-white.png
index 74c18ff8..800b0bde 100644
Binary files a/resources/oci/security/vault-white.png and b/resources/oci/security/vault-white.png differ
diff --git a/resources/oci/security/vault.png b/resources/oci/security/vault.png
index 68789b9c..a2098b61 100644
Binary files a/resources/oci/security/vault.png and b/resources/oci/security/vault.png differ
diff --git a/resources/oci/security/waf-white.png b/resources/oci/security/waf-white.png
index c938ec28..2a555729 100644
Binary files a/resources/oci/security/waf-white.png and b/resources/oci/security/waf-white.png differ
diff --git a/resources/oci/security/waf.png b/resources/oci/security/waf.png
index e268c965..1d25c0f8 100644
Binary files a/resources/oci/security/waf.png and b/resources/oci/security/waf.png differ
diff --git a/resources/oci/storage/backup-restore-white.png b/resources/oci/storage/backup-restore-white.png
index e322b6aa..e86aa3e9 100644
Binary files a/resources/oci/storage/backup-restore-white.png and b/resources/oci/storage/backup-restore-white.png differ
diff --git a/resources/oci/storage/backup-restore.png b/resources/oci/storage/backup-restore.png
index 5d9c3415..23988414 100644
Binary files a/resources/oci/storage/backup-restore.png and b/resources/oci/storage/backup-restore.png differ
diff --git a/resources/oci/storage/block-storage-clone-white.png b/resources/oci/storage/block-storage-clone-white.png
index a372e484..f5586096 100644
Binary files a/resources/oci/storage/block-storage-clone-white.png and b/resources/oci/storage/block-storage-clone-white.png differ
diff --git a/resources/oci/storage/block-storage-clone.png b/resources/oci/storage/block-storage-clone.png
index f97b3da8..6d1ce573 100644
Binary files a/resources/oci/storage/block-storage-clone.png and b/resources/oci/storage/block-storage-clone.png differ
diff --git a/resources/oci/storage/block-storage-white.png b/resources/oci/storage/block-storage-white.png
index d78a1aaa..b15fd5c7 100644
Binary files a/resources/oci/storage/block-storage-white.png and b/resources/oci/storage/block-storage-white.png differ
diff --git a/resources/oci/storage/block-storage.png b/resources/oci/storage/block-storage.png
index c2408c4e..88a95637 100644
Binary files a/resources/oci/storage/block-storage.png and b/resources/oci/storage/block-storage.png differ
diff --git a/resources/oci/storage/buckets-white.png b/resources/oci/storage/buckets-white.png
index 2607e45f..75ba2415 100644
Binary files a/resources/oci/storage/buckets-white.png and b/resources/oci/storage/buckets-white.png differ
diff --git a/resources/oci/storage/buckets.png b/resources/oci/storage/buckets.png
index c93e6910..ba008e03 100644
Binary files a/resources/oci/storage/buckets.png and b/resources/oci/storage/buckets.png differ
diff --git a/resources/oci/storage/data-transfer-white.png b/resources/oci/storage/data-transfer-white.png
index 06e72e0c..6b0795c0 100644
Binary files a/resources/oci/storage/data-transfer-white.png and b/resources/oci/storage/data-transfer-white.png differ
diff --git a/resources/oci/storage/data-transfer.png b/resources/oci/storage/data-transfer.png
index ebdfe816..81c7eca2 100644
Binary files a/resources/oci/storage/data-transfer.png and b/resources/oci/storage/data-transfer.png differ
diff --git a/resources/oci/storage/elastic-performance-white.png b/resources/oci/storage/elastic-performance-white.png
index ce8116f9..25dd1dae 100644
Binary files a/resources/oci/storage/elastic-performance-white.png and b/resources/oci/storage/elastic-performance-white.png differ
diff --git a/resources/oci/storage/elastic-performance.png b/resources/oci/storage/elastic-performance.png
index 627e2397..44d6f0ad 100644
Binary files a/resources/oci/storage/elastic-performance.png and b/resources/oci/storage/elastic-performance.png differ
diff --git a/resources/oci/storage/file-storage-white.png b/resources/oci/storage/file-storage-white.png
index 0380d32b..253c986b 100644
Binary files a/resources/oci/storage/file-storage-white.png and b/resources/oci/storage/file-storage-white.png differ
diff --git a/resources/oci/storage/file-storage.png b/resources/oci/storage/file-storage.png
index c3cb4d9b..10165c69 100644
Binary files a/resources/oci/storage/file-storage.png and b/resources/oci/storage/file-storage.png differ
diff --git a/resources/oci/storage/object-storage-white.png b/resources/oci/storage/object-storage-white.png
index 838b5353..2ca1bbec 100644
Binary files a/resources/oci/storage/object-storage-white.png and b/resources/oci/storage/object-storage-white.png differ
diff --git a/resources/oci/storage/object-storage.png b/resources/oci/storage/object-storage.png
index 6bba0aa6..ae1df86f 100644
Binary files a/resources/oci/storage/object-storage.png and b/resources/oci/storage/object-storage.png differ
diff --git a/resources/oci/storage/storage-gateway-white.png b/resources/oci/storage/storage-gateway-white.png
index 8b5dad4f..fd400bda 100644
Binary files a/resources/oci/storage/storage-gateway-white.png and b/resources/oci/storage/storage-gateway-white.png differ
diff --git a/resources/oci/storage/storage-gateway.png b/resources/oci/storage/storage-gateway.png
index 642e47af..b9271afe 100644
Binary files a/resources/oci/storage/storage-gateway.png and b/resources/oci/storage/storage-gateway.png differ
diff --git a/resources/onprem/network/mikrotik.png b/resources/onprem/network/mikrotik.png
new file mode 100644
index 00000000..515b685e
Binary files /dev/null and b/resources/onprem/network/mikrotik.png differ
diff --git a/resources/onprem/onprem.png b/resources/onprem/onprem.png
new file mode 100644
index 00000000..6230344b
Binary files /dev/null and b/resources/onprem/onprem.png differ
diff --git a/resources/outscale/outscale.png b/resources/outscale/outscale.png
new file mode 100644
index 00000000..526b7f04
Binary files /dev/null and b/resources/outscale/outscale.png differ
diff --git a/resources/programming/framework/phoenix.png b/resources/programming/framework/phoenix.png
new file mode 100644
index 00000000..ca32175f
Binary files /dev/null and b/resources/programming/framework/phoenix.png differ
diff --git a/resources/programming/framework/sqlpage.png b/resources/programming/framework/sqlpage.png
new file mode 100644
index 00000000..1486241f
Binary files /dev/null and b/resources/programming/framework/sqlpage.png differ
diff --git a/resources/programming/language/elixir.png b/resources/programming/language/elixir.png
index 86e7bddd..2ef4cafa 100644
Binary files a/resources/programming/language/elixir.png and b/resources/programming/language/elixir.png differ
diff --git a/resources/programming/language/sql.png b/resources/programming/language/sql.png
new file mode 100644
index 00000000..aab80a12
Binary files /dev/null and b/resources/programming/language/sql.png differ
diff --git a/resources/programming/programming.png b/resources/programming/programming.png
new file mode 100644
index 00000000..13b669ba
Binary files /dev/null and b/resources/programming/programming.png differ
diff --git a/resources/saas/crm/intercom.png b/resources/saas/crm/intercom.png
new file mode 100644
index 00000000..c49ab848
Binary files /dev/null and b/resources/saas/crm/intercom.png differ
diff --git a/resources/saas/crm/zendesk.png b/resources/saas/crm/zendesk.png
new file mode 100644
index 00000000..f2b09840
Binary files /dev/null and b/resources/saas/crm/zendesk.png differ
diff --git a/resources/saas/logging/newrelic.png b/resources/saas/logging/newrelic.png
index 908ccd08..98b5e928 100644
Binary files a/resources/saas/logging/newrelic.png and b/resources/saas/logging/newrelic.png differ
diff --git a/resources/saas/saas.png b/resources/saas/saas.png
new file mode 100644
index 00000000..589c329d
Binary files /dev/null and b/resources/saas/saas.png differ
diff --git a/resources/saas/security/crowdstrike.png b/resources/saas/security/crowdstrike.png
new file mode 100644
index 00000000..4b2dc92e
Binary files /dev/null and b/resources/saas/security/crowdstrike.png differ
diff --git a/scripts/generate.py b/scripts/generate.py
index 299f3941..f9032227 100644
--- a/scripts/generate.py
+++ b/scripts/generate.py
@@ -5,7 +5,8 @@ from typing import Iterable
from jinja2 import Environment, FileSystemLoader, Template, exceptions
import config as cfg
-from . import app_root_dir, doc_root_dir, resource_dir, template_dir, base_dir
+
+from . import app_root_dir, base_dir, doc_root_dir, resource_dir, template_dir
_usage = "Usage: generate.py "
@@ -42,11 +43,11 @@ def gen_classes(pvd: str, typ: str, paths: Iterable[str]) -> str:
def gen_apidoc(pvd: str, typ_paths: dict) -> str:
try:
- default_tmp = cfg.TMPL_APIDOC.split('.')
- tmpl_file = f"{default_tmp[0]}_{pvd}.{default_tmp[1]}"
- tmpl = load_tmpl(tmpl_file)
+ default_tmp = cfg.TMPL_APIDOC.split(".")
+ tmpl_file = f"{default_tmp[0]}_{pvd}.{default_tmp[1]}"
+ tmpl = load_tmpl(tmpl_file)
except exceptions.TemplateNotFound:
- tmpl = load_tmpl(cfg.TMPL_APIDOC)
+ tmpl = load_tmpl(cfg.TMPL_APIDOC)
# TODO: remove
def _gen_class_name(path: str) -> str:
@@ -61,7 +62,8 @@ def gen_apidoc(pvd: str, typ_paths: dict) -> str:
name = _gen_class_name(path)
resource_path = os.path.join(resource_root, path)
alias = cfg.ALIASES[pvd].get(typ, {}).get(name)
- typ_classes[typ].append({"name": name, "alias": alias, "resource_path": resource_path})
+ typ_classes[typ].append(
+ {"name": name, "alias": alias, "resource_path": resource_path})
return tmpl.render(pvd=pvd, typ_classes=typ_classes)
diff --git a/scripts/resource.py b/scripts/resource.py
index cdea9379..bc98a72c 100644
--- a/scripts/resource.py
+++ b/scripts/resource.py
@@ -11,6 +11,7 @@ import subprocess
import sys
import config as cfg
+
from . import resource_dir
_usage = "Usage: resource.py "
@@ -30,7 +31,7 @@ def cleaner_aws(f):
f = f.replace("-light-bg", "")
for p in cfg.FILE_PREFIXES["aws"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
@@ -41,7 +42,7 @@ def cleaner_azure(f):
f = "-".join(f.split())
for p in cfg.FILE_PREFIXES["azure"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
@@ -51,7 +52,7 @@ def cleaner_gcp(f):
f = "-".join(f.split())
for p in cfg.FILE_PREFIXES["gcp"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
@@ -61,7 +62,7 @@ def cleaner_ibm(f):
f = "-".join(f.split())
for p in cfg.FILE_PREFIXES["ibm"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
@@ -71,7 +72,7 @@ def cleaner_firebase(f):
f = "-".join(f.split())
for p in cfg.FILE_PREFIXES["firebase"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
@@ -80,15 +81,16 @@ def cleaner_k8s(f):
f = f.replace("-256", "")
for p in cfg.FILE_PREFIXES["k8s"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
+
def cleaner_digitalocean(f):
f = f.replace("-32", "")
for p in cfg.FILE_PREFIXES["digitalocean"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
@@ -96,7 +98,7 @@ def cleaner_digitalocean(f):
def cleaner_alibabacloud(f):
for p in cfg.FILE_PREFIXES["alibabacloud"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
@@ -106,7 +108,7 @@ def cleaner_oci(f):
f = f.replace("_", "-")
for p in cfg.FILE_PREFIXES["oci"]:
if f.startswith(p):
- f = f[len(p) :]
+ f = f[len(p):]
break
return f.lower()
@@ -201,7 +203,8 @@ def svg2png2(pvd: str) -> None:
def _convert(base: str, path: str):
path_src = os.path.join(base, path)
path_dest = path_src.replace(".svg", ".png")
- subprocess.run([cfg.CMD_SVG2PNG_IM, *cfg.CMD_SVG2PNG_IM_OPTS, path_src, path_dest])
+ subprocess.run([cfg.CMD_SVG2PNG_IM, *
+ cfg.CMD_SVG2PNG_IM_OPTS, path_src, path_dest])
subprocess.run(["rm", path_src])
for root, _, files in os.walk(resource_dir(pvd)):
diff --git a/tests/test_c4.py b/tests/test_c4.py
index 3877ec0f..f2713811 100644
--- a/tests/test_c4.py
+++ b/tests/test_c4.py
@@ -3,14 +3,14 @@ import random
import string
import unittest
-from diagrams import Diagram
-from diagrams import setcluster, setdiagram
-from diagrams.c4 import Person, Container, Database, System, SystemBoundary, Relationship
+from diagrams import Diagram, setcluster, setdiagram
+from diagrams.c4 import Container, Database, Person, Relationship, System, SystemBoundary
class C4Test(unittest.TestCase):
def setUp(self):
- self.name = "diagram-" + "".join([random.choice(string.hexdigits) for n in range(7)]).lower()
+ self.name = "diagram-" + \
+ "".join([random.choice(string.hexdigits) for n in range(7)]).lower()
def tearDown(self):
setdiagram(None)
@@ -23,8 +23,14 @@ class C4Test(unittest.TestCase):
def test_nodes(self):
with Diagram(name=self.name, show=False):
person = Person("person", "A person.")
- container = Container("container", "Java application", "The application.")
- database = Database("database", "Oracle database", "Stores information.")
+ container = Container(
+ "container",
+ "Java application",
+ "The application.")
+ database = Database(
+ "database",
+ "Oracle database",
+ "Stores information.")
def test_external_nodes(self):
with Diagram(name=self.name, show=False):
diff --git a/tests/test_diagram.py b/tests/test_diagram.py
index 00bdacc6..0760709e 100644
--- a/tests/test_diagram.py
+++ b/tests/test_diagram.py
@@ -1,10 +1,9 @@
import os
+import pathlib
import shutil
import unittest
-import pathlib
-from diagrams import Cluster, Diagram, Edge, Node
-from diagrams import getcluster, getdiagram, setcluster, setdiagram
+from diagrams import Cluster, Diagram, Edge, Node, getcluster, getdiagram, setcluster, setdiagram
class DiagramTest(unittest.TestCase):
@@ -103,20 +102,19 @@ class DiagramTest(unittest.TestCase):
def test_empty_name(self):
"""Check that providing an empty name don't crash, but save in a diagrams_image.xxx file."""
- self.name = 'diagrams_image'
+ self.name = "diagrams_image"
with Diagram(show=False):
Node("node1")
self.assertTrue(os.path.exists(f"{self.name}.png"))
-
+
def test_autolabel(self):
with Diagram(name=os.path.join(self.name, "nodes_to_node"), show=False):
node1 = Node("node1")
- self.assertTrue(node1.label,"Node\nnode1")
-
+ self.assertTrue(node1.label, "Node\nnode1")
def test_outformat_list(self):
"""Check that outformat render all the files from the list."""
- self.name = 'diagrams_image'
+ self.name = "diagrams_image"
with Diagram(show=False, outformat=["dot", "png"]):
Node("node1")
# both files must exist
@@ -240,56 +238,122 @@ class EdgeTest(unittest.TestCase):
with Cluster():
node1 = Node("node1")
nodes = [Node("node2"), Node("node3")]
- self.assertEqual(nodes - Edge(color="red") - Edge(color="green") - node1, node1)
+ self.assertEqual(
+ nodes -
+ Edge(
+ color="red") -
+ Edge(
+ color="green") -
+ node1,
+ node1)
def test_node_to_node_with_attributes(self):
with Diagram(name=os.path.join(self.name, "node_to_node_with_attributes"), show=False):
with Cluster():
node1 = Node("node1")
node2 = Node("node2")
- self.assertEqual(node1 << Edge(color="red", label="1.1") << node2, node2)
- self.assertEqual(node1 >> Edge(color="green", label="1.2") >> node2, node2)
- self.assertEqual(node1 << Edge(color="blue", label="1.3") >> node2, node2)
+ self.assertEqual(
+ node1 << Edge(
+ color="red",
+ label="1.1") << node2,
+ node2)
+ self.assertEqual(
+ node1 >> Edge(
+ color="green",
+ label="1.2") >> node2,
+ node2)
+ self.assertEqual(
+ node1 << Edge(
+ color="blue",
+ label="1.3") >> node2,
+ node2)
def test_node_to_node_with_additional_attributes(self):
with Diagram(name=os.path.join(self.name, "node_to_node_with_additional_attributes"), show=False):
with Cluster():
node1 = Node("node1")
node2 = Node("node2")
- self.assertEqual(node1 << Edge(color="red", label="2.1") << Edge(color="blue") << node2, node2)
- self.assertEqual(node1 >> Edge(color="green", label="2.2") >> Edge(color="red") >> node2, node2)
- self.assertEqual(node1 << Edge(color="blue", label="2.3") >> Edge(color="black") >> node2, node2)
+ self.assertEqual(
+ node1 << Edge(
+ color="red",
+ label="2.1") << Edge(
+ color="blue") << node2,
+ node2)
+ self.assertEqual(
+ node1 >> Edge(
+ color="green",
+ label="2.2") >> Edge(
+ color="red") >> node2,
+ node2)
+ self.assertEqual(
+ node1 << Edge(
+ color="blue",
+ label="2.3") >> Edge(
+ color="black") >> node2,
+ node2)
def test_nodes_to_node_with_attributes_loop(self):
with Diagram(name=os.path.join(self.name, "nodes_to_node_with_attributes_loop"), show=False):
with Cluster():
node = Node("node")
- self.assertEqual(node >> Edge(color="red", label="3.1") >> node, node)
- self.assertEqual(node << Edge(color="green", label="3.2") << node, node)
- self.assertEqual(node >> Edge(color="blue", label="3.3") << node, node)
- self.assertEqual(node << Edge(color="pink", label="3.4") >> node, node)
+ self.assertEqual(
+ node >> Edge(
+ color="red",
+ label="3.1") >> node,
+ node)
+ self.assertEqual(
+ node << Edge(
+ color="green",
+ label="3.2") << node,
+ node)
+ self.assertEqual(
+ node >> Edge(
+ color="blue",
+ label="3.3") << node,
+ node)
+ self.assertEqual(
+ node << Edge(
+ color="pink",
+ label="3.4") >> node,
+ node)
def test_nodes_to_node_with_attributes_bothdirectional(self):
with Diagram(name=os.path.join(self.name, "nodes_to_node_with_attributes_bothdirectional"), show=False):
with Cluster():
node1 = Node("node1")
nodes = [Node("node2"), Node("node3")]
- self.assertEqual(nodes << Edge(color="green", label="4") >> node1, node1)
+ self.assertEqual(
+ nodes << Edge(
+ color="green",
+ label="4") >> node1,
+ node1)
def test_nodes_to_node_with_attributes_bidirectional(self):
with Diagram(name=os.path.join(self.name, "nodes_to_node_with_attributes_bidirectional"), show=False):
with Cluster():
node1 = Node("node1")
nodes = [Node("node2"), Node("node3")]
- self.assertEqual(nodes << Edge(color="blue", label="5") >> node1, node1)
+ self.assertEqual(
+ nodes << Edge(
+ color="blue",
+ label="5") >> node1,
+ node1)
def test_nodes_to_node_with_attributes_onedirectional(self):
with Diagram(name=os.path.join(self.name, "nodes_to_node_with_attributes_onedirectional"), show=False):
with Cluster():
node1 = Node("node1")
nodes = [Node("node2"), Node("node3")]
- self.assertEqual(nodes >> Edge(color="red", label="6.1") >> node1, node1)
- self.assertEqual(nodes << Edge(color="green", label="6.2") << node1, node1)
+ self.assertEqual(
+ nodes >> Edge(
+ color="red",
+ label="6.1") >> node1,
+ node1)
+ self.assertEqual(
+ nodes << Edge(
+ color="green",
+ label="6.2") << node1,
+ node1)
def test_nodes_to_node_with_additional_attributes_directional(self):
with Diagram(name=os.path.join(self.name, "nodes_to_node_with_additional_attributes_directional"), show=False):
@@ -297,11 +361,19 @@ class EdgeTest(unittest.TestCase):
node1 = Node("node1")
nodes = [Node("node2"), Node("node3")]
self.assertEqual(
- nodes >> Edge(color="red", label="6.1") >> Edge(color="blue", label="6.2") >> node1, node1
- )
+ nodes >> Edge(
+ color="red",
+ label="6.1") >> Edge(
+ color="blue",
+ label="6.2") >> node1,
+ node1)
self.assertEqual(
- nodes << Edge(color="green", label="6.3") << Edge(color="pink", label="6.4") << node1, node1
- )
+ nodes << Edge(
+ color="green",
+ label="6.3") << Edge(
+ color="pink",
+ label="6.4") << node1,
+ node1)
class ResourcesTest(unittest.TestCase):
@@ -311,7 +383,13 @@ class ResourcesTest(unittest.TestCase):
i.e. resources///, so check that this depth isn't
exceeded.
"""
- resources_dir = pathlib.Path(__file__).parent.parent / 'resources'
- max_depth = max(os.path.relpath(d, resources_dir).count(os.sep) + 1
- for d, _, _ in os.walk(resources_dir))
+ resources_dir = pathlib.Path(__file__).parent.parent / "resources"
+ max_depth = max(
+ os.path.relpath(
+ d,
+ resources_dir).count(
+ os.sep) +
+ 1 for d,
+ _,
+ _ in os.walk(resources_dir))
self.assertLessEqual(max_depth, 2)
diff --git a/website/sidebars.json b/website/sidebars.json
index 6693b599..97086c08 100644
--- a/website/sidebars.json
+++ b/website/sidebars.json
@@ -31,4 +31,4 @@
"nodes/custom"
]
}
-}
\ No newline at end of file
+}
diff --git a/website/static/css/custom.css b/website/static/css/custom.css
index 235f6269..3d6682ae 100644
--- a/website/static/css/custom.css
+++ b/website/static/css/custom.css
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
-
+
/* your custom css */
@media only screen and (min-device-width: 360px) and (max-device-width: 736px) {
@@ -24,4 +24,4 @@
#buymeacoffee {
height: 50px;
-}
\ No newline at end of file
+}
diff --git a/website/static/img/resources/alibabacloud/alibabacloud.png b/website/static/img/resources/alibabacloud/alibabacloud.png
new file mode 100644
index 00000000..39a59598
Binary files /dev/null and b/website/static/img/resources/alibabacloud/alibabacloud.png differ
diff --git a/website/static/img/resources/aws/aws.png b/website/static/img/resources/aws/aws.png
new file mode 100644
index 00000000..c1dd36fc
Binary files /dev/null and b/website/static/img/resources/aws/aws.png differ
diff --git a/website/static/img/resources/aws/database/dynamodb-streams.png b/website/static/img/resources/aws/database/dynamodb-streams.png
new file mode 100644
index 00000000..4e3a0251
Binary files /dev/null and b/website/static/img/resources/aws/database/dynamodb-streams.png differ
diff --git a/website/static/img/resources/aws/management/cloudwatch-logs.png b/website/static/img/resources/aws/management/cloudwatch-logs.png
new file mode 100644
index 00000000..7368a95d
Binary files /dev/null and b/website/static/img/resources/aws/management/cloudwatch-logs.png differ
diff --git a/website/static/img/resources/aws/network/transit-gateway-attachment.png b/website/static/img/resources/aws/network/transit-gateway-attachment.png
new file mode 100644
index 00000000..1e3fdaed
Binary files /dev/null and b/website/static/img/resources/aws/network/transit-gateway-attachment.png differ
diff --git a/website/static/img/resources/aws/storage/s3-access-points.png b/website/static/img/resources/aws/storage/s3-access-points.png
new file mode 100644
index 00000000..3c62c617
Binary files /dev/null and b/website/static/img/resources/aws/storage/s3-access-points.png differ
diff --git a/website/static/img/resources/aws/storage/s3-object-lambda-access-points.png b/website/static/img/resources/aws/storage/s3-object-lambda-access-points.png
new file mode 100644
index 00000000..138fc50f
Binary files /dev/null and b/website/static/img/resources/aws/storage/s3-object-lambda-access-points.png differ
diff --git a/website/static/img/resources/azure/azure.png b/website/static/img/resources/azure/azure.png
new file mode 100644
index 00000000..e4c60a50
Binary files /dev/null and b/website/static/img/resources/azure/azure.png differ
diff --git a/website/static/img/resources/azure/ml/azure-open-ai.png b/website/static/img/resources/azure/ml/azure-open-ai.png
new file mode 100644
index 00000000..f617791d
Binary files /dev/null and b/website/static/img/resources/azure/ml/azure-open-ai.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
new file mode 100644
index 00000000..ca331f12
Binary files /dev/null and b/website/static/img/resources/azure/ml/azure-speed-to-text.png differ
diff --git a/website/static/img/resources/digitalocean/digitalocean.png b/website/static/img/resources/digitalocean/digitalocean.png
new file mode 100644
index 00000000..a6638dbd
Binary files /dev/null and b/website/static/img/resources/digitalocean/digitalocean.png differ
diff --git a/website/static/img/resources/elastic/elastic.png b/website/static/img/resources/elastic/elastic.png
new file mode 100644
index 00000000..d311d639
Binary files /dev/null and b/website/static/img/resources/elastic/elastic.png differ
diff --git a/website/static/img/resources/firebase/firebase.png b/website/static/img/resources/firebase/firebase.png
new file mode 100644
index 00000000..2cfd1dfe
Binary files /dev/null and b/website/static/img/resources/firebase/firebase.png differ
diff --git a/website/static/img/resources/gcp/gcp.png b/website/static/img/resources/gcp/gcp.png
new file mode 100644
index 00000000..ca3d5fa0
Binary files /dev/null and b/website/static/img/resources/gcp/gcp.png differ
diff --git a/website/static/img/resources/generic/generic.png b/website/static/img/resources/generic/generic.png
new file mode 100644
index 00000000..351705eb
Binary files /dev/null and b/website/static/img/resources/generic/generic.png differ
diff --git a/website/static/img/resources/ibm/ibm.png b/website/static/img/resources/ibm/ibm.png
new file mode 100644
index 00000000..26db1bc1
Binary files /dev/null and b/website/static/img/resources/ibm/ibm.png differ
diff --git a/website/static/img/resources/k8s/k8s.png b/website/static/img/resources/k8s/k8s.png
new file mode 100644
index 00000000..66bd45fa
Binary files /dev/null and b/website/static/img/resources/k8s/k8s.png differ
diff --git a/website/static/img/resources/oci/compute/autoscale-white.png b/website/static/img/resources/oci/compute/autoscale-white.png
index dc64d11b..6dd68b2a 100644
Binary files a/website/static/img/resources/oci/compute/autoscale-white.png and b/website/static/img/resources/oci/compute/autoscale-white.png differ
diff --git a/website/static/img/resources/oci/compute/autoscale.png b/website/static/img/resources/oci/compute/autoscale.png
index f5374d3a..819ac5ac 100644
Binary files a/website/static/img/resources/oci/compute/autoscale.png and b/website/static/img/resources/oci/compute/autoscale.png differ
diff --git a/website/static/img/resources/oci/compute/bm-white.png b/website/static/img/resources/oci/compute/bm-white.png
index c33833d7..3d135036 100644
Binary files a/website/static/img/resources/oci/compute/bm-white.png and b/website/static/img/resources/oci/compute/bm-white.png differ
diff --git a/website/static/img/resources/oci/compute/bm.png b/website/static/img/resources/oci/compute/bm.png
index e9d50b0a..1480c07a 100644
Binary files a/website/static/img/resources/oci/compute/bm.png and b/website/static/img/resources/oci/compute/bm.png differ
diff --git a/website/static/img/resources/oci/compute/container-white.png b/website/static/img/resources/oci/compute/container-white.png
index ba6b09a0..f0049b86 100644
Binary files a/website/static/img/resources/oci/compute/container-white.png and b/website/static/img/resources/oci/compute/container-white.png differ
diff --git a/website/static/img/resources/oci/compute/container.png b/website/static/img/resources/oci/compute/container.png
index 949b46bd..53b61e19 100644
Binary files a/website/static/img/resources/oci/compute/container.png and b/website/static/img/resources/oci/compute/container.png differ
diff --git a/website/static/img/resources/oci/compute/functions-white.png b/website/static/img/resources/oci/compute/functions-white.png
index 6296e39b..d509c17e 100644
Binary files a/website/static/img/resources/oci/compute/functions-white.png and b/website/static/img/resources/oci/compute/functions-white.png differ
diff --git a/website/static/img/resources/oci/compute/functions.png b/website/static/img/resources/oci/compute/functions.png
index ec13a2dc..3961aa5f 100644
Binary files a/website/static/img/resources/oci/compute/functions.png and b/website/static/img/resources/oci/compute/functions.png differ
diff --git a/website/static/img/resources/oci/compute/instance-pools-white.png b/website/static/img/resources/oci/compute/instance-pools-white.png
index 397bc276..fbcc1036 100644
Binary files a/website/static/img/resources/oci/compute/instance-pools-white.png and b/website/static/img/resources/oci/compute/instance-pools-white.png differ
diff --git a/website/static/img/resources/oci/compute/instance-pools.png b/website/static/img/resources/oci/compute/instance-pools.png
index d1eacf12..18a4729d 100644
Binary files a/website/static/img/resources/oci/compute/instance-pools.png and b/website/static/img/resources/oci/compute/instance-pools.png differ
diff --git a/website/static/img/resources/oci/compute/ocir-white.png b/website/static/img/resources/oci/compute/ocir-white.png
index 55105058..4199ea67 100644
Binary files a/website/static/img/resources/oci/compute/ocir-white.png and b/website/static/img/resources/oci/compute/ocir-white.png differ
diff --git a/website/static/img/resources/oci/compute/ocir.png b/website/static/img/resources/oci/compute/ocir.png
index 4f6d9ee2..c8d1fd8b 100644
Binary files a/website/static/img/resources/oci/compute/ocir.png and b/website/static/img/resources/oci/compute/ocir.png differ
diff --git a/website/static/img/resources/oci/compute/oke-white.png b/website/static/img/resources/oci/compute/oke-white.png
index 64517535..28778d9f 100644
Binary files a/website/static/img/resources/oci/compute/oke-white.png and b/website/static/img/resources/oci/compute/oke-white.png differ
diff --git a/website/static/img/resources/oci/compute/oke.png b/website/static/img/resources/oci/compute/oke.png
index 61dcd839..3e7c9f10 100644
Binary files a/website/static/img/resources/oci/compute/oke.png and b/website/static/img/resources/oci/compute/oke.png differ
diff --git a/website/static/img/resources/oci/compute/vm-white.png b/website/static/img/resources/oci/compute/vm-white.png
index 1af7e0e7..4bbe5f1a 100644
Binary files a/website/static/img/resources/oci/compute/vm-white.png and b/website/static/img/resources/oci/compute/vm-white.png differ
diff --git a/website/static/img/resources/oci/compute/vm.png b/website/static/img/resources/oci/compute/vm.png
index 1b680b63..15fcaaab 100644
Binary files a/website/static/img/resources/oci/compute/vm.png and b/website/static/img/resources/oci/compute/vm.png differ
diff --git a/website/static/img/resources/oci/connectivity/backbone-white.png b/website/static/img/resources/oci/connectivity/backbone-white.png
index bfe31e80..8d8a4c0f 100644
Binary files a/website/static/img/resources/oci/connectivity/backbone-white.png and b/website/static/img/resources/oci/connectivity/backbone-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/backbone.png b/website/static/img/resources/oci/connectivity/backbone.png
index 106b1594..5fe3389d 100644
Binary files a/website/static/img/resources/oci/connectivity/backbone.png and b/website/static/img/resources/oci/connectivity/backbone.png differ
diff --git a/website/static/img/resources/oci/connectivity/cdn-white.png b/website/static/img/resources/oci/connectivity/cdn-white.png
index 605b695c..7f5d26d3 100644
Binary files a/website/static/img/resources/oci/connectivity/cdn-white.png and b/website/static/img/resources/oci/connectivity/cdn-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/cdn.png b/website/static/img/resources/oci/connectivity/cdn.png
index 839012b7..e1f41147 100644
Binary files a/website/static/img/resources/oci/connectivity/cdn.png and b/website/static/img/resources/oci/connectivity/cdn.png differ
diff --git a/website/static/img/resources/oci/connectivity/customer-datacenter.png b/website/static/img/resources/oci/connectivity/customer-datacenter.png
index 8937f7d4..a3dcb1c8 100644
Binary files a/website/static/img/resources/oci/connectivity/customer-datacenter.png and b/website/static/img/resources/oci/connectivity/customer-datacenter.png differ
diff --git a/website/static/img/resources/oci/connectivity/customer-datacntr-white.png b/website/static/img/resources/oci/connectivity/customer-datacntr-white.png
index 70b7c8d5..a51c557e 100644
Binary files a/website/static/img/resources/oci/connectivity/customer-datacntr-white.png and b/website/static/img/resources/oci/connectivity/customer-datacntr-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/customer-premises-white.png b/website/static/img/resources/oci/connectivity/customer-premises-white.png
new file mode 100644
index 00000000..95a197f8
Binary files /dev/null and b/website/static/img/resources/oci/connectivity/customer-premises-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/customer-premises.png b/website/static/img/resources/oci/connectivity/customer-premises.png
new file mode 100644
index 00000000..9ec4bc09
Binary files /dev/null and b/website/static/img/resources/oci/connectivity/customer-premises.png differ
diff --git a/website/static/img/resources/oci/connectivity/disconnected-regions-white.png b/website/static/img/resources/oci/connectivity/disconnected-regions-white.png
index 329d2956..abead332 100644
Binary files a/website/static/img/resources/oci/connectivity/disconnected-regions-white.png and b/website/static/img/resources/oci/connectivity/disconnected-regions-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/disconnected-regions.png b/website/static/img/resources/oci/connectivity/disconnected-regions.png
index 59f6df90..c7602ea4 100644
Binary files a/website/static/img/resources/oci/connectivity/disconnected-regions.png and b/website/static/img/resources/oci/connectivity/disconnected-regions.png differ
diff --git a/website/static/img/resources/oci/connectivity/dns-white.png b/website/static/img/resources/oci/connectivity/dns-white.png
index 831f6628..334d56b0 100644
Binary files a/website/static/img/resources/oci/connectivity/dns-white.png and b/website/static/img/resources/oci/connectivity/dns-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/dns.png b/website/static/img/resources/oci/connectivity/dns.png
index 374c1bb5..961b13d2 100644
Binary files a/website/static/img/resources/oci/connectivity/dns.png and b/website/static/img/resources/oci/connectivity/dns.png differ
diff --git a/website/static/img/resources/oci/connectivity/fast-connect-white.png b/website/static/img/resources/oci/connectivity/fast-connect-white.png
index 57827bb9..12538457 100644
Binary files a/website/static/img/resources/oci/connectivity/fast-connect-white.png and b/website/static/img/resources/oci/connectivity/fast-connect-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/fast-connect.png b/website/static/img/resources/oci/connectivity/fast-connect.png
index 9fb1a532..cdce6f04 100644
Binary files a/website/static/img/resources/oci/connectivity/fast-connect.png and b/website/static/img/resources/oci/connectivity/fast-connect.png differ
diff --git a/website/static/img/resources/oci/connectivity/nat-gateway-white.png b/website/static/img/resources/oci/connectivity/nat-gateway-white.png
index 2c4d84ba..75e698e6 100644
Binary files a/website/static/img/resources/oci/connectivity/nat-gateway-white.png and b/website/static/img/resources/oci/connectivity/nat-gateway-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/nat-gateway.png b/website/static/img/resources/oci/connectivity/nat-gateway.png
index b472878c..831f0e71 100644
Binary files a/website/static/img/resources/oci/connectivity/nat-gateway.png and b/website/static/img/resources/oci/connectivity/nat-gateway.png differ
diff --git a/website/static/img/resources/oci/connectivity/vpn-white.png b/website/static/img/resources/oci/connectivity/vpn-white.png
index be80a991..2dc116a9 100644
Binary files a/website/static/img/resources/oci/connectivity/vpn-white.png and b/website/static/img/resources/oci/connectivity/vpn-white.png differ
diff --git a/website/static/img/resources/oci/connectivity/vpn.png b/website/static/img/resources/oci/connectivity/vpn.png
index 03374859..3b90d7db 100644
Binary files a/website/static/img/resources/oci/connectivity/vpn.png and b/website/static/img/resources/oci/connectivity/vpn.png differ
diff --git a/website/static/img/resources/oci/database/autonomous-white.png b/website/static/img/resources/oci/database/autonomous-white.png
index 69395109..846f945e 100644
Binary files a/website/static/img/resources/oci/database/autonomous-white.png and b/website/static/img/resources/oci/database/autonomous-white.png differ
diff --git a/website/static/img/resources/oci/database/autonomous.png b/website/static/img/resources/oci/database/autonomous.png
index e9859e2d..2636bd26 100644
Binary files a/website/static/img/resources/oci/database/autonomous.png and b/website/static/img/resources/oci/database/autonomous.png differ
diff --git a/website/static/img/resources/oci/database/bigdata-service-white.png b/website/static/img/resources/oci/database/bigdata-service-white.png
index 76b26db4..cb560928 100644
Binary files a/website/static/img/resources/oci/database/bigdata-service-white.png and b/website/static/img/resources/oci/database/bigdata-service-white.png differ
diff --git a/website/static/img/resources/oci/database/bigdata-service.png b/website/static/img/resources/oci/database/bigdata-service.png
index ebb395da..36dbc5e4 100644
Binary files a/website/static/img/resources/oci/database/bigdata-service.png and b/website/static/img/resources/oci/database/bigdata-service.png differ
diff --git a/website/static/img/resources/oci/database/database-service-white.png b/website/static/img/resources/oci/database/database-service-white.png
index 552c56c7..d6b0aa00 100644
Binary files a/website/static/img/resources/oci/database/database-service-white.png and b/website/static/img/resources/oci/database/database-service-white.png differ
diff --git a/website/static/img/resources/oci/database/database-service.png b/website/static/img/resources/oci/database/database-service.png
index 5442cecd..82f04b41 100644
Binary files a/website/static/img/resources/oci/database/database-service.png and b/website/static/img/resources/oci/database/database-service.png differ
diff --git a/website/static/img/resources/oci/database/dataflow-apache-white.png b/website/static/img/resources/oci/database/dataflow-apache-white.png
index cf69c3b5..85855118 100644
Binary files a/website/static/img/resources/oci/database/dataflow-apache-white.png and b/website/static/img/resources/oci/database/dataflow-apache-white.png differ
diff --git a/website/static/img/resources/oci/database/dataflow-apache.png b/website/static/img/resources/oci/database/dataflow-apache.png
index c04b65ba..42c29f05 100644
Binary files a/website/static/img/resources/oci/database/dataflow-apache.png and b/website/static/img/resources/oci/database/dataflow-apache.png differ
diff --git a/website/static/img/resources/oci/database/dcat-white.png b/website/static/img/resources/oci/database/dcat-white.png
index dbff953e..4e34eaf9 100644
Binary files a/website/static/img/resources/oci/database/dcat-white.png and b/website/static/img/resources/oci/database/dcat-white.png differ
diff --git a/website/static/img/resources/oci/database/dcat.png b/website/static/img/resources/oci/database/dcat.png
index c1bc05b1..301234bc 100644
Binary files a/website/static/img/resources/oci/database/dcat.png and b/website/static/img/resources/oci/database/dcat.png differ
diff --git a/website/static/img/resources/oci/database/dis-white.png b/website/static/img/resources/oci/database/dis-white.png
index 63ab6638..4c4a7619 100644
Binary files a/website/static/img/resources/oci/database/dis-white.png and b/website/static/img/resources/oci/database/dis-white.png differ
diff --git a/website/static/img/resources/oci/database/dis.png b/website/static/img/resources/oci/database/dis.png
index 1e0dcfe4..36f34a2d 100644
Binary files a/website/static/img/resources/oci/database/dis.png and b/website/static/img/resources/oci/database/dis.png differ
diff --git a/website/static/img/resources/oci/database/dms-white.png b/website/static/img/resources/oci/database/dms-white.png
index 4fcf1fe7..43a8f648 100644
Binary files a/website/static/img/resources/oci/database/dms-white.png and b/website/static/img/resources/oci/database/dms-white.png differ
diff --git a/website/static/img/resources/oci/database/dms.png b/website/static/img/resources/oci/database/dms.png
index dd76cb20..a640305a 100644
Binary files a/website/static/img/resources/oci/database/dms.png and b/website/static/img/resources/oci/database/dms.png differ
diff --git a/website/static/img/resources/oci/database/science-white.png b/website/static/img/resources/oci/database/science-white.png
index 99d8d203..6acb82a5 100644
Binary files a/website/static/img/resources/oci/database/science-white.png and b/website/static/img/resources/oci/database/science-white.png differ
diff --git a/website/static/img/resources/oci/database/science.png b/website/static/img/resources/oci/database/science.png
index c720667c..f0d581a8 100644
Binary files a/website/static/img/resources/oci/database/science.png and b/website/static/img/resources/oci/database/science.png differ
diff --git a/website/static/img/resources/oci/database/stream-white.png b/website/static/img/resources/oci/database/stream-white.png
index 1406b306..ed1062d7 100644
Binary files a/website/static/img/resources/oci/database/stream-white.png and b/website/static/img/resources/oci/database/stream-white.png differ
diff --git a/website/static/img/resources/oci/database/stream.png b/website/static/img/resources/oci/database/stream.png
index 5624c168..cd5feb98 100644
Binary files a/website/static/img/resources/oci/database/stream.png and b/website/static/img/resources/oci/database/stream.png differ
diff --git a/website/static/img/resources/oci/devops/api-gateway-white.png b/website/static/img/resources/oci/devops/api-gateway-white.png
index 767a98ff..44a2c156 100644
Binary files a/website/static/img/resources/oci/devops/api-gateway-white.png and b/website/static/img/resources/oci/devops/api-gateway-white.png differ
diff --git a/website/static/img/resources/oci/devops/api-gateway.png b/website/static/img/resources/oci/devops/api-gateway.png
index d244cabf..63176a0d 100644
Binary files a/website/static/img/resources/oci/devops/api-gateway.png and b/website/static/img/resources/oci/devops/api-gateway.png differ
diff --git a/website/static/img/resources/oci/devops/api-service-white.png b/website/static/img/resources/oci/devops/api-service-white.png
index ab50a5d6..1b2d0c83 100644
Binary files a/website/static/img/resources/oci/devops/api-service-white.png and b/website/static/img/resources/oci/devops/api-service-white.png differ
diff --git a/website/static/img/resources/oci/devops/api-service.png b/website/static/img/resources/oci/devops/api-service.png
index 208047b9..7ff4363d 100644
Binary files a/website/static/img/resources/oci/devops/api-service.png and b/website/static/img/resources/oci/devops/api-service.png differ
diff --git a/website/static/img/resources/oci/devops/resource-mgmt-white.png b/website/static/img/resources/oci/devops/resource-mgmt-white.png
index ccf19009..fd63eb40 100644
Binary files a/website/static/img/resources/oci/devops/resource-mgmt-white.png and b/website/static/img/resources/oci/devops/resource-mgmt-white.png differ
diff --git a/website/static/img/resources/oci/devops/resource-mgmt.png b/website/static/img/resources/oci/devops/resource-mgmt.png
index 97cc3975..6cf36622 100644
Binary files a/website/static/img/resources/oci/devops/resource-mgmt.png and b/website/static/img/resources/oci/devops/resource-mgmt.png differ
diff --git a/website/static/img/resources/oci/governance/audit-white.png b/website/static/img/resources/oci/governance/audit-white.png
index dc861eb5..37a4a0de 100644
Binary files a/website/static/img/resources/oci/governance/audit-white.png and b/website/static/img/resources/oci/governance/audit-white.png differ
diff --git a/website/static/img/resources/oci/governance/audit.png b/website/static/img/resources/oci/governance/audit.png
index d5d7b617..492ad440 100644
Binary files a/website/static/img/resources/oci/governance/audit.png and b/website/static/img/resources/oci/governance/audit.png differ
diff --git a/website/static/img/resources/oci/governance/compartments-white.png b/website/static/img/resources/oci/governance/compartments-white.png
index c4271c34..47e540a6 100644
Binary files a/website/static/img/resources/oci/governance/compartments-white.png and b/website/static/img/resources/oci/governance/compartments-white.png differ
diff --git a/website/static/img/resources/oci/governance/compartments.png b/website/static/img/resources/oci/governance/compartments.png
index 8b9a9de6..1af5181a 100644
Binary files a/website/static/img/resources/oci/governance/compartments.png and b/website/static/img/resources/oci/governance/compartments.png differ
diff --git a/website/static/img/resources/oci/governance/groups-white.png b/website/static/img/resources/oci/governance/groups-white.png
index 3052cef6..d25027eb 100644
Binary files a/website/static/img/resources/oci/governance/groups-white.png and b/website/static/img/resources/oci/governance/groups-white.png differ
diff --git a/website/static/img/resources/oci/governance/groups.png b/website/static/img/resources/oci/governance/groups.png
index 34f1064b..e313e3e9 100644
Binary files a/website/static/img/resources/oci/governance/groups.png and b/website/static/img/resources/oci/governance/groups.png differ
diff --git a/website/static/img/resources/oci/governance/logging-white.png b/website/static/img/resources/oci/governance/logging-white.png
index 99b5db2d..178cc968 100644
Binary files a/website/static/img/resources/oci/governance/logging-white.png and b/website/static/img/resources/oci/governance/logging-white.png differ
diff --git a/website/static/img/resources/oci/governance/logging.png b/website/static/img/resources/oci/governance/logging.png
index 50e6836a..99dd25d3 100644
Binary files a/website/static/img/resources/oci/governance/logging.png and b/website/static/img/resources/oci/governance/logging.png differ
diff --git a/website/static/img/resources/oci/governance/ocid-white.png b/website/static/img/resources/oci/governance/ocid-white.png
index a69576ae..97ee4bf3 100644
Binary files a/website/static/img/resources/oci/governance/ocid-white.png and b/website/static/img/resources/oci/governance/ocid-white.png differ
diff --git a/website/static/img/resources/oci/governance/ocid.png b/website/static/img/resources/oci/governance/ocid.png
index c5200b34..8dfc4c39 100644
Binary files a/website/static/img/resources/oci/governance/ocid.png and b/website/static/img/resources/oci/governance/ocid.png differ
diff --git a/website/static/img/resources/oci/governance/policies-white.png b/website/static/img/resources/oci/governance/policies-white.png
index 936271cb..48501e36 100644
Binary files a/website/static/img/resources/oci/governance/policies-white.png and b/website/static/img/resources/oci/governance/policies-white.png differ
diff --git a/website/static/img/resources/oci/governance/policies.png b/website/static/img/resources/oci/governance/policies.png
index 988efa23..b8c5a0c3 100644
Binary files a/website/static/img/resources/oci/governance/policies.png and b/website/static/img/resources/oci/governance/policies.png differ
diff --git a/website/static/img/resources/oci/governance/tagging-white.png b/website/static/img/resources/oci/governance/tagging-white.png
index 1d27cc47..c7e51907 100644
Binary files a/website/static/img/resources/oci/governance/tagging-white.png and b/website/static/img/resources/oci/governance/tagging-white.png differ
diff --git a/website/static/img/resources/oci/governance/tagging.png b/website/static/img/resources/oci/governance/tagging.png
index d8bfb7eb..bf02b018 100644
Binary files a/website/static/img/resources/oci/governance/tagging.png and b/website/static/img/resources/oci/governance/tagging.png differ
diff --git a/website/static/img/resources/oci/monitoring/alarm-white.png b/website/static/img/resources/oci/monitoring/alarm-white.png
index e91831b2..27e01b4c 100644
Binary files a/website/static/img/resources/oci/monitoring/alarm-white.png and b/website/static/img/resources/oci/monitoring/alarm-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/alarm.png b/website/static/img/resources/oci/monitoring/alarm.png
index 372e3590..85a37300 100644
Binary files a/website/static/img/resources/oci/monitoring/alarm.png and b/website/static/img/resources/oci/monitoring/alarm.png differ
diff --git a/website/static/img/resources/oci/monitoring/email-white.png b/website/static/img/resources/oci/monitoring/email-white.png
index a9201a7a..0b0420fb 100644
Binary files a/website/static/img/resources/oci/monitoring/email-white.png and b/website/static/img/resources/oci/monitoring/email-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/email.png b/website/static/img/resources/oci/monitoring/email.png
index f8d843c8..241e4222 100644
Binary files a/website/static/img/resources/oci/monitoring/email.png and b/website/static/img/resources/oci/monitoring/email.png differ
diff --git a/website/static/img/resources/oci/monitoring/events-white.png b/website/static/img/resources/oci/monitoring/events-white.png
index 6445a224..3a9f5ea0 100644
Binary files a/website/static/img/resources/oci/monitoring/events-white.png and b/website/static/img/resources/oci/monitoring/events-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/events.png b/website/static/img/resources/oci/monitoring/events.png
index 465be4b6..1e96e731 100644
Binary files a/website/static/img/resources/oci/monitoring/events.png and b/website/static/img/resources/oci/monitoring/events.png differ
diff --git a/website/static/img/resources/oci/monitoring/health-check-white.png b/website/static/img/resources/oci/monitoring/health-check-white.png
index 4b1dea4e..39fad826 100644
Binary files a/website/static/img/resources/oci/monitoring/health-check-white.png and b/website/static/img/resources/oci/monitoring/health-check-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/health-check.png b/website/static/img/resources/oci/monitoring/health-check.png
index 96794e87..4882b22e 100644
Binary files a/website/static/img/resources/oci/monitoring/health-check.png and b/website/static/img/resources/oci/monitoring/health-check.png differ
diff --git a/website/static/img/resources/oci/monitoring/notifications-white.png b/website/static/img/resources/oci/monitoring/notifications-white.png
index bf74ef70..6a2cedcb 100644
Binary files a/website/static/img/resources/oci/monitoring/notifications-white.png and b/website/static/img/resources/oci/monitoring/notifications-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/notifications.png b/website/static/img/resources/oci/monitoring/notifications.png
index 059ca8f5..878aa1fb 100644
Binary files a/website/static/img/resources/oci/monitoring/notifications.png and b/website/static/img/resources/oci/monitoring/notifications.png differ
diff --git a/website/static/img/resources/oci/monitoring/queue-white.png b/website/static/img/resources/oci/monitoring/queue-white.png
index 9f8751dd..23f6ff0b 100644
Binary files a/website/static/img/resources/oci/monitoring/queue-white.png and b/website/static/img/resources/oci/monitoring/queue-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/queue.png b/website/static/img/resources/oci/monitoring/queue.png
index 38da334b..9b96cc09 100644
Binary files a/website/static/img/resources/oci/monitoring/queue.png and b/website/static/img/resources/oci/monitoring/queue.png differ
diff --git a/website/static/img/resources/oci/monitoring/search-white.png b/website/static/img/resources/oci/monitoring/search-white.png
index 44f6f7cc..f2b04934 100644
Binary files a/website/static/img/resources/oci/monitoring/search-white.png and b/website/static/img/resources/oci/monitoring/search-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/search.png b/website/static/img/resources/oci/monitoring/search.png
index af5f951d..eadc2375 100644
Binary files a/website/static/img/resources/oci/monitoring/search.png and b/website/static/img/resources/oci/monitoring/search.png differ
diff --git a/website/static/img/resources/oci/monitoring/telemetry-white.png b/website/static/img/resources/oci/monitoring/telemetry-white.png
index 9421c90b..0eaf64ff 100644
Binary files a/website/static/img/resources/oci/monitoring/telemetry-white.png and b/website/static/img/resources/oci/monitoring/telemetry-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/telemetry.png b/website/static/img/resources/oci/monitoring/telemetry.png
index a5d4931a..34f6dc2f 100644
Binary files a/website/static/img/resources/oci/monitoring/telemetry.png and b/website/static/img/resources/oci/monitoring/telemetry.png differ
diff --git a/website/static/img/resources/oci/monitoring/workflow-white.png b/website/static/img/resources/oci/monitoring/workflow-white.png
index 0971ed5e..c5548f45 100644
Binary files a/website/static/img/resources/oci/monitoring/workflow-white.png and b/website/static/img/resources/oci/monitoring/workflow-white.png differ
diff --git a/website/static/img/resources/oci/monitoring/workflow.png b/website/static/img/resources/oci/monitoring/workflow.png
index 9ce2300e..d5719f99 100644
Binary files a/website/static/img/resources/oci/monitoring/workflow.png and b/website/static/img/resources/oci/monitoring/workflow.png differ
diff --git a/website/static/img/resources/oci/network/drg-white.png b/website/static/img/resources/oci/network/drg-white.png
index 34848977..8fb70e47 100644
Binary files a/website/static/img/resources/oci/network/drg-white.png and b/website/static/img/resources/oci/network/drg-white.png differ
diff --git a/website/static/img/resources/oci/network/drg.png b/website/static/img/resources/oci/network/drg.png
index b1aaba9b..82752e2d 100644
Binary files a/website/static/img/resources/oci/network/drg.png and b/website/static/img/resources/oci/network/drg.png differ
diff --git a/website/static/img/resources/oci/network/firewall-white.png b/website/static/img/resources/oci/network/firewall-white.png
index 40f6631e..deca4530 100644
Binary files a/website/static/img/resources/oci/network/firewall-white.png and b/website/static/img/resources/oci/network/firewall-white.png differ
diff --git a/website/static/img/resources/oci/network/firewall.png b/website/static/img/resources/oci/network/firewall.png
index 6c572b43..c2aa56ac 100644
Binary files a/website/static/img/resources/oci/network/firewall.png and b/website/static/img/resources/oci/network/firewall.png differ
diff --git a/website/static/img/resources/oci/network/internet-gateway-white.png b/website/static/img/resources/oci/network/internet-gateway-white.png
index b7a8a01e..7cc5921d 100644
Binary files a/website/static/img/resources/oci/network/internet-gateway-white.png and b/website/static/img/resources/oci/network/internet-gateway-white.png differ
diff --git a/website/static/img/resources/oci/network/internet-gateway.png b/website/static/img/resources/oci/network/internet-gateway.png
index 1762239a..5f3194c0 100644
Binary files a/website/static/img/resources/oci/network/internet-gateway.png and b/website/static/img/resources/oci/network/internet-gateway.png differ
diff --git a/website/static/img/resources/oci/network/load-balancer-white.png b/website/static/img/resources/oci/network/load-balancer-white.png
index 12a3d33c..264b0372 100644
Binary files a/website/static/img/resources/oci/network/load-balancer-white.png and b/website/static/img/resources/oci/network/load-balancer-white.png differ
diff --git a/website/static/img/resources/oci/network/load-balancer.png b/website/static/img/resources/oci/network/load-balancer.png
index 504a5acd..a50d90d6 100644
Binary files a/website/static/img/resources/oci/network/load-balancer.png and b/website/static/img/resources/oci/network/load-balancer.png differ
diff --git a/website/static/img/resources/oci/network/route-table-white.png b/website/static/img/resources/oci/network/route-table-white.png
index 0826ba4d..44df2146 100644
Binary files a/website/static/img/resources/oci/network/route-table-white.png and b/website/static/img/resources/oci/network/route-table-white.png differ
diff --git a/website/static/img/resources/oci/network/route-table.png b/website/static/img/resources/oci/network/route-table.png
index 3733e06b..57a4be57 100644
Binary files a/website/static/img/resources/oci/network/route-table.png and b/website/static/img/resources/oci/network/route-table.png differ
diff --git a/website/static/img/resources/oci/network/security-lists-white.png b/website/static/img/resources/oci/network/security-lists-white.png
index 6151b8b2..1ec7bdd8 100644
Binary files a/website/static/img/resources/oci/network/security-lists-white.png and b/website/static/img/resources/oci/network/security-lists-white.png differ
diff --git a/website/static/img/resources/oci/network/security-lists.png b/website/static/img/resources/oci/network/security-lists.png
index 8bcc72fe..8c91b76d 100644
Binary files a/website/static/img/resources/oci/network/security-lists.png and b/website/static/img/resources/oci/network/security-lists.png differ
diff --git a/website/static/img/resources/oci/network/service-gateway-white.png b/website/static/img/resources/oci/network/service-gateway-white.png
index b0d820d3..a2321bbe 100644
Binary files a/website/static/img/resources/oci/network/service-gateway-white.png and b/website/static/img/resources/oci/network/service-gateway-white.png differ
diff --git a/website/static/img/resources/oci/network/service-gateway.png b/website/static/img/resources/oci/network/service-gateway.png
index 548c87af..8b099f40 100644
Binary files a/website/static/img/resources/oci/network/service-gateway.png and b/website/static/img/resources/oci/network/service-gateway.png differ
diff --git a/website/static/img/resources/oci/network/vcn-white.png b/website/static/img/resources/oci/network/vcn-white.png
index e217effe..93359319 100644
Binary files a/website/static/img/resources/oci/network/vcn-white.png and b/website/static/img/resources/oci/network/vcn-white.png differ
diff --git a/website/static/img/resources/oci/network/vcn.png b/website/static/img/resources/oci/network/vcn.png
index aefa7004..169da0e3 100644
Binary files a/website/static/img/resources/oci/network/vcn.png and b/website/static/img/resources/oci/network/vcn.png differ
diff --git a/website/static/img/resources/oci/oci.png b/website/static/img/resources/oci/oci.png
new file mode 100644
index 00000000..97e0109b
Binary files /dev/null and b/website/static/img/resources/oci/oci.png differ
diff --git a/website/static/img/resources/oci/security/cloud-guard-white.png b/website/static/img/resources/oci/security/cloud-guard-white.png
index db4a78d1..4e1b11be 100644
Binary files a/website/static/img/resources/oci/security/cloud-guard-white.png and b/website/static/img/resources/oci/security/cloud-guard-white.png differ
diff --git a/website/static/img/resources/oci/security/cloud-guard.png b/website/static/img/resources/oci/security/cloud-guard.png
index 8c7c8a5e..ee4f22db 100644
Binary files a/website/static/img/resources/oci/security/cloud-guard.png and b/website/static/img/resources/oci/security/cloud-guard.png differ
diff --git a/website/static/img/resources/oci/security/ddos-white.png b/website/static/img/resources/oci/security/ddos-white.png
index 6657c0b9..cec9df53 100644
Binary files a/website/static/img/resources/oci/security/ddos-white.png and b/website/static/img/resources/oci/security/ddos-white.png differ
diff --git a/website/static/img/resources/oci/security/ddos.png b/website/static/img/resources/oci/security/ddos.png
index e2fafae4..e01ac36c 100644
Binary files a/website/static/img/resources/oci/security/ddos.png and b/website/static/img/resources/oci/security/ddos.png differ
diff --git a/website/static/img/resources/oci/security/encryption-white.png b/website/static/img/resources/oci/security/encryption-white.png
index f85f3577..83c7bd81 100644
Binary files a/website/static/img/resources/oci/security/encryption-white.png and b/website/static/img/resources/oci/security/encryption-white.png differ
diff --git a/website/static/img/resources/oci/security/encryption.png b/website/static/img/resources/oci/security/encryption.png
index 16c1b125..2f7e750b 100644
Binary files a/website/static/img/resources/oci/security/encryption.png and b/website/static/img/resources/oci/security/encryption.png differ
diff --git a/website/static/img/resources/oci/security/id-access-white.png b/website/static/img/resources/oci/security/id-access-white.png
index 597db448..308c626a 100644
Binary files a/website/static/img/resources/oci/security/id-access-white.png and b/website/static/img/resources/oci/security/id-access-white.png differ
diff --git a/website/static/img/resources/oci/security/id-access.png b/website/static/img/resources/oci/security/id-access.png
index 0beebb1b..38e67863 100644
Binary files a/website/static/img/resources/oci/security/id-access.png and b/website/static/img/resources/oci/security/id-access.png differ
diff --git a/website/static/img/resources/oci/security/key-management-white.png b/website/static/img/resources/oci/security/key-management-white.png
index 26cdeeae..8137cb02 100644
Binary files a/website/static/img/resources/oci/security/key-management-white.png and b/website/static/img/resources/oci/security/key-management-white.png differ
diff --git a/website/static/img/resources/oci/security/key-management.png b/website/static/img/resources/oci/security/key-management.png
index 83e43330..e19adef7 100644
Binary files a/website/static/img/resources/oci/security/key-management.png and b/website/static/img/resources/oci/security/key-management.png differ
diff --git a/website/static/img/resources/oci/security/max-security-zone-white.png b/website/static/img/resources/oci/security/max-security-zone-white.png
index 27da254a..bcac3562 100644
Binary files a/website/static/img/resources/oci/security/max-security-zone-white.png and b/website/static/img/resources/oci/security/max-security-zone-white.png differ
diff --git a/website/static/img/resources/oci/security/max-security-zone.png b/website/static/img/resources/oci/security/max-security-zone.png
index 71f98d52..a15a9949 100644
Binary files a/website/static/img/resources/oci/security/max-security-zone.png and b/website/static/img/resources/oci/security/max-security-zone.png differ
diff --git a/website/static/img/resources/oci/security/vault-white.png b/website/static/img/resources/oci/security/vault-white.png
index 74c18ff8..800b0bde 100644
Binary files a/website/static/img/resources/oci/security/vault-white.png and b/website/static/img/resources/oci/security/vault-white.png differ
diff --git a/website/static/img/resources/oci/security/vault.png b/website/static/img/resources/oci/security/vault.png
index 68789b9c..a2098b61 100644
Binary files a/website/static/img/resources/oci/security/vault.png and b/website/static/img/resources/oci/security/vault.png differ
diff --git a/website/static/img/resources/oci/security/waf-white.png b/website/static/img/resources/oci/security/waf-white.png
index c938ec28..2a555729 100644
Binary files a/website/static/img/resources/oci/security/waf-white.png and b/website/static/img/resources/oci/security/waf-white.png differ
diff --git a/website/static/img/resources/oci/security/waf.png b/website/static/img/resources/oci/security/waf.png
index e268c965..1d25c0f8 100644
Binary files a/website/static/img/resources/oci/security/waf.png and b/website/static/img/resources/oci/security/waf.png differ
diff --git a/website/static/img/resources/oci/storage/backup-restore-white.png b/website/static/img/resources/oci/storage/backup-restore-white.png
index e322b6aa..e86aa3e9 100644
Binary files a/website/static/img/resources/oci/storage/backup-restore-white.png and b/website/static/img/resources/oci/storage/backup-restore-white.png differ
diff --git a/website/static/img/resources/oci/storage/backup-restore.png b/website/static/img/resources/oci/storage/backup-restore.png
index 5d9c3415..23988414 100644
Binary files a/website/static/img/resources/oci/storage/backup-restore.png and b/website/static/img/resources/oci/storage/backup-restore.png differ
diff --git a/website/static/img/resources/oci/storage/block-storage-clone-white.png b/website/static/img/resources/oci/storage/block-storage-clone-white.png
index a372e484..f5586096 100644
Binary files a/website/static/img/resources/oci/storage/block-storage-clone-white.png and b/website/static/img/resources/oci/storage/block-storage-clone-white.png differ
diff --git a/website/static/img/resources/oci/storage/block-storage-clone.png b/website/static/img/resources/oci/storage/block-storage-clone.png
index f97b3da8..6d1ce573 100644
Binary files a/website/static/img/resources/oci/storage/block-storage-clone.png and b/website/static/img/resources/oci/storage/block-storage-clone.png differ
diff --git a/website/static/img/resources/oci/storage/block-storage-white.png b/website/static/img/resources/oci/storage/block-storage-white.png
index d78a1aaa..b15fd5c7 100644
Binary files a/website/static/img/resources/oci/storage/block-storage-white.png and b/website/static/img/resources/oci/storage/block-storage-white.png differ
diff --git a/website/static/img/resources/oci/storage/block-storage.png b/website/static/img/resources/oci/storage/block-storage.png
index c2408c4e..88a95637 100644
Binary files a/website/static/img/resources/oci/storage/block-storage.png and b/website/static/img/resources/oci/storage/block-storage.png differ
diff --git a/website/static/img/resources/oci/storage/buckets-white.png b/website/static/img/resources/oci/storage/buckets-white.png
index 2607e45f..75ba2415 100644
Binary files a/website/static/img/resources/oci/storage/buckets-white.png and b/website/static/img/resources/oci/storage/buckets-white.png differ
diff --git a/website/static/img/resources/oci/storage/buckets.png b/website/static/img/resources/oci/storage/buckets.png
index c93e6910..ba008e03 100644
Binary files a/website/static/img/resources/oci/storage/buckets.png and b/website/static/img/resources/oci/storage/buckets.png differ
diff --git a/website/static/img/resources/oci/storage/data-transfer-white.png b/website/static/img/resources/oci/storage/data-transfer-white.png
index 06e72e0c..6b0795c0 100644
Binary files a/website/static/img/resources/oci/storage/data-transfer-white.png and b/website/static/img/resources/oci/storage/data-transfer-white.png differ
diff --git a/website/static/img/resources/oci/storage/data-transfer.png b/website/static/img/resources/oci/storage/data-transfer.png
index ebdfe816..81c7eca2 100644
Binary files a/website/static/img/resources/oci/storage/data-transfer.png and b/website/static/img/resources/oci/storage/data-transfer.png differ
diff --git a/website/static/img/resources/oci/storage/elastic-performance-white.png b/website/static/img/resources/oci/storage/elastic-performance-white.png
index ce8116f9..25dd1dae 100644
Binary files a/website/static/img/resources/oci/storage/elastic-performance-white.png and b/website/static/img/resources/oci/storage/elastic-performance-white.png differ
diff --git a/website/static/img/resources/oci/storage/elastic-performance.png b/website/static/img/resources/oci/storage/elastic-performance.png
index 627e2397..44d6f0ad 100644
Binary files a/website/static/img/resources/oci/storage/elastic-performance.png and b/website/static/img/resources/oci/storage/elastic-performance.png differ
diff --git a/website/static/img/resources/oci/storage/file-storage-white.png b/website/static/img/resources/oci/storage/file-storage-white.png
index 0380d32b..253c986b 100644
Binary files a/website/static/img/resources/oci/storage/file-storage-white.png and b/website/static/img/resources/oci/storage/file-storage-white.png differ
diff --git a/website/static/img/resources/oci/storage/file-storage.png b/website/static/img/resources/oci/storage/file-storage.png
index c3cb4d9b..10165c69 100644
Binary files a/website/static/img/resources/oci/storage/file-storage.png and b/website/static/img/resources/oci/storage/file-storage.png differ
diff --git a/website/static/img/resources/oci/storage/object-storage-white.png b/website/static/img/resources/oci/storage/object-storage-white.png
index 838b5353..2ca1bbec 100644
Binary files a/website/static/img/resources/oci/storage/object-storage-white.png and b/website/static/img/resources/oci/storage/object-storage-white.png differ
diff --git a/website/static/img/resources/oci/storage/object-storage.png b/website/static/img/resources/oci/storage/object-storage.png
index 6bba0aa6..ae1df86f 100644
Binary files a/website/static/img/resources/oci/storage/object-storage.png and b/website/static/img/resources/oci/storage/object-storage.png differ
diff --git a/website/static/img/resources/oci/storage/storage-gateway-white.png b/website/static/img/resources/oci/storage/storage-gateway-white.png
index 8b5dad4f..fd400bda 100644
Binary files a/website/static/img/resources/oci/storage/storage-gateway-white.png and b/website/static/img/resources/oci/storage/storage-gateway-white.png differ
diff --git a/website/static/img/resources/oci/storage/storage-gateway.png b/website/static/img/resources/oci/storage/storage-gateway.png
index 642e47af..b9271afe 100644
Binary files a/website/static/img/resources/oci/storage/storage-gateway.png and b/website/static/img/resources/oci/storage/storage-gateway.png differ
diff --git a/website/static/img/resources/onprem/network/mikrotik.png b/website/static/img/resources/onprem/network/mikrotik.png
new file mode 100644
index 00000000..515b685e
Binary files /dev/null and b/website/static/img/resources/onprem/network/mikrotik.png differ
diff --git a/website/static/img/resources/onprem/onprem.png b/website/static/img/resources/onprem/onprem.png
new file mode 100644
index 00000000..6230344b
Binary files /dev/null and b/website/static/img/resources/onprem/onprem.png differ
diff --git a/website/static/img/resources/outscale/outscale.png b/website/static/img/resources/outscale/outscale.png
new file mode 100644
index 00000000..526b7f04
Binary files /dev/null and b/website/static/img/resources/outscale/outscale.png differ
diff --git a/website/static/img/resources/programming/framework/phoenix.png b/website/static/img/resources/programming/framework/phoenix.png
new file mode 100644
index 00000000..ca32175f
Binary files /dev/null and b/website/static/img/resources/programming/framework/phoenix.png differ
diff --git a/website/static/img/resources/programming/framework/sqlpage.png b/website/static/img/resources/programming/framework/sqlpage.png
new file mode 100644
index 00000000..1486241f
Binary files /dev/null and b/website/static/img/resources/programming/framework/sqlpage.png differ
diff --git a/website/static/img/resources/programming/language/elixir.png b/website/static/img/resources/programming/language/elixir.png
index 86e7bddd..2ef4cafa 100644
Binary files a/website/static/img/resources/programming/language/elixir.png and b/website/static/img/resources/programming/language/elixir.png differ
diff --git a/website/static/img/resources/programming/language/sql.png b/website/static/img/resources/programming/language/sql.png
new file mode 100644
index 00000000..aab80a12
Binary files /dev/null and b/website/static/img/resources/programming/language/sql.png differ
diff --git a/website/static/img/resources/programming/programming.png b/website/static/img/resources/programming/programming.png
new file mode 100644
index 00000000..13b669ba
Binary files /dev/null and b/website/static/img/resources/programming/programming.png differ
diff --git a/website/static/img/resources/saas/crm/intercom.png b/website/static/img/resources/saas/crm/intercom.png
new file mode 100644
index 00000000..c49ab848
Binary files /dev/null and b/website/static/img/resources/saas/crm/intercom.png differ
diff --git a/website/static/img/resources/saas/crm/zendesk.png b/website/static/img/resources/saas/crm/zendesk.png
new file mode 100644
index 00000000..f2b09840
Binary files /dev/null and b/website/static/img/resources/saas/crm/zendesk.png differ
diff --git a/website/static/img/resources/saas/logging/newrelic.png b/website/static/img/resources/saas/logging/newrelic.png
index 908ccd08..98b5e928 100644
Binary files a/website/static/img/resources/saas/logging/newrelic.png and b/website/static/img/resources/saas/logging/newrelic.png differ
diff --git a/website/static/img/resources/saas/saas.png b/website/static/img/resources/saas/saas.png
new file mode 100644
index 00000000..589c329d
Binary files /dev/null and b/website/static/img/resources/saas/saas.png differ
diff --git a/website/static/img/resources/saas/security/crowdstrike.png b/website/static/img/resources/saas/security/crowdstrike.png
new file mode 100644
index 00000000..4b2dc92e
Binary files /dev/null and b/website/static/img/resources/saas/security/crowdstrike.png differ