diff --git a/src/App/MetadataPy.xml b/src/App/MetadataPy.xml
index be05c18aea..0d31aca4b9 100644
--- a/src/App/MetadataPy.xml
+++ b/src/App/MetadataPy.xml
@@ -53,6 +53,12 @@ bytes : bytes\n Python bytes-like object.
+
+
+ String representing the type of this item (text only, no markup allowed).
+
+
+
String representing the description of this item (text only, no markup allowed).
diff --git a/src/App/MetadataPyImp.cpp b/src/App/MetadataPyImp.cpp
index d3708ada85..9ad1fd79ad 100644
--- a/src/App/MetadataPyImp.cpp
+++ b/src/App/MetadataPyImp.cpp
@@ -192,6 +192,19 @@ void MetadataPy::setDescription(Py::Object args)
getMetadataPtr()->setDescription(description);
}
+Py::Object MetadataPy::getType() const
+{
+ return Py::String(getMetadataPtr()->type());
+}
+
+void MetadataPy::setType(Py::Object args)
+{
+ const char *type = nullptr;
+ if (!PyArg_Parse(args.ptr(), "s", &type))
+ throw Py::Exception();
+ getMetadataPtr()->setType(type);
+}
+
Py::Object MetadataPy::getMaintainer() const
{
auto maintainers = getMetadataPtr()->maintainer();
diff --git a/src/Mod/AddonManager/addonmanager_metadata.py b/src/Mod/AddonManager/addonmanager_metadata.py
index 6a72e6d47b..115f5f29fe 100644
--- a/src/Mod/AddonManager/addonmanager_metadata.py
+++ b/src/Mod/AddonManager/addonmanager_metadata.py
@@ -196,6 +196,7 @@ class Metadata:
version: Version = None
date: str = ""
description: str = ""
+ type: str = ""
maintainer: List[Contact] = field(default_factory=list)
license: List[License] = field(default_factory=list)
url: List[Url] = field(default_factory=list)
@@ -269,7 +270,7 @@ class MetadataReader:
metadata object."""
tag = child.tag[len(namespace) :]
- if tag in ["name", "date", "description", "icon", "classname", "subdirectory"]:
+ if tag in ["name", "date", "description", "type", "icon", "classname", "subdirectory"]:
# Text-only elements
metadata.__dict__[tag] = child.text
elif tag in ["version", "freecadmin", "freecadmax", "pythonmin"]: