-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
Features that have been discussed but not yet implemented. Contributions welcome.
Plugin dependencies currently use plain names (depends_on = ["export"]). This should support version constraints:
depends_on = [("export", ">=1.0.0")]Version strings with labels like 1.0.0-beta, 2.0.0-rc.1 should be correctly compared. This affects both depends_on and api_version compatibility checks.
Scope: New version comparison module, changed depends_on structure, updated dependency resolution.
When Plugin C depends on Plugin B, and B depends on A, C should be able to access A's extensions. The topological sort already handles load order, but there is no API to query extensions from a specific dependency.
Scope: Design how pm.get_extensions() interacts with dependency chains. Possibly plugin.get_dependency("export") accessor.
Standardized metadata on hook implementations (priority, description, version). Pluggy does not natively support custom attributes on @hookimpl, so this would need a wrapper or registry:
@hookimpl(priority=10, description="EPUB export")
def export_execute(self, book, fmt): ...Scope: Custom decorator wrapping pluggy's @hookimpl, metadata registry on PluginManager.
Static analysis of plugin code before loading. Check for dangerous imports (os.system, subprocess, eval). Essential for a plugin marketplace where untrusted plugins are installed.
Scope: AST analysis module, configurable allow/deny lists, integration into discovery pipeline.
| # | Feature | Version |
|---|---|---|
| 1 | Configurable route prefix | v0.3.0 |
| 2 | BasePlugin.get_frontend_manifest() | v0.3.0 |
| 3 | mount_routes prefix passthrough | v0.3.0 |
| 4 | deactivate unregisters from pluggy | v0.3.0 |
| 5 | list_available_plugins() | v0.3.0 |
| 6 | pre_activate callback | v0.3.0 |
| 7 | reload_config() | v0.3.0 |
| 8 | register_plugin(instance) | v0.3.0 |
| 9 | get_load_errors() | v0.3.0 |
| 10 | api_version compatibility check | v0.3.0 |
| 11 | Config schema validation | v0.3.0 |
| 12 | Plugin health checks | v0.3.0 |
| 13 | Extension points pattern | v0.4.0 |
| 14 | Hot-reload | v0.4.0 |
| 15 | Path traversal prevention | v0.4.0 |
| 16 | get_extensions() | v0.4.0 |
| 21 | Example app | Bibliogon |
| 22 | Lifecycle documentation | v0.5.0 |
| 23 | Robust deactivate with docs | v0.5.0 |
| 24 | Plugin introspection API | v0.5.0 |
| 25 | Graceful degradation | v0.5.0 |
| # | Feature | Reason |
|---|---|---|
| 17 | Async lifecycle | No current need, adds complexity. Reconsider when an app requires it. |