Source code for stan.plugins

import abc
from typing import Generator

import pkg_resources

import stan.fit


def get_plugins() -> Generator[pkg_resources.EntryPoint, None, None]:
    """Iterate over available plugins."""
    return pkg_resources.iter_entry_points(group="stan.plugins")


[docs]class PluginBase(abc.ABC): """Base class for PyStan plugins. Plugin developers should create a class which subclasses `PluginBase`. This class must be referenced in their package's entry points section. """ # Implementation note: this plugin system is simple because there are only # a couple of places a plugin developer might want to change behavior. For # a more full-featured plugin system, see Stevedore # (<https://docs.openstack.org/stevedore>). This plugin system follows # (approximately) the pattern stevedore labels `ExtensionManager`.
[docs] def on_post_sample(self, fit: stan.fit.Fit) -> stan.fit.Fit: """Called with Fit instance when sampling has finished. The plugin can report information about the samples contained in the Fit object. It may also add to or modify the Fit instance. If the plugin only analyzes the contents of `fit`, it must return the `fit`. Argument: fit: Fit instance. Returns: The Fit instance. """ return fit