pluggable

compas.plugins.pluggable(pluggable_method=None, category=None, selector='first_match', domain='https://plugins.compas.dev/')[source]

Decorator to mark a method as a pluggable extension point.

A pluggable interface is uniquely identifiable/locatable via a URL derived from the parameters domain, category and name pluggable_method. In the example below, the URL of the pluggable definition is:

https://plugins.compas.dev/triangulation/triangulate_mesh
Parameters
  • pluggable_method (callable) – The method to decorate as pluggable.

  • category (str, optional) – An optional string to group or categorize extension points.

  • selector (str, optional) – String that determines the selection mode of extension points.

    • "first_match": (str) Execute the first matching implementation.

    • "collect_all": (str) Executes all matching implementations and return list of its return values.

  • domain (str, optional) – Domain name that “owns” the pluggable extension point. This is useful to avoid name collisions between extension points of different packages.

Examples

>>> @pluggable(category='triangulation')
... def triangulate_mesh(mesh):
...    pass