proj_flow.base.registry
The proj_flow.base.registry allows building extension points, with ability to register the plugins with a decorator.
- class proj_flow.base.registry.Registry(name: str)
Provides simple registry with the decorator attached to it, which implements extension point for plugin system. An extension point is a value created from this generic, with extendable interface type as the generic argument.
Known decorators
proj_flow.api.release.project_suites- Argument:
- Used by:
src.proj_flow.log.release.add_release()
Project version reader and updater, package file name builder.
proj_flow.log.release.version_updaters- Argument:
VersionUpdaters- Used by:
src.proj_flow.log.release.add_release()
Additional version updaters, for instance, path to schema reference on GitHub.
proj_flow.log.rich_text.api.changelog_generators- Argument:
- Used by:
src.proj_flow.ext.github.cli.release()
Changelog note generator used in CHANGELOG file. Not to confuse with generator, which may be used internally by Hosting.add_release.
Example
class Animal(ABC) @abstractmethod def speak(self): ... animals = Registry[Animal]("Animal") def speak_all(): for animal in animals.get(): animal.speak() @animals.add class Dog(Animal): def speak(self): print("woof!")
- get()
- proj_flow.base.registry.verbose_info()