gufo-loader
Gufo Loader - the robust Python plugin infrastructure
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.7%) to scientific vocabulary
Keywords
Repository
Gufo Loader - the robust Python plugin infrastructure
Basic Info
Statistics
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
- Releases: 5
Topics
Metadata Files
README.md
Gufo Loader
Generic Python class loader for robust plugin infrastructure.
Documentation: https://docs.gufolabs.com/gufo_loader/
Source Code: https://github.com/gufolabs/gufo_loader/
Loader delivers plugins from one or many plugin packages.
Loader
Loader is the dict-like singleton providing the following services:
- plugin initialization and fetching.
- plugins enumeration.
Plugins are not dependent on the loader and do not need any registration process. The loaders are lazy by nature, meaning the plugin will be imported and initialized just in time when the user code requests the plugin.
Plugins
Plugins are named entities dedicated to the given task. Each plugin is defined in its python module. Depending on the loader settings plugins can be:
- Instances: Singleton instances having the class as the ancestor.
- Subclasses: Classes having the common ancestor.
- Protocols: Classes following the set of methods.
Plugin Packages
Plugin packages are plain Python packages: the directory containing
python files with plugins and the empty __init__.py file.
Plugin name must match the module name. For example, module
my_plugin.py will define the plugin my_plugin.
Examples:
Plugins as the subclasses:
loader = Loader[Type[BasePlugin]](base="myproject.plugins")
Plugins as the singletones:
loader = Loader[BasePlugin](base="myproject.plugins")
Plugins as the protocols:
loader = Loader[MyProtocol](base="myproject.plugins")
Virtues
- Clean dict-like API.
- Full abstraction from the plugin internals.
- Custom plugins.
- Built with security in mind.
- Full Python typing support.
- Editor completion.
- Well-tested, battle-proven code.
- 100% test coverage.
On Gufo Stack
This product is a part of Gufo Stack - the collaborative effort led by Gufo Labs. Our goal is to create a robust and flexible set of tools to create network management software and automate routine administration tasks.
To do this, we extract the key technologies that have proven themselves in the NOC and bring them as separate packages. Then we work on API, performance tuning, documentation, and testing. The NOC uses the final result as the external dependencies.
Gufo Stack makes the NOC better, and this is our primary task. But other products can benefit from Gufo Stack too. So we believe that our effort will make the other network management products better.
Owner
- Name: Gufo Labs
- Login: gufolabs
- Kind: organization
- Location: Italy
- Website: https://gufolabs.com/
- Repositories: 14
- Profile: https://github.com/gufolabs
Gufo Labs is a private consulting company based in Milan, Italy.
Citation (CITATION.cff)
cff-version: 1.2.0
title: Gufo Loader
message: >-
If you use this software as part of a publication and wish to cite
it, please use the metadata from this file.
type: software
authors:
- name: Gufo Labs
website: https://gufolabs.com/
- name: Project's Contributors
website: https://github.com/gufolabs/gufo_loader
license: BSD-3-Clause
GitHub Events
Total
- Release event: 1
- Watch event: 1
- Push event: 12
- Create event: 1
Last Year
- Release event: 1
- Watch event: 1
- Push event: 12
- Create event: 1
Committers
Last synced: almost 3 years ago
All Time
- Total Commits: 80
- Total Committers: 1
- Avg Commits per committer: 80.0
- Development Distribution Score (DDS): 0.0
Top Committers
| Name | Commits | |
|---|---|---|
| Dmitry Volodin | dv@n****g | 80 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 682 last-month
- Total dependent packages: 1
- Total dependent repositories: 1
- Total versions: 5
- Total maintainers: 1
pypi.org: gufo-loader
Generic Python class loader for robust plugin infrastructure
- Homepage: https://github.com/gufolabs/gufo_loader/
- Documentation: https://docs.gufolabs.com/gufo_loader/
- License: BSD 3-Clause License
-
Latest release: 1.0.4
published 6 months ago
Rankings
Maintainers (1)
Dependencies
- mkdocs-material ==8.2.1
- mkdocstrings ==0.18.0
- ipython ==8.0.1
- black ==22.3.0
- flake8 ==4.0.1
- mypy ==0.931
- coverage ==6.3.2 test
- pytest ==7.0.1 test
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- pypa/gh-action-pypi-publish master composite
- python 3.11-slim-bullseye build