diff --git a/config.py b/config.py
index 06aa05bb..c4f00f0d 100644
--- a/config.py
+++ b/config.py
@@ -76,7 +76,7 @@ TMPL_APIDOC = "apidoc.tmpl"
TMPL_MODULE = "module.tmpl"
UPPER_WORDS = {
- "aws": ("aws", "api", "ebs", "ec2", "efs", "emr", "rds", "ml", "mq", "nat", "vpc", "waf", "sdk"),
+ "aws": ("aws", "api", "ebs", "ec2", "efs", "emr", "rds", "ml", "mq", "nat", "vpc", "waf", "sdk", "aiagent", "agentcore"),
"azure": ("ad", "b2c", "ai", "api", "cdn", "ddos", "dns", "fxt", "hana", "hd", "id", "sap", "sql", "vm", "vpn", "vpc"),
"gcp": ("gcp", "ai", "api", "cdn", "dns", "gke", "gpu", "iap", "ml", "nat", "os", "sdk", "sql", "tpu", "vpn"),
"firebase": ("ab", "fcm", "ml"),
@@ -242,6 +242,8 @@ ALIASES = {
},
"ml": {
"DeepLearningContainers": "DLC",
+ "PolicyEngineAgenticGuardrails": "PEAG",
+ "Observability": "OBS",
},
"network": {
"CloudFront": "CF",
diff --git a/diagrams/__init__.py b/diagrams/__init__.py
index 66c3458f..027aa877 100644
--- a/diagrams/__init__.py
+++ b/diagrams/__init__.py
@@ -139,8 +139,7 @@ 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')
@@ -492,8 +491,7 @@ 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)
@@ -507,23 +505,15 @@ 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):
@@ -532,12 +522,7 @@ 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/aws/ml.py b/diagrams/aws/ml.py
index eb7cc5fd..d703e0ea 100644
--- a/diagrams/aws/ml.py
+++ b/diagrams/aws/ml.py
@@ -8,7 +8,7 @@ class _ML(_AWS):
_icon_dir = "resources/aws/ml"
-class Agentcore(_ML):
+class AGENTCORE(_ML):
_icon = "agentcore.png"
@@ -191,3 +191,5 @@ class Translate(_ML):
# Aliases
DLC = DeepLearningContainers
+PEAG = PolicyEngineAgenticGuardrails
+OBS = Observability
diff --git a/diagrams/cli.py b/diagrams/cli.py
index c75eb3d9..7346300e 100644
--- a/diagrams/cli.py
+++ b/diagrams/cli.py
@@ -24,7 +24,7 @@ def run() -> int:
args = parser.parse_args()
for path in args.paths:
- with open(path, encoding='utf-8') as f:
+ with open(path, encoding="utf-8") as f:
exec(f.read())
return 0
diff --git a/docs/nodes/aws.md b/docs/nodes/aws.md
index 5085f62d..ccadec52 100644
--- a/docs/nodes/aws.md
+++ b/docs/nodes/aws.md
@@ -1091,15 +1091,39 @@ Node classes list of the aws provider.
## aws.ml
+
+**diagrams.aws.ml.AGENTCORE**
+
+
+**diagrams.aws.ml.AiAgent**
+
+
+**diagrams.aws.ml.AmazonCodewhisperer**
+
+
+**diagrams.aws.ml.AmazonNova**
+
**diagrams.aws.ml.ApacheMxnetOnAWS**
**diagrams.aws.ml.AugmentedAi**
+
+**diagrams.aws.ml.AWSAppStudio**
+
+
+**diagrams.aws.ml.AWSNeuron**
+
**diagrams.aws.ml.Bedrock**
+
+**diagrams.aws.ml.BrowserTool**
+
+
+**diagrams.aws.ml.CodeInterpreter**
+
**diagrams.aws.ml.Comprehend**
@@ -1121,12 +1145,21 @@ Node classes list of the aws provider.
**diagrams.aws.ml.ElasticInference**
+
+**diagrams.aws.ml.Evaluations**
+
**diagrams.aws.ml.Forecast**
**diagrams.aws.ml.FraudDetector**
+
+**diagrams.aws.ml.Gateway**
+
+
+**diagrams.aws.ml.Identity**
+
**diagrams.aws.ml.Kendra**
@@ -1136,9 +1169,18 @@ Node classes list of the aws provider.
**diagrams.aws.ml.MachineLearning**
+
+**diagrams.aws.ml.Memory**
+
+
+**diagrams.aws.ml.Observability**, **OBS** (alias)
+
**diagrams.aws.ml.Personalize**
+
+**diagrams.aws.ml.PolicyEngineAgenticGuardrails**, **PEAG** (alias)
+
**diagrams.aws.ml.Polly**
@@ -1154,6 +1196,9 @@ Node classes list of the aws provider.
**diagrams.aws.ml.Rekognition**
+
+**diagrams.aws.ml.Runtime**
+
**diagrams.aws.ml.SagemakerGroundTruth**
diff --git a/resources/aws/ml/agentcore.png b/resources/aws/ml/agentcore.png
index c00b77e8..debeadd2 100644
Binary files a/resources/aws/ml/agentcore.png and b/resources/aws/ml/agentcore.png differ
diff --git a/resources/aws/ml/ai-agent.png b/resources/aws/ml/ai-agent.png
index d33c27cd..f13894a9 100644
Binary files a/resources/aws/ml/ai-agent.png and b/resources/aws/ml/ai-agent.png differ
diff --git a/resources/aws/ml/amazon-nova.png b/resources/aws/ml/amazon-nova.png
index ab69fd59..bfbfc28d 100644
Binary files a/resources/aws/ml/amazon-nova.png and b/resources/aws/ml/amazon-nova.png differ
diff --git a/resources/aws/ml/browser-tool.png b/resources/aws/ml/browser-tool.png
index d2578710..bc41ba93 100644
Binary files a/resources/aws/ml/browser-tool.png and b/resources/aws/ml/browser-tool.png differ
diff --git a/resources/aws/ml/code-interpreter.png b/resources/aws/ml/code-interpreter.png
index c1bb9419..b51d0033 100644
Binary files a/resources/aws/ml/code-interpreter.png and b/resources/aws/ml/code-interpreter.png differ
diff --git a/resources/aws/ml/evaluations.png b/resources/aws/ml/evaluations.png
index 4d41cf12..15dcb02e 100644
Binary files a/resources/aws/ml/evaluations.png and b/resources/aws/ml/evaluations.png differ
diff --git a/resources/aws/ml/gateway.png b/resources/aws/ml/gateway.png
index 3ca9fead..099b2d14 100644
Binary files a/resources/aws/ml/gateway.png and b/resources/aws/ml/gateway.png differ
diff --git a/resources/aws/ml/identity.png b/resources/aws/ml/identity.png
index ae818e7f..d6eeccd7 100644
Binary files a/resources/aws/ml/identity.png and b/resources/aws/ml/identity.png differ
diff --git a/resources/aws/ml/memory.png b/resources/aws/ml/memory.png
index 794b26be..e864cfb1 100644
Binary files a/resources/aws/ml/memory.png and b/resources/aws/ml/memory.png differ
diff --git a/resources/aws/ml/observability.png b/resources/aws/ml/observability.png
index 1a8a8bbd..8588ea29 100644
Binary files a/resources/aws/ml/observability.png and b/resources/aws/ml/observability.png differ
diff --git a/resources/aws/ml/policy-engine-agentic-guardrails.png b/resources/aws/ml/policy-engine-agentic-guardrails.png
index 79d57443..4239e826 100644
Binary files a/resources/aws/ml/policy-engine-agentic-guardrails.png and b/resources/aws/ml/policy-engine-agentic-guardrails.png differ
diff --git a/resources/aws/ml/runtime.png b/resources/aws/ml/runtime.png
index af5d0c3b..e7daf27e 100644
Binary files a/resources/aws/ml/runtime.png and b/resources/aws/ml/runtime.png differ