Skip to content

moddle

This module provides parsers for Moddle’s JSON-based definition files.

CLASS DESCRIPTION
DataclassField

Dataclass field representation.

ModdleRegistry

Registry for Moddle packages.

FUNCTION DESCRIPTION
convert_moddle_properties

Converts a Moddle definition’s properties into corresponding dataclass fields.

convert_moddle_registry

Register all Moddle extension types.

convert_moddle_to_element

Create an Element dataclass model for a Moddle extension type.

filter_ignorable_superclasses

Filter out classes that are ignorable.

filter_package_types

Convert a Moddle package into BPMN elements.

get_parser_base_classes

Figure out the base classes for a Moddle extension type.

get_property_type_hint

Returns the appropriate type for a field based on its properties and the available types.

get_valid_name

Get a valid name for a dataclass.

load_moddle_file

Read a Moddle extension JSON file.

ATTRIBUTE DESCRIPTION
registry

The Moddle registry.

Attributes

registry module-attribute

registry = ModdleRegistry()

The Moddle registry.

Classes

DataclassField dataclass

DataclassField(name: str, type: Any, field: Field)

Dataclass field representation.

ModdleRegistry

ModdleRegistry()

Registry for Moddle packages.

METHOD DESCRIPTION
dependency_tree

Create a dependency tree for parsing ModdlePlugins in the correct order.

get_type

Get a Moddle type by name.

register_package

Register a Moddle package.

ATTRIBUTE DESCRIPTION
namespace_map

Mapping of namespace prefixes to their URIs.

TYPE: dict[str, str]

package_map

Mapping of package prefixes and package URIs to its extension parser class.

TYPE: dict[str, Optional[ModdlePackage]]

packages

List of all Moddle packages.

TYPE: list[ModdlePackage]

type_map

Mapping of type names to their extension parser class.

TYPE: dict[QName, ModdleType | EnumType]

Attributes

namespace_map instance-attribute
namespace_map: dict[str, str] = {}

Mapping of namespace prefixes to their URIs.

package_map instance-attribute
package_map: dict[str, Optional[ModdlePackage]] = {
    "http://www.omg.org/spec/BPMN/20100524/MODEL": bpmn_moddle,
    "http://www.omg.org/spec/BPMN/20100524/DI": bpmndi_moddle,
    "http://www.omg.org/spec/DD/20100524/DC": dc_moddle,
    "http://www.omg.org/spec/DD/20100524/DI": di_moddle,
}

Mapping of package prefixes and package URIs to its extension parser class.

packages instance-attribute
packages: list[ModdlePackage] = []

List of all Moddle packages.

type_map instance-attribute
type_map: dict[QName, ModdleType | EnumType] = {}

Mapping of type names to their extension parser class.

Functions

dependency_tree
dependency_tree() -> tuple[QName, ...]

Create a dependency tree for parsing ModdlePlugins in the correct order.

get_type
get_type(type_q_name: QName) -> Any

Get a Moddle type by name.

register_package
register_package(package: ModdlePackage) -> None

Register a Moddle package.

Functions

convert_moddle_properties

convert_moddle_properties(definition: ModdleType) -> list[DataclassField]

Converts a Moddle definition’s properties into corresponding dataclass fields.

This function processes the properties of a given ModdleType definition. It validates type information, detects circular references, and resolves field types based on the provided element registry. Depending on the property type (attributes, elements, or text body), it constructs the appropriate dataclass field representation. If an unknown field type or mismatched references are encountered, an error is raised. The resulting fields are useful for creating dataclass representations from Moddle definitions.

PARAMETER DESCRIPTION
definition

The Moddle definition containing properties to be processed.

TYPE: ModdleType

RETURNS DESCRIPTION
list[DataclassField]

A list of dataclass field representations corresponding to the Moddle definition’s properties.

RAISES DESCRIPTION
ValueError

If a field has an unknown or unresolved type or any unsupported format.

convert_moddle_registry

convert_moddle_registry() -> None

Register all Moddle extension types.

convert_moddle_to_element

convert_moddle_to_element(definition: ModdleType) -> type

Create an Element dataclass model for a Moddle extension type.

PARAMETER DESCRIPTION
definition

ModdlePlugin definition

TYPE: ModdleType

RETURNS DESCRIPTION
type

A dynamically created dataclass model

filter_ignorable_superclasses

filter_ignorable_superclasses(super_classes: list[QName]) -> list[QName]

Filter out classes that are ignorable.

filter_package_types

filter_package_types(package: ModdlePackage) -> list[ModdleType]

Convert a Moddle package into BPMN elements.

get_parser_base_classes

get_parser_base_classes(moddle_type: ModdleType) -> tuple[type, ...] | None

Figure out the base classes for a Moddle extension type.

get_property_type_hint

get_property_type_hint(fld: TypeProperty) -> type

Returns the appropriate type for a field based on its properties and the available types.

PARAMETER DESCRIPTION
fld

PluginProperty object representing the field.

TYPE: TypeProperty

RETURNS DESCRIPTION
type

The appropriate type hint for the field

get_valid_name

get_valid_name(name: str) -> str

Get a valid name for a dataclass.

load_moddle_file

load_moddle_file(file_path: Path) -> ModdlePackage

Read a Moddle extension JSON file.