--- id: lml version: "0.2.0" license: New BSD license_treatment: permissive maintenance: aging --- # lml — Load me later. A lazy plugin management system. License: permissive · Maintenance: aging · Downloads: 2.6M/mo ## What it is and what it does lml is a plugin management framework that lets you define, discover, and load plugins from your Python environment without loading them all at startup. Instead of importing all plugins upfront—which can be slow and memory-intensive if they have heavy dependencies—lml defers loading until you actually request a plugin. You decorate plugin classes or functions with @PluginInfo, subclass PluginManager to define how plugins are retrieved, and call get_a_plugin() when needed. The system discovers plugins installed in your environment automatically, so users can add or remove plugins via pip without changing your application code. The package has no runtime dependencies and is designed for library authors who want to let their users pick and choose optional functionality. It replaces the Factory pattern with a discovery-based approach, making it easier to distribute related features across separate installable packages. lml handles the registration and lookup; you handle the plugin interface design. Use it for: - Modular data processing libraries where users install only the format handlers or transformers they need - Applications with optional integrations that should not load unless used - Large projects that want to split functionality into separate packages to reduce initial import time - Plugin ecosystems where end users can extend functionality by installing third-party packages without modifying core code ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. lml provides a lazy plugin management system that discovers and loads plugins on demand rather than at startup, designed to defer loading of plugins with heavy external dependencies. Yes, if you are building a library or application that needs a plugin architecture and want to defer loading of heavy dependencies. The package is stable, has no external dependencies, and is used in established projects. However, the aging maintenance status means you should verify it works with your target Python versions before committing to it as a core dependency. ## Install pip install lml uv add lml poetry add lml ## Installing lml Before you install: Low install friction with no runtime dependencies. Maintenance status is aging—last release was 516 days ago, though the repository remains active. License in practice: Licensed under New BSD (permissive), allowing commercial and private use with minimal restrictions. Quickstart: from lml.plugin import PluginInfo, PluginManager @PluginInfo("cuisine", tags=["Portable Battery"]) class Boost(object): def make(self, food=None, **keywords): print("I can cook %s for robots" % food) class CuisineManager(PluginManager): def __init__(self): PluginManager.__init__(self, "cuisine") manager = CuisineManager() chef = manager.get_a_plugin("Portable Battery") chef.make() Verify before relying: - Whether lazy loading actually reduces memory footprint in practice for typical plugin scenarios - Current Python version support—classifiers list Python 2.6 through 3.8, but 0.2.0 removed Python 2 support; exact supported range unclear ## Package facts - License: New BSD (permissive) - Python support: unspecified - Install friction: low - Maintenance: aging - Downloads: 2.6M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags lazy plugin loading, plugin management system, dynamic plugin discovery, on-demand plugin loading, plugin framework python, deferred dependency loading, plugin registry, plugin-system, lazy-loading [View on SkillFed](https://skillfed.io/packages/lml) · [View on PyPI](https://pypi.org/project/lml/)