plugins

Discovers and loads third-party Optiland plugins via entry points.

A plugin package declares one or more of the optiland.surfaces, optiland.materials, or optiland.analyses entry-point groups in its own pyproject.toml and exposes a zero-argument callable that registers itself against the relevant Optiland registry – typically GeometryFactory.register for a new surface geometry, or MaterialRegistry.register/register_file for a glass catalog. This module does not define new registration APIs: it only makes the existing register() calls (added by the prior SOLID pass) discoverable from outside the package, without requiring a source edit to Optiland itself.

Loading is lazy and memoized per group – each group’s entry points are resolved and invoked at most once per process, triggered by the first factory access rather than at import time, so installing Optiland with no plugins present pays no cost.

Functions

load_plugins(group)

Load and invoke every entry point registered under group, once.

load_plugins(group: str) None[source]

Load and invoke every entry point registered under group, once.

Parameters:

group – One of SURFACES_GROUP, MATERIALS_GROUP, or ANALYSES_GROUP.