Plugin
The plugin module contains the interface definitions and utility functions used to load generator plugins used in the TIM context templating configuration.
Generator
¶
Interface definition of generator plugin.
Generator plugins can be added through the entry points system. A generator must have a name and a create method accepting a seed store. The create method must create some sort of random data generator object initialized with a seed/s from the given seed store. This object will then be available in TIM context templates Jinja2 logic.
name: str
property
readonly
¶
The name under which the random data generator object will be accessible.
create(self, seed_store)
¶
The main function used to create random data generator objects.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
seed_store |
SeedStore |
The seed store to be used for random seed generation. |
required |
Returns:
Type | Description |
---|---|
Any |
A random data generator object or function. |
Source code in generator/plugin.py
def create(self, seed_store: SeedStore) -> Any:
"""The main function used to create random data generator objects.
Args:
seed_store: The seed store to be used for random seed generation.
Returns:
A random data generator object or function.
"""
...
get_generators(plugin_config)
¶
Utility function for getting a list of all available generator plugins.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
plugin_config |
PluginConfig |
The plugin configuration policy |
required |
Returns:
Type | Description |
---|---|
List[cr_kyoushi.generator.plugin.Generator] |
List of the loaded generator plugins. |
Source code in generator/plugin.py
def get_generators(plugin_config: PluginConfig) -> List[Generator]:
"""Utility function for getting a list of all available generator plugins.
Args:
plugin_config: The plugin configuration policy
Returns:
List of the loaded generator plugins.
"""
return [
ep.load()() # type: ignore[attr-defined]
for ep in entry_points(group=GENERATOR_ENTRYPOINT) # type: ignore[call-arg]
if _check_plugin_allowed(ep, plugin_config) # type: ignore[arg-type]
]